arrayfun
将函数应用于每个数组元素
语法
说明
将函数 B
= arrayfun(func
,A
)func
应用于 A
的元素,一次一个元素。然后 arrayfun
将 func
的输出串联成输出数组 B
,因此,对于 A
的第 i
个元素来说,B(i) = func(A(i))
。输入参量 func
是一个函数的函数句柄,此函数接受一个输入参量并返回一个标量。func
的输出必须始终属于相同的数据类型才能使用此语法。如果函数输出具有不同数据类型,则您必须将 UniformOuput
名称-值参量设置为 false
。数组 A
和 B
必须具有相同的大小。
您不能指定 arrayfun
计算 B
的各元素的顺序,也不能期望它们按任何特定的顺序完成计算。
应用 B
= arrayfun(___,Name,Value
)func
并使用一个或多个 Name,Value
对组参量指定其他选项。例如,要以元胞数组形式返回输出值,请指定 'UniformOutput',false
。当 func
返回的值不能串联成数组时,可以按元胞数组的形式返回 B
。您可以将 Name,Value
对组参量与上述任何语法中的输入参量结合使用。
当 func
返回 m
个输出值时,[B1,...,Bm] = arrayfun(___)
返回多个输出数组 B1,...,Bm
。func
可以返回不同数据类型的输出参量,但每次调用 func
时返回的每个输出的数据类型必须相同。您可将此语法与上述语法中的任何输入参量一起使用。
从 func
返回的输出参量的数量不必与 A1,...,An
指定的输入参量的数量相同。
示例
输入参数
输出参量
局限性
异构数组
当
UniformOutput
设置为true
时,arrayfun
不支持异构数组。复数输入数组的行为差异
如果输入数组
A
是复数数组,并且一些元素的虚部等于零,则调用arrayfun
并对数组进行索引可能会导致不同结果。arrayfun
函数始终将此类数字视为虚部等于零的复数。但是,索引会以实数形式返回这些值。为了演示行为的不同,首先创建一个复数数组。
A = zeros(2,1); A(1) = 1; A(2) = 0 + 1i
A = 1.0000 + 0.0000i 0.0000 + 1.0000i
然后创建一个元胞数组,并将
A
的元素赋给它。当您对A(1)
进行索引时,其值作为实数返回,因为其虚部等于零。您可以在C1
的不同元胞中存储实数和复数值,因为元胞数组可以存储不同类型的数据。C1 = cell(2,1); C1{1} = A(1); C1{2} = A(2)
C1 = 2×1 cell array {[ 1]} {[0.0000 + 1.0000i]}
调用
arrayfun
并访问A
的元素。将其值赋给一个元胞数组。当arrayfun
访问A(1)
时,它会将该值视为复数,并将其赋给C2{1}
。C2 = arrayfun(@(x) x, A, 'UniformOutput', false)
C2 = 2×1 cell array {[1.0000 + 0.0000i]} {[0.0000 + 1.0000i]}
扩展功能
版本历史记录
在 R2006a 之前推出
另请参阅
structfun
| cellfun
| spfun
| cell2mat
| splitapply
| varfun
| rowfun
| groupsummary