Re: [問題] 有關矩陣兩列或兩行互換的程式怎麼寫?已回收
※ 引述《liu23829 (做人別太跩)》之銘言:
: ※ 引述《sylvy (好睏,好想睡......)》之銘言:
: : [b,ix]=sort(A(J,:),'descend');
: : xi為為A的第J列由大到小排列
: : 這兩行不是很懂意思,如果只是純選擇列數作排序的話使用for是否可以?
: : for i = 2:5
: : [b(i,:),A(i,:)]=sort(A(i,:),'descend')
: : end
: : 尋找非零值可使用 A(i,:)~=0
: : 我想你可以把你一開始A的陣列逐步說明你要怎麼變動,這樣也許比較好了解
: 上述A矩陣的第一行為[1/2,0,0,0,1], 鎖定第一行非0元素往上移,要做列的移動,
: 故移動方式為(R5→R2)第5列與第2列互換,這邊定義Ib1=2
: 再針對第一行的移動後非0元素[1/2,1]所在的列,做行的移動,使非0元素往左移
: 0元素往右移,移動前此兩列為[1/2,0,0,0,0,0;1,0,0,2,0,0]移動方式為判別
: 此兩列中,皆有0元素的行往右移,故應該移動C2→C4
: 移動後兩列為[1/2,0,0,0,0,0;1,2,0,0,0,0]
: 再定義移動後,此兩列有一非0元素以上的行有2行(Jb1=2)針對此2行(亦即1、2行)
: 做列的移動,將非0元素往上移,0元素往下移,發現不用做移動
: 移動後,此時再定義Ib2=2(此時1、2行裡有一非0元素以上的列還是1、2列)
: 故得到Ib2=Jb1,皆為2,而形成2x2的區塊,設定T1,整個移動方式其實是
: 將非0元素往左上方移動,移動的步驟為鎖定行,做列的移動,找到非0元素後
: 針對非0元素所在的列,再做行的移動,之後再鎖定非0元素所在的行,做列的移動
: 以此類堆,如果形成某區塊右方和下方皆為0元素即停止,遮閉該區塊所在的行、列
: 考慮剩下的區塊部分來做移動,當然移動後無法形成某區塊右方和下方
: 皆為0元素,一樣停止,這是補充說明,有點複雜。
初始
A =
0.5000 0 0 0 0 0
0 2.0000 0 0 3.0000 2.0000
0 0 2.0000 0 1.0000 0
0 0.3333 0 0 0 0
1.0000 0 0 2.0000 0 0
二五列交換
A =
0.5000 0 0 0 0 0
1.0000 0 0 2.0000 0 0
0 0 2.0000 0 1.0000 0
0 0.3333 0 0 0 0
0 2.0000 0 0 3.0000 2.0000
二四行交換
A =
0.5000 0 0 0 0 0
1.0000 2.0000 0 0 0 0
0 0 2.0000 0 1.0000 0
0 0 0 0.3333 0 0
0 0 0 2.0000 3.0000 2.0000
然後我還是不知道原PO想要做什麼....
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.109.134.47
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 8 篇):