【发布时间】:2012-03-22 11:29:12
【问题描述】:
假设我有一个可以从一个输入计算一个输出的函数,例如
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 函数减轻了所有这些繁重工作的需要,但额外的 cmets 将是最受欢迎的。
【问题讨论】:
标签: arrays matlab loops conditional-statements vectorization