arrayfun
将函数应用于每个数组元素
语法
说明
应用 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