2016-05-02 321 views
0
function f = flower(f) 
t = (0:2*pi/100:2*pi); 
x =((1+cos(5*t)).*(cos(t))); 
y = (((x)).*(sin(t))); 
A = [x,y]; 
G = [cos(45),-sin(45); sin(45),cos(45)]; 
if (f == 1) 
plot(x,y,'-g') 
elseif (f == 2) 
b = zeros(1,101); 
z = zeros(1,101); 
for i = 1:101 
    b(1,i) = 2; 
    z(1,i) = -3; 
end 
x = x+b; 
y = y+z; 
plot(x,y,'-g') 
elseif (f == 3) 
    A = A'*G; 
    plot(A(1,:),A(2,:),'-') 
else 
disp('input a number from 1-4') 
end 

(使用Matlab)我无法乘以一个矩阵来顺时针旋转它的图像45度。代码块从elseif开始(f == 3)我得到一个内部矩阵维度必须同意错误。如何用矩阵G乘以矩阵A [x,y]?Matlab矩阵旋转,尺寸

回答

1

如果你真的看的A大小,你会认识到,而不是它是2 x 101喜欢它似乎是你期待,下面的语句

A = [x, y]; 

其实可以更1 x 202这显然可以将不会乘以2 x 2旋转矩阵(G)。

这是因为xy都是行向量,并沿着第二维连接它们(使用[ , ])使它们成为更长的行向量。相反,您可以使用;作为[]内的分隔符将它们连接到第一维。

A = [x; y]; 
A.' * G; 

或者你可以将它们连接起来的第二个维度,但确保它们是第一个(使用(:))列向量。

A = [x(:), y(:)]; 
A * G; 
+0

当然,我看到我犯的错误。谢谢。 –