可以根据用户输入禁用'for'循环吗?

时间:2014-03-05 13:04:42

标签: matlab if-statement for-loop

与此问题类似:

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循环。

2 个答案:

答案 0 :(得分:2)

我很确定这不起作用。但这会:

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

所以查看(flag*n + ~flag),如果flag为true,它将等于n(即1*n + 0),如果flag为false则等于1({{1} })

修改

有关更新的问题:

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

0*n + 1

现在:

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

答案 1 :(得分:1)

这个怎么样?

if flag
    limit = n;
else
    limit = 1;
end

for i = 1:limit
    ...
end