有没有可以重复一段代码给定次数的函数?
例如:
t= 0;
while (t< 10)
if x==2
x=1
else
x=3;
end
end
我如何使用另一个函数重写这个函数?
有没有可以重复一段代码给定次数的函数?
例如:
t= 0;
while (t< 10)
if x==2
x=1
else
x=3;
end
end
我如何使用另一个函数重写这个函数?
递归函数可以为您执行此操作(假设您不能使用:for,while,repeat)。
或者,如果在一次迭代中执行的代码独立于其他迭代的结果,您可以使用arrayfun
or 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 JIT淘汰的 naive-loop 对应物要慢(在 SO 上有几个关于这个问题的 Q/A)。
如果您将代码以矢量格式放置,Matlab 会自动为您“重复”代码:
x_vector = round(2*rand(10,1)) %Your x input
idx = (x_vector==2)
x_vector(idx) = 1;
x_vector(~idx) = 3;