error using the example script of PCA

7 vues (au cours des 30 derniers jours)
ajith
ajith le 11 Fév 2013
data=imread('result.png');
>> [M,N]=size(data);
>> mn=mean(data,2);
>> data=data-repmat(mn,1,N);
??? Error using ==> minus
Integers can only be combined with integers of the same class, or
scalar doubles.
how to resolve it

Réponses (1)

José-Luis
José-Luis le 11 Fév 2013
Modifié(e) : José-Luis le 11 Fév 2013
data = imread('result.png');
data = bsxfun(@minus,data,mean(data,2));
Note that this will not solve your problem, as the mean of integers will probably yield doubles. You probably want to do something like:
data = bsxfun(@minus,data,int8(mean(data,2)));
You can find the data type using:
whos data
and you could then modify the application accordingly (change the int8 to the appropiate type). Please accept an answer if it helps you.
  2 commentaires
ajith
ajith le 11 Fév 2013
>> data = bsxfun(@minus,data,int8(mean(data,2)));
>> data = data-repmat(mn,1,N);
??? Error using ==> minus Integers can only be combined with integers of the same class, or scalar doubles.
how to resolve it sir
José-Luis
José-Luis le 11 Fév 2013
Modifié(e) : José-Luis le 11 Fév 2013
It means that mean(data) is not the same type as data. Have you tried what i suggested? What does
whos data
return before you run the script?
Alternatively you could convert everything to double. This should work:
data = double(imread('result.png'));
data = bsxfun(@minus,data,mean(data,2));

Connectez-vous pour commenter.

Catégories

En savoir plus sur Dimensionality Reduction and Feature Extraction dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by