[問題] 有關矩陣兩列或兩行互換的程式怎麼寫?
※ [本文轉錄自 MATLAB 看板 #1C6ObZ_j ]
作者: liu23829 (做人別太跩) 看板: MATLAB
標題: [問題] 有關矩陣兩列或兩行互換的程式怎麼寫?
時間: Thu Jun 17 10:32:59 2010
我先舉例說明移動的方式,我不懂程式,因為論文需要,想請高手幫個忙
基本上我想要的是不限size的矩陣
例子如下:給一個5x6的矩陣
A=[1/2,0,0,0,0,0;0,2,0,0,3,2;0,0,2,0,1,0;0,1/3,0,0,0,0;1,0,0,2,0,0]
定義J=1,鎖定該矩陣的第一行,做“兩列”的互換,使非0元素能移到0元素的上面
定義Ib1=k(第一行裡非0元素個數),上述例子移動後(R2→R5),k=2,若k=5則停止
鎖定Ib1=2(非0元素所在的列,亦即1、2列),做“兩行”的互換
使非0元素能往左移,0元素往右移,上述例子移動後(C2→C4)
定義Jb1=m(移動後 非0元素所在的行個數),m=2,若m=6則停止
鎖定Jb1=2(非0元素所在的行,亦即1、2行),做“兩列”的互換
使非0元素能往上移,0元素往下移,上述例子發現不需做移動
再定義Ib2=k'(此時1、2行有一非0元素以上的列有2列),上述例子因Jb1=Ib2
形成T1的2x2區塊[1/2,0;1,2],此時該區塊的右方和下方皆為0元素,
遮閉T1所在行與列,再考慮右下方的區塊,設定T2
上述例子T2=[2,0,1,0;0,1/3,0,0;0,2,3,2],做相同的移動,需再C2→C3,R2→R3
移動的結果為[2,1,0,0;0,3,2,2;0,0,1/3,0],
發現無法形成某區塊右方和下方皆為0元素即停止
這個移動的程式,需以迴圈的模式來寫,用C或MATLAB都可,如果細節不清楚可再與我討論
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.240.3.24
→
06/17 10:38,
06/17 10:38
→
06/17 14:35,
06/17 14:35
推
06/17 17:45,
06/17 17:45
推
06/18 10:12,
06/18 10:12
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.167.147.155
討論串 (同標題文章)
完整討論串 (本文為第 1 之 6 篇):