[問題] 依照設定位置重新產生矩陣已回收

看板MATLAB作者 (楓霧)時間16年前 (2009/10/06 18:03), 編輯推噓0(0012)
留言12則, 4人參與, 最新討論串1/1
請問 M1=[1 2 3 4]; loc=[1 4]; 對應位置loc產生新的4x4矩陣 1 4 1[1 2 4[3 4] 把1搬到(1,1) 把2搬到(1,4) 把3搬到(4,1) 把4搬到(4,4) 產生以下矩陣 M2=[1 0 0 2 0 0 0 0 0 0 0 0 3 0 0 4]; 請問有什麼方法可以解決 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.207.32

10/06 18:43, , 1F
M2=zeros(4) M2(1)=M1(1); M2(4)=M1(2);
10/06 18:43, 1F

10/06 18:44, , 2F
M2(13)=M1(3); M2(16)=M1(4);
10/06 18:44, 2F

10/06 19:59, , 3F
請問有沒有比較通用的方式 我只是把矩陣簡化而已
10/06 19:59, 3F

10/06 20:00, , 4F
例如 a=[1 2 3;4 5 6;7 8 9];loc=[1 4 6];
10/06 20:00, 4F

10/06 20:31, , 5F
用迴圈
10/06 20:31, 5F

10/06 20:43, , 6F
若已知 M1(方陣), loc(向量);
10/06 20:43, 6F

10/06 20:43, , 7F
M2 = zeros(max(loc));
10/06 20:43, 7F

10/06 20:44, , 8F
for i=loc,for j=loc;M2(i,j)=a(loc==i,loc==j);end,end;
10/06 20:44, 8F

10/06 20:46, , 9F
=M1(...) 上面打錯
10/06 20:46, 9F

10/06 20:59, , 10F
我用土法煉鋼法,可能會有其它更簡單的指令或方法
10/06 20:59, 10F

10/06 20:59, , 11F
這方法很實用 感謝!
10/06 20:59, 11F

10/06 21:19, , 12F
M=zeros(max(Loc));M(Loc,Loc)=A1;
10/06 21:19, 12F
文章代碼(AID): #1AonOBga (MATLAB)
文章代碼(AID): #1AonOBga (MATLAB)