作者peter0318 (阿玮)
看板MATLAB
标题Re: [讨论] 如何将区块矩阵重排
时间Tue Feb 5 20:28:27 2013
※ 引述《janghang (人生如戏)》之铭言:
假设我有一些已知的矩阵A、B、C...etc,这些矩阵都是方阵而且维度相同
那我要怎麽排成如下的大矩阵:
[A B C D . . . ]
[B A B C . . . ]
[C B A B C . . ]
[D C B A B C . ]
[. . . . . . . ]
[. . . . . . . ]
(这个大矩阵的对角线元素A)
如果只有A、B、C,是可以用矩阵合并的技巧,拚成[ABC]
[BAB]
[CBA]
但因为有很多个,所以怎麽有系统化的排列呢?
我想用for回圈,但是一直遇到dimension mismatch的问题
clear all;clc;
A=ones(3,3);
B=2*A;
C=3*A;
D=4*A;
E=5*A;
F=6*A;
G=7*A;
[n m]=size(A);
temp = [A B C D E F G];
Output = A;
for times=1:((7-1)/2) % 7 是指 A-G 7个 matix
X0 = temp( :, 1:(2*times+1)*n );
X1 = X0(:,(n+1):end-n);
Output = [ X0' [ X1; Output; X1(:,end:-1:1) ] X0(:,end:-1:1)' ]
end
试试看吧
--
1F:推 listener323:实岁是从妈妈的身体里出来开始算的02/08 13:59
2F:→ listener323:虚岁是从爸爸的身体里出来开始算的02/08 13:59
※ 编辑: peter0318 来自: 140.113.128.199 (02/05 21:07)
3F:推 janghang:还蛮高招的,原po是有先用数学归纳法找规则吗? 02/05 21:50
4F:→ janghang:感觉没带几个数字体会一下会不懂.. 02/05 21:50
5F:→ peter0318:画个几层出来,再对照那个output(由内向外)大概就明了了 02/05 22:39