我有一個矩陣數組(M)。我對第i個位置上的矩陣執行一個操作,並在第(3i-1),(3i)和(3i + 1)個位置向我的數組添加三個矩陣。我想繼續這個過程直到我到達數組中的第j個位置,其中j使得第(j + 1)個位置和之後的所有矩陣已經出現在位置1和j(包含)之間的某處。如何檢查矩陣是否不在數組中(Matlab)
編輯:我被要求澄清我的意思。如上所述,我無法編寫使我的算法終止的代碼。如果我知道通過矩陣陣列搜索的正確方法來檢查給定的矩陣是否包含,那麼我可以做到這一點。我試過如下:
done = 0;
ii = 1
while done ~= 1
%operation on matrix in ith position omitted, but this is where it goes
for jj = ii+1:numel(M)
for kk = 1:ii
if M{jj} == M{kk};
done = done + 1/(numel(M) - ii);
break
end
end
end
if done ~= 1
done = 0;
end
ii = ii + 1
end
我有這個(我敢肯定,你可以看到)的問題是,如果處理進行太久,舍入誤差停止過做允許= 1,和算法不會終止。我試圖讓這一輪通過引入閾值,像
while abs(done - 1) > thresh
和
if abs(done - 1) > thresh
done = 0;
end
這使得該算法的工作更多的時候,但我沒有「一刀切」的閾值,我可以使用(該過程可以繼續任意多個步驟),所以它仍然最終打破。
我能做些什麼來解決這個問題?
感謝
我不太明白問題的內容與問題標題的關係。請問你在問什麼?另外,你能提供'M'來讓你的代碼可以正確重現。最後,如果你在MATLAB中有這樣的嵌套循環,通常意味着你做錯了什麼。我建議你澄清你的真實目標,這樣我們就可以找到更好的編寫代碼的方法。 – 2012-01-10 22:00:57
感謝您的回覆。我現在編輯我的帖子,使我的問題更清晰;我想你會發現它與標題有關。我不明白你的意思是「錯誤」。我的目標是編寫一個算法,使我能夠在可接受的時間內獲得所需的輸出。我是編程新手,但我寫的其他大多數算法都使用嵌套循環,並且工作得很好。 – 2012-01-10 22:08:23
我也不明白標題與你的要求有什麼關係。如果將其更改爲更相關的內容,例如「循環未正確終止」或其他內容會更好。它也會幫助你,因爲感興趣的人會根據標題真正閱讀你的真實問題。 – Jorge 2012-01-11 01:03:19