此示例显示了如何从非尺度结构数组的多个元素访问和处理数据:
创建1 x-3结构s
带有字段F
:
s(1).f = 1;s(2).f ='二';s(3).f = 3 *一个(3);
尽管数组中的每个结构都必须具有相同数量的字段和相同的字段名称,但字段的内容可能是不同的类型和大小。当您参考字段时F
对于结构数组的多个元素,例如
s(1:3).f
或者
S.F
MATLAB®从元素中返回数据逗号分隔列表,显示如下:
ans = 1 ans =两个ans = 3 3 3 3 3 3 3 3 3 3
您不能使用语法分配列表v = s.f
因为字段可以包含不同类型的数据。但是,您可以将列表项分配给相同数量的变量,例如
[v1,v2,v3] = s.f;
或分配给单元阵列的元素,例如
c = {s.f};
如果所有字段都包含相同类型的数据并可以形成超矩形,则可以将列表项加成。例如,创建一个结构数字
在字段中具有标量数值F
,并从字段中加入数据:
数字(1).f = 1;数字(2).f = 2;数字(3).f = 3;allnums = [nums.f]
此代码返回
allnums = 1 2 3
如果要使用相同操作处理数组的每个元素,请使用arrayfun
功能。例如,计算字段中元素的数量F
阵列中的每个结构s
:
numelements = arrayfun(@(x)numel(x.f),s)
语法@(X)
创建一个匿名功能。此代码调用numel
数组的每个元素的功能s
, 如numel(s(1).f)
,并返回
数字= 1 3 9
有关相关信息,请参见: