是否有一个函数可以重复一段代码一段时间?
例如:
t= 0;
while (t< 10)
if x==2
x=1
else
x=3;
end
end
如何使用其他功能重写此功能?
答案 0 :(得分:4)
递归函数可以为你做这个(假设你不能使用:for,while,repeat)。
答案 1 :(得分:2)
或者,如果在一次迭代中执行的代码对其他迭代的结果独立,则可以使用arrayfun
或cellfun
。
例如
fun = @(x) disp(['hello ' , num2str(x)]);
arrayfun(fun,1:5);
返回
hello 1
hello 2
hello 3
hello 4
hello 5
我个人我喜欢这些结构,因为我发现它们非常表达,就像在C ++中std::for_each
一样。
尽管如此,他们已经被证明比他们的天真循环对手慢得多,这些对手通过Matlab得到了 JITed (在SO上有关于这个问题的几个Q / A)。
答案 2 :(得分:1)
如果您将代码放在矢量格式中,Matlab会自动“重复”代码:
x_vector = round(2*rand(10,1)) %Your x input
idx = (x_vector==2)
x_vector(idx) = 1;
x_vector(~idx) = 3;