Matlab - 为数组的每个元素运行带参数的函数?

Gad*_*i A 5 arrays matlab

Matlab有一个很好的属性,标量函数(例如sin)可以在数组上工作,对数组的任何元素进行操作并返回数组作为结果.

我有一个标量函数f(x,p),其中x是一个标量,并且p是一个参数(实际上是一个参数数组).给定一个固定的参数p,我希望f(x,p)在一个数组上运行A.在像Ruby这样的语言中,它看起来像这样:

A.collect{|x| f(x,p)}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在Matlab中为接受参数的函数而不仅仅是我想要操作的数组中的标量.

Edr*_*ric 7

MATLAB的等价物是提供一个只接受一个参数的函数句柄,并将其发送给arrayfun.

arrayfun( @(x) f(x, p), A )
Run Code Online (Sandbox Code Playgroud)

例如,

A = 1:10;
p = 2;
arrayfun( @(x) x.^p, A )
Run Code Online (Sandbox Code Playgroud)

请注意,匿名函数创建一个闭包,捕获值p.