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

时间:2011-06-27 12:56:57

标签: arrays matlab

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

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

A.collect{|x| f(x,p)}

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

1 个答案:

答案 0 :(得分:7)

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

arrayfun( @(x) f(x, p), A )

例如,

A = 1:10;
p = 2;
arrayfun( @(x) x.^p, A )

请注意,anonymous function会创建一个闭包,捕获p的值。