1

我想旋转给定的矩阵并同时追加/连接,如下所示。

if in: [1]
then out: [1]

if in: [1,2; 3,4]
then out: [1,2,1; 3,4,3; 1,2,1]

if in: [1,2,3; 4,5,6]
then out: [1,2,3,2,1; 4,5,6,5,4; 1,2,3,2,1]

and so on...

有没有办法使用matlab的内置函数来做到这一点?如果是,请在不使用任何工具箱等的情况下展示一个...谢谢。

4

2 回答 2

0

为了实现矩阵的对称复制,向下和向右,这与问题中的示例相匹配:

a = [1,2,3; 4,5,6];
aRep = a([1:end end-1:-1:1],[1:end end-1:-1:1])
aRep =
     1     2     3     2     1
     4     5     6     5     4
     1     2     3     2     1

然后要旋转,可以使用rot90(aRep,-1)顺时针旋转 90 度。

于 2013-11-02T03:27:46.010 回答
0

如果 A 是您的矩阵:

n = size(A,1);
X = A(:,1:n-1);
Y = fliplr(X)
A = [A Y];

X = A(1:n-1,:);
Y = fliplr(X')';
A = [A; Y];

你的最终结果应该在 A 中。

你可能会发现一些语法错误,我没有 matlab 来检查。

于 2013-11-02T03:49:40.357 回答