如何在matlab中使用结构体

如何在matlab中使用结构体

结构体是多维 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