在MATLAB以下for
循環:for循環不迭代
for i = [1:100]'
%'// Do something, such as disp(i)
end
顯然不是真的被迭代執行,而i
成爲矩陣[1 2 3 ... 100]和「循環「僅在該矩陣i
上執行一次。您可以通過打印i
的值或其他跟蹤信息來驗證。循環中只有一次通過。
是否有可能迫使MATLAB做真正的循環?我問的原因是上面的方法在很多情況下都很好,但是當你有需要運行的嵌套循環時更加痛苦。
例:
下面的代碼不會做,如果你以爲你是在一個循環得到實際的迭代你所期望的:
for i = outlier
data(i) = median(data(i-100:i+100))
end
人們期望在每個離羣指數,這將取代數據(i)與從i-100到i + 100的數據的中位數,但它不是。事實上,中位數會返回您所關注的所有範圍的集合中計算出的單個值,並且每個數據(i)點將被替換爲該單個值。
你能後輸出再現您所看到的。我還沒有看到這種行爲,並且我在Matlab中已經注意到了很多循環。 – Iterator
你不是指'中位數(數據(i-100:i + 100))'嗎? (帶':') –
@Clement J.是的。現在更正。 –