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?
答案 0 :(得分:1)
如果您实际查看A
的大小,您会发现,而不是像您期望的2 x 101
那样,以下语句
A = [x, y];
实际上使1 x 202
明显无法乘以2 x 2
旋转矩阵(G
)。
这是因为x
和y
都是行向量,并且沿着第二维连接它们(使用[ , ]
)会使它们成为更长的行向量。相反,您可以使用;
作为[]
中的分隔符,在第一维中将它们连接起来。
A = [x; y];
A.' * G;
或者您可以在第二维中连接它们,但要确保它们首先是列向量(使用(:)
)。
A = [x(:), y(:)];
A * G;