Matlab有一个很好的属性,标量函数(例如sin)可以在数组上工作,对数组的任何元素进行操作并返回数组。
我有一个标量函数f(x,p)
,其中x
是一个标量,p
是一个参数(实际上是一个参数数组)。给定固定参数p
,我希望在数组f(x,p)
上运行A
。在像Ruby这样的语言中,它看起来像这样:
A.collect{|x| f(x,p)}
但我不知道如何在Matlab中为接受参数的函数而不仅仅是我想要操作的数组中的标量。
答案 0 :(得分:7)
MATLAB的等价物是提供一个只接受一个参数的函数句柄,并将其发送到arrayfun
。
arrayfun( @(x) f(x, p), A )
例如,
A = 1:10;
p = 2;
arrayfun( @(x) x.^p, A )
请注意,anonymous function会创建一个闭包,捕获p
的值。