arrayfun

应用函数数组的每个元素

描述

例子

= arrayfun(FUNC,一个)应用功能FUNC到的元素一个,一次一个元件。arrayfun然后从串接的输出FUNC入输出数组,因此,对于第个元素一个,B(i)=函数(A(i)).输入参数FUNC是接受一个输入参数并返回标量的函数的函数句柄。输出来自FUNC可以具有任何数据类型,只要该类型的对象可以被级联。该阵列一个有同样的尺寸。

不能指定arrayfun计算的元素或者依靠他们按照任何特定的顺序来做。

= arrayfun(FUNC,A1,…,安)应用FUNC到数组的元素A1,…,一个, 以便B(i)=函数(A1(i),…,An(i)). 功能FUNC一定要拿n个输入参数并返回标量。阵列A1,…,一个所有的都必须有相同的尺寸。

例子

= arrayfun(___,名称、值)应用FUNC由一个或多个指定的附加选项名称、值对参数。例如,要在单元阵列返回的输出值,指定'UniformOutput',假.您可以返回作为一个单元阵列时FUNC返回不能连接到数组中的值。你可以用名称、值对参数与先前任一语法的输入参数。

例子

[B1,...,家蚕] = arrayfun(___)返回多个输出数组B1,…,Bm什么时候FUNC回报输出值。FUNC可以返回具有不同的数据类型的输出参数,但每个输出的数据类型必须每次是相同的FUNC被称为。可以将此语法与以前语法的任何输入参数一起使用。

来自的输出参数数FUNC不必是相同的作为由指定的输入参数的个数A1,…,一个.

例子

全部折叠

创建一个非标量结构阵列。每个结构都有一个包含随机数的向量场。该向量具有不同的尺寸。

S(1)= .f1兰特(1,5);S(2)= .f1兰特(1,10);S(3)= .f1兰特(1,15)
S =带字段的1×3结构数组:一层

计算中每个字段的平均值S公司通过使用arrayfun功能。您不能使用结构乐趣因为结构乐趣必须是标量结构。

A=arrayfun(@(x)平均值(x.f1),S)
一个=1×30.6786 0.6216 0.6069

创建一个结构阵列,其中每个结构具有包含数字数组两个字段。

S(1).X = 5:5:100;S(1)= .Y兰特(1,20);S(2)= .X 10:10:100;S(2)= .Y兰特(1,10);S(3)·X = 20:20:100;S(3)= .Y兰特(1,5)
S =带字段的1×3结构数组:X Y

绘制数值数组。从返回图表行对象数组情节功能和使用它们不同的标记添加到每个组的数据点。arrayfun可以只要该数据类型的对象可以被级联返回任何数据类型的阵列。

身材保持p=arrayfun(@(a)绘图(a.X,a.Y),S);p(1)标记='O';P(2)= .Marker'+';p(3)标记=“的”;保持远离的

创建一个非标量结构阵列。每个结构具有包含数值矩阵的字段。

S(1)= .f1兰特(3,5);S(2)= .f1兰特(6,10);S(3)= .f1兰特(4,2)
S =带字段的1×3结构数组:一层

计算中每个字段的平均值S公司通过使用arrayfun功能。意思返回包含每列平均值的向量,因此平均值不能作为数组返回。若要返回单元格数组中的平均值,请指定'UniformOutput',假名称 - 值对。

A=arrayfun(@(x)平均值(x.f1),S,'UniformOutput',错误)
一个=1×3单元阵列{1×5双} {1×10双} {1×2双}

创建一个非标量结构阵列。

S(1).f1=1:10;S(2).f1=[2;4;6];S(3).f1=[]
S =带字段的1×3结构数组:一层

计算每个字段的大小S公司通过使用arrayfun功能。行和列的数量各自是在1×3数值阵列。

[NROWS,NCOLS] = arrayfun(@(x)的大小(x.f1),S)
NROWS =1×31 3 0
NCOLS =1×310个10个

输入参数

全部折叠

应用于输入数组元素的函数,指定为函数句柄。

FUNC可对应于一个以上的功能的文件,并因此可以代表一组过载功能。在这些情况下,MATLAB®该功能确定调用基于类的输入参数。

例:B = arrayfun(@圆形,A)返回的每个元素的整数部分一个.

输入数组。一个可以是属于任一个基本数据类型的阵列,除了桌子时间表,或任何支持线性索引的类。金宝app

要应用功能表或时间表的内容,请使用varfun,罗芬,splitapply, 要么组摘要功能。

如果你定义的类一个属于,你也过载子参考要么大小的方法一个,然后arrayfun放在这些要求一个:

  • 这个大小方法一个必须返回double数组。

  • 一个必须支持线金宝app性索引。

  • 尺寸的产品返回由大小方法不得超过极限一个,如由线性索引定义成一个.

名称-值对参数

指定可选的逗号分隔对名称、值参数。名称是参数名和价值是对应的值。名称必须出现在引号内。可以按任意顺序指定多个名称和值对参数,如下所示名1,值1,...,NameN,值N.

例:A=arrayfun(@(x)平均值(x.f1),S,'UniformOutput',false)返回单元格数组中的平均值。S公司是其中每个结构有一个名为字段的结构阵列一层.

真或假,指定为逗号分隔的一对组成的'UniformOutput',要么真的(1个)或者(0个).

价值'UniformOutput'

描述

真的(1个)

FUNC必须返回标量arrayfun连接成阵列。

(0个)

arrayfun返回的输出FUNC在单元格数组中。的输出FUNC可以有任何大小和不同的数据类型。

函数来捕捉错误,指定为逗号分隔的一对组成的'错误处理程序'和功能手柄。如果FUNC引发错误,则错误处理程序指定由'错误处理程序'捕获错误并执行函数中指定的操作。错误处理程序必须抛出错误或返回与FUNC.如果价值'UniformOutput'为true,则错误处理程序的输出参数必须是标量,并且具有与的输出相同的数据类型FUNC.

错误处理程序的第一个输入参数是具有以下字段的结构:

  • 识别码- 错误标识符

  • 消息-错误消息文本

  • 指数- 线性索引到输入阵列处FUNC抛出错误

错误处理程序的其余输入参数是调用FUNC这使FUNC抛出错误。

假设FUNC返回两个双打作为输出参数。您可以指定错误处理程序'错误处理程序',@errorFunc,其中errorFunc是提高一个警告,返回两个输出参数的函数。

函数[A,B] = errorFunc(S,varargin)警告(S.identifier,S.message);A = NaN的;B = NaN的;结束

如果您没有指定'错误处理程序',然后arrayfun重新引发FUNC.

输出参数

全部折叠

输出数组,返回任何数据类型的阵列或作为单元阵列。

默认,arrayfun连接输出FUNC排列成一列。FUNC必须返回标量。如果FUNC返回对象,则对象所属的类必须满足这些要求。

  • 金宝app通过对象数组的线性索引支持赋值

  • 有一个重塑方法返回与输入大小相同的数组

如果'UniformOutput'名称 - 值对参数是(0个), 然后arrayfun返回单元格数组中的输出。在这种情况下,来自FUNC可以有任何大小和不同的数据类型。

扩展功能

在R2006a之前引入