2016-09-16 82 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