作者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