Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在octave/matlab中使用仿射矩阵的旋转/仿射矩阵函数_Matlab_Octave_Affinetransform_Rotational Matrices - Fatal编程技术网

在octave/matlab中使用仿射矩阵的旋转/仿射矩阵函数

在octave/matlab中使用仿射矩阵的旋转/仿射矩阵函数,matlab,octave,affinetransform,rotational-matrices,Matlab,Octave,Affinetransform,Rotational Matrices,我可以创建一个以蓝色显示的绘图,这是正确的,但当我尝试将其围绕点(0,0)旋转90度时,将创建红色的绘图。它应该围绕点(0,0)旋转90度。有人知道我的函数/代码的哪一部分导致了问题吗 请参见下面的函数和示例代码: %affine matrix rotation about a point rtaffine[theta,rpx,rpy,sigx,sigy,sigz] %crx cry rpx rpy represent center of rotation function [rotsi

我可以创建一个以蓝色显示的绘图,这是正确的,但当我尝试将其围绕点(0,0)旋转90度时,将创建红色的绘图。它应该围绕点(0,0)旋转90度。有人知道我的函数/代码的哪一部分导致了问题吗

请参见下面的函数和示例代码:

    %affine matrix rotation about a point rtaffine[theta,rpx,rpy,sigx,sigy,sigz]
%crx cry rpx rpy represent center of rotation
function [rotsig,theta,crpx,crpy,sigx,sigy,sigz] = rtaffine(theta,rpx,rpy,sigx,sigy,sigz) 
    rotsig=[];
    %affinematrix=[];
    siga=[sigx;sigy;sigz];

    r00 = cosd(theta); r01 = -sind(theta); r10 = sind(theta); r11 = cosd(theta);
    affinematrix = [r00, r01, rpx(1,1) - r00*rpx(1,1) - r01*rpy(1,1);...
    r10, r11, rpy(1,1) - r10*rpx(1,1) - r11*rpy(1,1);...
    0, 0, 1];   
    rotsig=affinematrix*siga; %new affine matrix
end


%radial arms
t = linspace(0,2*pi,500);
r=e^0.3063489*t;
x = r.*cos(t);
y = r.*sin(t);
plot(x,y)

hold on

%rotation
theta=90;
z = ones(size(y));
siga=[t;y;z];


rotsig=rtaffine(theta,0,0,siga(1,:),siga(2,:),siga(3,:));

plot(t(1,:),rotsig(1,:),'r-')


在这两种情况下,您正在传入
t
并试图根据
t
而不是
x
进行绘图:

siga=[t;y;z];
应该是

siga=[x;y;z];

应该是

plot(rotsig(1,:),rotsig(2,:),'r-')

我猜
siga=[t;y;z]应该是
siga=[x;y;z]?另外,您在任何地方都不使用
rp
,那么为什么要包含该行?请对您的代码进行注释或解释btw@Dan只是试着改变siga,什么都没有改变。我还取出了rp用于测试,只是忘了删除它。另外
plot(rotsig(1,:),rotsig(2,:),'r-')
假设
rotsig
是2-by-n@Dan这两件事就是问题所在,谢谢:-)
plot(rotsig(1,:),rotsig(2,:),'r-')