Matlab矩阵旋转,尺寸

时间:2016-05-02 02:55:28

标签: matlab matrix graph rotation linear-algebra

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)我得到一个内部矩阵维必须同意错误。如何将矩阵A [x,y]乘以矩阵G?

1 个答案:

答案 0 :(得分: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;