我想为函数创建一个函数句柄:
f = @(x) (x-1)*(x-2)*...*(x-50);
如果不输入所有50个术语,我怎么能在MATLAB中做到这一点?
答案 0 :(得分:5)
这是一个矢量化解决方案:
y = prod((x-[1:50]))
或者如果你想要一个匿名函数:
f = @(x) ( prod((x-[1:50])) )
顺便说一下,由于Matlab JIT-Accelerator,它可能不会比@Chris解决方案更快(这很好,我赞成它)。
答案 1 :(得分:1)
你可以将它包装在一个函数中。例如,
function y = myfunc(x, n)
y = 1.;
for i = 1:n
y = y*(x-i);
end
end
您定义的函数基本上是product of a sequence,它们被简单地写成for
循环。
在您的情况下,您希望计算50个术语的结果,因此您可以使用y = myfunc(x, 50)
,或者,如果您希望将其作为函数句柄,则可以定义
f = @(x) myfunc(x, 50);