整数只能与相同类的整数或标量双精度错误组合

时间:2016-04-11 02:37:25

标签: matlab

我不知道这个错误意味着什么或如何解决它。我试图在一个单独的坐标空间中执行图像旋转。当矩阵的引用空间定义为零时,我得到的错误是整数只能与同一类或标量双精度的整数组合。这条线是

WZcentered = WZ - [x0;yo]*ones(1,Ncols);

WZ在工作区中被归类为400x299x3单元8。这是一张图片。调用该函数时,x0和y0设置为0。我该如何解决这个问题/究竟发生了什么?

另外,当我做同样的事情但让WZ等于double(WZ)时,我得到的错误是矩阵尺寸必须一致。'我不确定双功能是做什么的。这是整个代码。

function [out_flag, WZout, x_final, y_final] = adopted_moveWZ(WZ, x0, y0);

%Initial Test of plot
[Nrows,Ncols]=size(WZ);
if Nrows ~= 2
   if Ncols ==2
        WZ=transpose(WZ); %take transpose
        [Nrows,Ncols]=size(WZ); %reset the number of rows and columns
   else
        fprintf('ERROR: Input file should have 2-vectors for the input points.\n');
   end
end

plot(WZ(1,:),WZ(2,:),'.')
title('These are the original points in the image');
pause(2.0)
%WZorig = WZ;

%centering 
WZcentered = WZ - ([x0;y0] * ones(1,Ncols));


FigScale=400;
axis([-FigScale 2*FigScale -FigScale 2*FigScale])
disp('Hit any key to start the animation');
pause;

SceneCenter = zeros(Nrows,Ncols);
WZnew = WZcentered;

for ii=0:20

    %rotate
    R = [cos(pi/ii) -sin(pi/ii) 0; sin(pi/ii) cos(pi/ii) 0; 0 0 1];
    WZnew = R * WZnew; 
    plot(WZnew(1,:),WZnew(2,:),'.')
    %place WZnew at a different place in the scene
    SceneCenter = (ii*[30;40])*ones(1,Ncols);
    plot(SceneCenter(1,:) + WZnew(1,:), SceneCenter(2,:) + WZnew(2,:),'.')
    axis([-FigScale 2*FigScale -FigScale 2*FigScale])
    pause(1.0);


end


%Set final values for output at end of program
x_final = SceneCenter(1,1);
y_final = SceneCenter(2,1);
PPout = PPnew + SceneCenter;

0 个答案:

没有答案