kombiniert werden Ich weiß nicht, was dieser Fehler bedeutet oder wie es zu beheben ist. Ich versuche eine Bilddrehung in einem separaten Koordinatenraum durchzuführen. Wenn ich den Referenzraum der Matrix auf Null setze, bekomme ich den Fehler, dass ganze Zahlen nur mit ganzen Zahlen der gleichen Klasse oder skalaren Doppelzahlen kombiniert werden können. Die Linie istGanzzahlen können nur mit Ganzzahlen der gleichen Klasse oder skalare Doppelfehler
WZcentered = WZ - [x0;yo]*ones(1,Ncols);
WZ ist als eine 400x299x3 Einheit 8, im Arbeitsbereich eingestuft. Es ist ein Bild. x0 und y0 werden beim Aufruf der Funktion auf 0 gesetzt. Wie kann ich dieses Problem beheben/was genau passiert hier?
Auch wenn ich das gleiche mache noch machen WZ gleich doppelt (WZ) bekomme ich den Fehler, dass 'Matrix-Dimensionen übereinstimmen müssen.' Ich bin mir nicht sicher, was die Doppelfunktion aber tut. Hier ist der ganze Code.
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;