[問題] 求救~迴圈問題不得其解>"<已回收

看板MATLAB作者 (不務正業的人)時間16年前 (2009/06/02 15:16), 編輯推噓5(503)
留言8則, 3人參與, 最新討論串1/1
我想了很久還是想不出來 只好來版上求救 請各位幫忙 假設我有一個 A : 2*n matrix 第一行是index 第二行是所對應的值 我現在想將 A 照著第二行的值由大到小排列 但其index也要跟著排列 ex A = 2 8 6 9 5 1 3 4 87 54 36 12 69 52 21 24 要變成 A' = 2 5 8 1 6 4 3 9 87 69 54 52 36 24 21 12 我已查過sort/sortrows好像都不能用 於是想要用迴圈來做 我的寫法如下: for i = 1:length(A) while (length(A)>0) if A(2,i) == max(A(2,:)) g3 = [g3 A(1,i)] A = [setdiff(A(1,:), A(1,i)); [(A(2,1:(i-1))) (A(2,(i+1):length(A) ))]] end if (length(A)==0) break end end end 以上這是不能跑的= = 我的想法是 把A第二行最大值及其index挑出來 然後剩下的就是新的A 一直重複此步驟 直到A的長度為0 但A重新整理後 長度變少了 以致於迴圈第一行會有問題 所以我後來又亂加while 還是搞不定>< 希望有人聽得懂我的問題&答覆 先謝謝了^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.114.208 ※ 編輯: Sovanna 來自: 140.113.114.208 (06/02 15:18)

06/02 15:21, , 1F
b=sort(a(2,:),'descend');
06/02 15:21, 1F

06/02 15:21, , 2F
更正 [b,c]=sort(a(2,:),'descend');
06/02 15:21, 2F

06/02 15:21, , 3F
d=a(1,c);
06/02 15:21, 3F

06/02 15:21, , 4F
a=[b;d]
06/02 15:21, 4F

06/02 18:33, , 5F
最後一行又打錯了, a=[d;b]
06/02 18:33, 5F

06/02 18:56, , 6F
result = fliplr(sortrows(a',2)'); 這樣可以嗎?
06/02 18:56, 6F

06/02 19:00, , 7F
有人可以解釋一下上兩個大大寫的意思嗎?
06/02 19:00, 7F

06/02 21:09, , 8F
弄懂了^^
06/02 21:09, 8F
文章代碼(AID): #1A9D7BfW (MATLAB)
文章代碼(AID): #1A9D7BfW (MATLAB)