【发布时间】:2014-05-08 10:00:01
【问题描述】:
您好,我想创建一个函数,将所有元素逆时针旋转方阵的一个位置。
[ 1 2 3 4;
5 6 7 8;
9 10 11 12;
13 14 15 16]
应该变成:
[ 2 3 4 8;
1 7 11 12;
5 6 10 16;
9 13 14 15]
这是我的尝试:
size_mat = size(A,1)
B=zeros(size_mat);
loops = fix(size_mat/2)
if mod(size_mat,2) ~= 0
B(loops+1,loops+1)= A(loops+1,loops+1)
end
for i=1:loops,
B(i+1,i)=A(i,i);
for j=i:(size_mat-i)
B(i,j)=A(i,j+1);
B(j,size_mat+1-i)=A(j+1,size_mat+1-i);
B(size_mat+1-i,size_mat+1-j)=A(size_mat+1-i,size_mat-j);
if((j+2)<=size_mat)
B(size_mat+1-j,i)=A(size_mat-j,i);
end
end
end
我可以做得更好吗?
【问题讨论】:
-
你有什么问题吗?请先发布您的尝试,stackoverflow 不是要求人们为您编写代码的地方。
-
嗨,丹,对不起。我曾尝试使用 5 个 for 循环的构造,但我无法在这里展示。
-
@Clans87 不要为此感到难过或尴尬,无论你得到什么都表明你的努力,这在向
SO提问的情况下更为重要。 -
@Clans87 您不需要删除之前发布的答案。我认为您可以将其作为“我的尝试”部分附加到您的问题中。
标签: matlab matrix rotation shift