文档

structfun

将功能应用于标量结构的每个字段

句法

a = structFun(func,s)
a = structFun(func,s,name,value)
[a1,...,am] = structFun(___

描述

例子

一个= structFun(功能,,,,s应用功能功能到标量结构的每个字段s,一次一个领域。structfun然后将输出从功能进入列矢量一个。输入参数功能是一个函数的函数句柄,该函数获取一个输入参数并返回标量。输出功能只要该类型的对象可以连接,就可以具有任何数据类型。元素中的数量一个等于在s

您不能指定哪个顺序structfun计算元素一个或依靠它们以任何特定的顺序完成。

例子

a = structFun(功能,,,,s,,,,名称,价值适用功能有一个或多个指定的其他选项名称,价值配对参数。例如,要返回结构中的输出值,请指定“统一输出”,错误。你可以返回一个作为结构功能返回无法连接到数组的值。返回的结构具有与s

例子

[a1,...,am] = structFun(___返回多个输出数组A1,...,AM什么时候功能返回m输出值。功能可以返回具有不同数据类型的输出参数,但是每次输出的数据类型必须相同功能叫做。您可以将此语法与先前语法的任何输入参数一起使用。

例子

全部收缩

创建一个带有包含不同大小的数字阵列的字段的标量结构。

s.f1 = 1:10;s.f2 = [2;4;6];s.f3 = []
s =带有字段的结构:F1:[1 2 3 4 5 6 7 8 9 10] F2:[3x1 double] F3:[]

计算每个数字阵列的平均值,并在数组中返回均值。

a = structFun(@mean,s)
a =5.5000 4.0000南

创建一个标量结构,其中每个字段包含一个随机数的数组。

s.x = rand(1,10);s.y = rand(1,10);s.z = rand(1,10)
s =带有字段的结构:X: [0.8147 0.9058 0.1270 0.9134 0.6324 0.0975 0.2785 0.5469 0.9575 0.9649] Y: [0.1576 0.9706 0.9572 0.4854 0.8003 0.1419 0.4218 0.9157 0.7922 0.9595] Z: [0.6557 0.0357 0.8491 0.9340 0.6787 0.7577 0.7431 0.3922 0.6555 0.1712]

绘制数组。从阴谋功能并使用它们为每组数据点添加不同的标记。structfun只要该数据类型的对象可以串联,就可以返回任何数据类型的数组。

p = structFun(@plot,s);p(1).marker ='o';p(2).marker ='+';p(3).marker =';抓住离开

创建一个带有矩阵的字段的标量结构。

s.f1 = 1:10;s.f2 = [2 3;4 5;6 7];s.f3 = rand(4,4)
s =带有字段的结构:F1:[1 2 3 4 5 6 7 8 9 10] F2:[3x2 double] F3:[4x4 double]

计算每个矩阵的均值。意思是返回包含每列平均值的向量,因此无法将均值作为数组返回。要返回结构中的平均值,请指定“统一输出”,错误名称对。

a = structFun(@mean,s,“统一输出”,错误的)
a =带有字段的结构:F1:5.5000 F2:[4 5] F3:[0.6902 0.3888 0.7627 0.5962]

创建标量结构。

s.f1 = 1:10;s.f2 = [2 3;4 5;6 7];s.f3 = rand(4,4)
s =带有字段的结构:F1:[1 2 3 4 5 6 7 8 9 10] F2:[3x2 double] F3:[4x4 double]

计算每个数组的大小s。行和列的数量分别为3 by-1数字阵列。

[nrows,ncols] = structFun(@size,s)
nrows =1 3 4
ncols =10 2 4

输入参数

全部收缩

函数应用于指定为函数句柄的输入标量结构的字段。

功能可以对应于多个功能文件,因此可以代表一组过载功能。在这些情况下,matlab®根据输入参数的类确定要调用的函数。

例子:a = structFun(@max,s)返回每个字段的最大s

输入结构,指定为标量结构。

名称值对参数

指定可选的逗号分隔对名称,价值参数。姓名是参数名称和价值是相应的值。姓名必须出现在单引号中('')。您可以按任何顺序指定几个名称和值对参数NAME1,Value1,...,Namen,Valuen

例子:a = structFun(@mean,s,'UniformOutput',false)意思是在具有与相同字段的结构中s

全部收缩

是或错,指定为逗号分隔对,由“均匀企业”两者1((真的) 或者0((错误的)。

的价值“统一输出”

描述

1((真的

功能必须返回标量structfun连接到列矢量。

0((错误的

structfun返回的输出功能在一个或多个标量结构中。输出标量结构具有与输入标量结构相同的字段。输出功能可以具有任何数据类型。

捕获错误的函数,指定为逗号分隔对'ermorhandler'和功能手柄。如果功能引发错误,然后是错误处理程序指定的错误处理程序'ermorhandler'捕获错误,并采用函数中指定的操作。错误处理程序必须扔错误或返回相同数量的输出与功能。如果价值“统一输出”是真的,那么错误处理程序的输出参数必须是标量,并且具有与输出相同的数据类型功能

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

  • 标识符- 错误标识符

  • 信息- 错误消息文字

  • 指数- 线性索引进入输入数组功能扔了错误

对错误处理程序的其余输入参数是调用呼叫的输入参数功能那做了功能投掷错误。

认为功能返回两个双打作为输出参数。您可以将错误处理程序指定为'ermorhandler',@errorfunc, 在哪里errorfunc是发出警告并返回两个输出参数的函数。

函数[a,b] = errorFunc(s,varargin)警告(s.Identifier,s.message);a = nan;b = nan;结尾

如果您不指定'ermorhandler', 然后structfun重新抛出错误功能

输出参数

全部收缩

输出数组,作为任何数据类型或标量结构的列向量返回。

默认,structfun加入来自功能进入列矢量。功能必须返回标量。如果功能返回对象,然后对象所属的类必须满足这些要求。

  • 金宝app通过线性索引到对象阵列中的支持分配

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

如果价值“统一输出”名称值对参数是0((错误的), 然后structfun返回输出作为标量结构的字段。在这种情况下,输出来自功能可以具有任何尺寸和不同的数据类型。

扩展功能

在R2006a之前引入

这个话题有帮助吗?