error using the example script of PCA

1 次查看(过去 30 天)
ajith
ajith 2013-2-11
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 个)

José-Luis
José-Luis 2013-2-11
编辑:José-Luis 2013-2-11
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 个评论
ajith
ajith 2013-2-11
>> 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 2013-2-11
编辑:José-Luis 2013-2-11
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));

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Dimensionality Reduction and Feature Extraction 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by