error using the example script of PCA

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

回答(1 个)

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 个评论

>> 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
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));

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Dimensionality Reduction and Feature Extraction 的更多信息

提问:

2013-2-11

Community Treasure Hunt

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

Start Hunting!

Translated by