看板 MATLAB 關於我們 聯絡資訊
我想要在我的回圈內,第一個優先條件挑出2,第二個優先條件挑出3,挑出最佳的sigma P.S.但是這兩個條件必須滿足最小sigma 以下是的A矩陣(矩陣內是SV值,順序是sigma=1:10) A(:,1)=[27 10 6 5 4 2 2 2 2 2]' A(:,2)=[28 10 8 5 5 3 2 2 2 2]' A(:,3)=[30 9 8 5 4 4 3 3 3 3]' A(:,4)=[24 8 7 5 3 2 2 2 2 2]' A(:,5)=[23 7 7 5 4 3 3 3 3 3]' 我最後想要得到結果如下 A(:,1)→sigma=6、SV=2 A(:,2)→sigma=7、SV=2 A(:,3)→sigma=7、SV=3 A(:,4)→sigma=6、SV=2 A(:,5)→sigma=6、SV=3 以下是我的程式碼 for k=1:5 for sigma=1:10 A=運算式 if min(abs(A(:,k)-2))==0 % 第一個優先條件挑出2 [~, imin]=min(abs(A(:,k)-2)); opt_sigma=imin; % 挑出來的位置就是最佳sigma break else if min(abs(A(:,k)-2))==1 % 第二個優先條件挑出3 [~, imin]=min(abs(A(:,k)-2)); opt_sigma=imin; % 挑出來的位置就是最佳sigma break end end end W(運算式) % 把挑出最佳sigma丟入這個運算是 end 以上我想表達的意思是當我的sigma迴圈從1到10,執行運算式(A), 當滿足我上述說的條件後,跳出sigma這個迴圈,把我想要得到的sigma丟到我的運算式 (W) 但現在跑出來的結果為 A(:,1)→sigma=6 A(:,2)→sigma=6 A(:,3)→sigma=7 A(:,4)→sigma=5 A(:,5)→sigma=6 不知哪裡出問題,請大大幫忙,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.138.143.57 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1462598282.A.880.html ※ 編輯: popo14777 (140.138.143.57), 05/07/2016 13:25:21
at01076172: 其實我不是看得很懂你的中文意思。但若已知A這個矩陣 05/07 16:00
at01076172: 的話,[SV, sigma] = min(A);就是你要的東西了 05/07 16:00
因為我運算式A每跑1次sigma,運行時間很久,想說若能找到我要的值=2(優先條件), 跟值=3(次優先條件),就終止sigma迴圈,再把sigma值丟到運算式W, 這樣一來就減少許多時間,就不用多跑 謝謝 ※ 編輯: popo14777 (140.138.143.57), 05/07/2016 16:45:52
at01076172: 了解,所以你的SV值是必然存在2或3,你只是想找到第 05/07 18:15
at01076172: 一次發生是2或3,以及發生的時候sigma為多少嗎? 05/07 18:15
at01076172: 啊...話說我上面會這樣講是因為後來看了你的code。你 05/08 16:31
at01076172: 想做的事情跟你打的code似乎不太一樣 05/08 16:31
sunev: 你是要全跑完sigma,確定沒有2後,再去找有沒有3 ? 05/09 08:04
popo14777: 問題解決了 謝謝大大 05/11 16:37