2016-09-16 83 views
3

我正在下面的代碼在MATLAB:Matlab:如何動態更新for循環的限制?

m=unique(x); 
for i=1:length(m) 
%some code that increase the number of unique values in x 
....... 
....... 
%here I tried to update m 
m=unique(x); 
end 

雖然我已經在之前寫這行m=unique(x);最終更新m,for循環的限制仍然具有相同的舊值。我需要動態更新for循環的限制。那可能嗎?如果可能的話,該怎麼做?

回答

5

當MATLAB遇到for i = 1:length(m)時,它將該語句轉換爲for i = [1 2 3 ... length(m)]。您可以將其視爲硬編碼。因此,for循環中的for-limit更新沒有效果。

m = unique(x); 
i = 1; 
while true 
    if i > length(m) 
     break 
    end 
    % do something 
    i = i + 1; 
    m = unique(x); 
end 
+7

或者,有點簡單:'m = unique(x); ii = 0;而ii

+0

@LuisMendo你的答案是更好的imo,太糟糕了,它只是一個評論。 – Bernhard