我必须为特定函数运行大量迭代(10 ^ 6),该函数调用其他几个函数。它调用的函数之一有switch case语句,因为代码有两部分。我显然不希望提示出现10 ^ 6次,有没有办法让我只在第一次迭代中得到提示并根据该选择继续进行其余的迭代?或者还有其他方法可以解决这个问题吗?
谢谢你, 乔乔
答案 0 :(得分:1)
您在这里所做的可能是一个设计问题,您可以以不同的方式解决。在调用层次结构内部提示参数/选项似乎是错误的。无论如何要回答你的问题,你可以制作那个参数,我们称之为乘数f
,即该内部函数的persistent
变量:
function c = dosomething(a, b)
persistent f;
while isempty(f)
f = input('enter multiplier: ');
end
c = f * a + b;
在示例中,f
在第一次调用[]
时将为空dosomething
。在这种情况下,将提示用户输入值。在后续调用中,f
仍将具有此值(由于声明符persistent
),并且不会再次提示用户。
更好的解决方案可能是让外部函数将参数传递给dosomething(a, b, f);
,因此外部函数可能是提示用户的函数。