(請益)想請教高手一個問題已回收

看板MATLAB作者 (summer)時間14年前 (2011/03/29 16:28), 編輯推噓0(004)
留言4則, 3人參與, 最新討論串1/1
這是一個關於矩陣的問題 假設現在有一個矩陣M M為一個2*2的矩陣 M = 1 1 2 2 寫這個程式想要處理的事情是 要比較每一列的元素值 例如:因為M(1,1)=M(1,2)=1 要產生M(1,3)=M(3,1)=1 且M(1,1)與M(1,2)的值要變成0 而M(2,1)=M(2,2)=2 要產生M(2,3)=M(3,2)=2 M(2,1)與M(2,2)的值也要變成0 我寫的方式是 for i=1:m for j=1:(m-1) if M(i,j)==M(i,j+1) & M(i,j+1)~=0; m=m+1; M(i,m)=M(i,j); M(m,i)=M(i,m); M(i,j)=0; M(i,j+1)=M(i,j); elseif M(i,j)~=M(i,j+1) M=M end end end 如果以上面那例子來跑 矩陣會變成 0 0 1 0 0 0 0 2 1 0 0 0 0 2 0 0 但我想要的結果是 0 0 1 0 0 2 1 2 0 請請教各位高手我應該修改哪個部份才能達到我想要的呢!? 因為這是2*2的矩陣,所以能比較的只有每一列中的兩個值 如果擴展到更大的矩陣,那比較的將會是每一列中的倆倆互相比較或是三個一起比 甚至更多。 我寫的只是兩兩比較,如果有三個以上,就不知道該如何處理。 希望有高手幫忙解救我這個新手> < 感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.208.92.218

03/29 16:43, , 1F
你迴圈的index是1~m 卻在迴圈中 讓m=m+1 才會這樣
03/29 16:43, 1F

03/29 17:07, , 2F
想請教C大是否可以為小弟講解詳細一點,感謝你~
03/29 17:07, 2F

03/29 17:09, , 3F
因為小弟剛剛試過修改成k=m+1或是把m=m+1刪除都失敗
03/29 17:09, 3F

04/19 03:47, , 4F
你把m=m+1拿掉 然後在if迴圈內有出現的m後面都打上+1
04/19 03:47, 4F
文章代碼(AID): #1DaPWg0K (MATLAB)