作者microphonem (无限回圈)
看板MATLAB
标题[问题] 矩阵制作
时间Fri Dec 2 16:20:47 2011
请问板上的各位
如果我要制作的矩阵B,是矩阵A沿对角线切开後的左下部分
移到矩阵A其余部分的右边
比方说
A = [ A00 A01 A02 ... A0k
A10 A11 A12 ... A1k
.
.
.
Am0 Am1 Am2 ... Amk ]
B = [ A00 A01 A02 A03 ... A0k
A11 A12 A13 ... A1k A10
A22 A23 ... A2k A20 A21
. .
. .
. .
Amk Am0 Am1 ... Amk-1 ]
有什麽好方法吗? 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.55.253
1F:推 sunev:B=[zeros(size(A)) zeros(size(A))]; 12/02 16:56
2F:→ sunev:n=length(A); 12/02 16:56
3F:→ sunev:B(:,1:n)=triu(A);B(:,n+1:end)=tril(A); 12/02 16:57
4F:推 okgogogo:维度要一样还是增加? 增加的话就是B =[triu(A),tril(A)] 12/03 23:37
5F:→ okgogogo:一样就 for i=1:length(A) 12/03 23:37
6F:→ okgogogo: A(i,:)= circshift(A(i,:),[0,1-i]); 12/03 23:37
7F:→ okgogogo:end 12/03 23:38
8F:→ okgogogo:应该第二种才正确... 12/03 23:40
9F:→ okgogogo:第一个对角线好像多加一次...如果是第一种记得修改... 12/03 23:44
10F:→ okgogogo:B=[triu(A),tril(A)-diag(diag(A))] 12/03 23:59
11F:→ mp19990920:B=[triu(A), tril(A, -1)] 就可以了 12/04 15:44