[問題] 矩陣製作

看板MATLAB作者 (無限迴圈)時間14年前 (2011/12/02 16:20), 編輯推噓2(209)
留言11則, 3人參與, 最新討論串1/1
請問板上的各位 如果我要製作的矩陣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

12/02 16:56, , 1F
B=[zeros(size(A)) zeros(size(A))];
12/02 16:56, 1F

12/02 16:56, , 2F
n=length(A);
12/02 16:56, 2F

12/02 16:57, , 3F
B(:,1:n)=triu(A);B(:,n+1:end)=tril(A);
12/02 16:57, 3F

12/03 23:37, , 4F
維度要一樣還是增加? 增加的話就是B =[triu(A),tril(A)]
12/03 23:37, 4F

12/03 23:37, , 5F
一樣就 for i=1:length(A)
12/03 23:37, 5F

12/03 23:37, , 6F
A(i,:)= circshift(A(i,:),[0,1-i]);
12/03 23:37, 6F

12/03 23:38, , 7F
end
12/03 23:38, 7F

12/03 23:40, , 8F
應該第二種才正確...
12/03 23:40, 8F

12/03 23:44, , 9F
第一個對角線好像多加一次...如果是第一種記得修改...
12/03 23:44, 9F

12/03 23:59, , 10F
B=[triu(A),tril(A)-diag(diag(A))]
12/03 23:59, 10F

12/04 15:44, , 11F
B=[triu(A), tril(A, -1)] 就可以了
12/04 15:44, 11F
文章代碼(AID): #1Es8fa-N (MATLAB)
文章代碼(AID): #1Es8fa-N (MATLAB)