
结构体是多维 MATLAB 数组,包含可按文本字段标志符访问的元素。例如,
S.name = 'Ed Plum';
S.score = 83;
S.grade = 'B+'
创建一个具有三个字段的标量结构体:
与 MATLAB 环境中的所有其他内容一样,结构体也为数组,因此可以插入其他元素。在本示例中,数组的每个元素都是一个具有若干字段的结构体。可以一次添加一个字段,
S(2).name = 'Toni Miller';
S(2).score = 91;
S(2).grade = 'A-';
也可以使用一个语句添加整个元素:
S(3) = struct('name','Jerry Garcia',...
'score',70,'grade','C')
现在,结构体非常大以致仅输出摘要:
将不同字段重新组合为其他 MATLAB 数组的方法有许多种。这些方法大多基于逗号分隔列表的表示法。键入
S.score
与键入
S(1).score, S(2).score, S(3).score
相同,这是一个逗号分隔列表。
如果将生成此类列表的表达式括在方括号中,MATLAB 会将该列表中的每一项都存储在数组中。在本示例中,MATLAB 创建一个数值行向量,该向量包含结构体数组 S 的每个元素的 score 字段:
scores = [S.score]
avg_score = sum(scores)/length(scores)
要根据某个文本字段(例如,name)创建字符数组,请对 S.name 生成的逗号分隔列表调用 char 函数:
names = char(S.name)
同样,通过将生成列表的表达式括入花括号中,可以根据 name 字段创建元胞数组:
names = {S.name}
要将结构体数组的每个元素的字段赋值给结构体外部的单独变量,请指定等号左侧的每个输出,并将其全
部括在方括号中:
[N1 N2 N3] = S.name
