[問題] 如何優先執行if條件後,再跳出迴圈
我想要在我的回圈內,第一個優先條件挑出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
→
05/07 16:00, , 1F
05/07 16:00, 1F
→
05/07 16:00, , 2F
05/07 16:00, 2F
因為我運算式A每跑1次sigma,運行時間很久,想說若能找到我要的值=2(優先條件),
跟值=3(次優先條件),就終止sigma迴圈,再把sigma值丟到運算式W,
這樣一來就減少許多時間,就不用多跑
謝謝
※ 編輯: popo14777 (140.138.143.57), 05/07/2016 16:45:52
→
05/07 18:15, , 3F
05/07 18:15, 3F
→
05/07 18:15, , 4F
05/07 18:15, 4F
→
05/08 16:31, , 5F
05/08 16:31, 5F
→
05/08 16:31, , 6F
05/08 16:31, 6F
推
05/09 08:04, , 7F
05/09 08:04, 7F
→
05/11 16:37, , 8F
05/11 16:37, 8F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章