【问题标题】:Can 'for' loops be disabled depending on user input?可以根据用户输入禁用“for”循环吗?
【发布时间】:2014-04-07 13:29:04
【问题描述】:

类似于这个问题:

Can a Matlab PARFOR loop be programmatically switched on/off?

我想知道是否可以在常规 for 循环中使用类似的东西。不幸的是,我目前实际上没有 Matlab 的工作副本,所以我无法在自己的代码中进行测试!

if (flag)
  for i = 1:n
else
  parfor i = 1:n
end

  % Do loop tasks.

  end

编辑 -

(经过进一步思考,我在我的问题中提供了更多细节)

这是我目前拥有的:

for i = 1:numel(Ffi)
    Ff = Ffi(i)

    for j = 1:numel(RelToli)
        RelTol = RelToli(j)

        for k = 1:numel(ki)
            k=ki(k)

                 % solve

        end
    end
end    

我想更改它,以便用户可以直接为 Ff/RelTol/k 选择单个值(通过 GUI/请求的输入),或者,如果用户未指定,则使用预定义数组中的所有值(分别为 Ffi/RelToli/ki)通过 for 循环。

【问题讨论】:

    标签: matlab if-statement for-loop


    【解决方案1】:

    我很确定那是行不通的。但这会:

    for i = 1:(flag*n + ~flag)
    

    所以看看(flag*n + ~flag),如果标志为真,它将等于n(即1*n + 0),如果标志为假,则等于10*n + 1

    编辑

    对于您更新的问题:

    如果用户输入一个值,然后设置一个标志

    if flag
        F = Ff; %//i.e. user input scalar
    else
        F = Ffi; %//i.e. Whole vector
    end
    

    现在:

    for Ff = F
    

    【讨论】:

    • 好的,我查看了我目前拥有的代码(在记事本中),并且我更仔细地考虑了我实际上想要如何更改它。我将编辑原始问题。
    • 太完美了。非常感谢,这看起来正是我想要的 :)
    【解决方案2】:

    这个怎么样?

    if flag
        limit = n;
    else
        limit = 1;
    end
    
    for i = 1:limit
        ...
    end
    

    【讨论】:

    • 这看起来更接近我的想法,我会考虑一下。非常感谢
    猜你喜欢
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多