缩短长表达式

Har*_*ngh 1 matlab vectorization

我想为函数创建一个函数句柄:

f = @(x) (x-1)*(x-2)*...*(x-50);
Run Code Online (Sandbox Code Playgroud)

如何在不输入所有50个术语的情况下在MATLAB中执行此操作?

And*_*ein 5

这是一个矢量化解决方案:

y = prod((x-[1:50]))
Run Code Online (Sandbox Code Playgroud)

或者如果你想要一个匿名函数:

f = @(x) ( prod((x-[1:50])) )
Run Code Online (Sandbox Code Playgroud)

顺便说一下,由于Matlab JIT-Accelerator,它可能不会比@Chris解决方案更快(这是好的,我赞成它).