Re: [問題] 有關矩陣兩列或兩行互換的程式怎麼寫?已回收

看板MATLAB作者 (幹嘛要暱稱)時間15年前 (2010/06/18 16:51), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/8 (看更多)
※ 引述《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
文章代碼(AID): #1C6pELTG (MATLAB)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 8 篇):
文章代碼(AID): #1C6pELTG (MATLAB)