【问题标题】:Matlab: How to update the limit of a for loop dynamically?Matlab:如何动态更新 for 循环的限制?
【发布时间】:2016-09-16 09:49:21
【问题描述】:

我正在 matlab 中编写以下代码:

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

虽然我已经通过在 for 结束之前写下这行 m=unique(x); 来更新 m,但 for 循环的限制仍然具有相同的旧值。我需要动态更新 for 循环的限制。那可能吗?如果可以,怎么做?

【问题讨论】:

    标签: matlab for-loop limit updates


    【解决方案1】:

    当 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
    

    【讨论】:

    • 或者,简单一点:m = unique(x); ii = 0; while ii<numel(m), ii = ii + 1; doSomething; m = unique(x); end
    • @LuisMendo 你的回答比 imo 好得多,可惜它只是一个评论。
    猜你喜欢
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多