作者liu23829 (做人別太跩)
看板C_and_CPP
標題[問題] 有關矩陣兩列或兩行互換的程式怎麼寫?
時間Sun Jun 20 12:49:38 2010
※ [本文轉錄自 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
→ DigiPrince:細節不清楚頂多不回答就好了,為什麼會是與你討論 = = 06/17 10:38
→ maplefog:codejob 06/17 14:35
推 joy830:1F XD 06/17 17:45
推 KevinT:我認真想要看懂 ... 但是真的不清楚 另推一樓XD 06/18 10:12
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.167.147.155