假设我有一个函数可以计算一个输入的一个输出,向量化涉及while循环或if循环中的if子句的函数(Matlab)
function y = sqrt_newton(x)
y = x ./ 2;
yo = y;
y = 0.5.*(y + x ./ y);
while abs(y - yo) > eps * abs(y)
yo = y;
y = 0.5.*(y + x ./ y);
end
end
我希望能够给这个函数应用到向量输入说sqrt_newton(2:9)
像内置的功能。在循环开始时的条件或一些if-子句内部的条件下达到此目的的最佳方法是什么?如果可能的话,我想避免编写一个额外的函数作为包装器来循环输入向量。
我现在麻烦的解决方案
我做的到现在为止是:
我必须展开第一输入相同的尺寸(使用finargsz从金融工具箱,但如果你知道另一个核心功能是一样的,那会很棒)
使用
size
来记录形状deal
输入环通的所有投入要素
reshape
输出
看来,numel
功能减轻所有这一切繁重的工作需要,但额外的意见将非常欢迎。
好吧,我喜欢你的解决方案,因为它相对于原始函数具有最小的开销。太糟糕了,它太呆滞了。 – 2012-03-05 01:03:41