我想旋转给定的矩阵并同时追加/连接,如下所示。
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的内置函数来做到这一点?如果是,请在不使用任何工具箱等的情况下展示一个...谢谢。
我想旋转给定的矩阵并同时追加/连接,如下所示。
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的内置函数来做到这一点?如果是,请在不使用任何工具箱等的情况下展示一个...谢谢。
为了实现矩阵的对称复制,向下和向右,这与问题中的示例相匹配:
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 度。
如果 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 来检查。