结构体
优质
小牛编辑
137浏览
2023-12-01
结构体是MATLAB的多维数组,其元素取决于原文的域指示符。例如,
S.name = 'Ed Plum'; S.score = 83; S.grade = 'B+'
创建一个含三个域的标量结构体。
S = name: 'Ed Plum' score: 83 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')
现在,结构体足够大,可以输出摘要了。
S = 1x3 struct array with fields: name score grade
有几种方法可以把不同域集合到其他MATLAB数组里。它们都是基于逗号分开的列表的符号。若输入
S.score
等于输入
S(1).score, S(2).score, S(3).score
这就是逗号分开的列表。没有任何其他标点,它不是很有用。这样,它把三个分数值依次赋给默认变量ans
,并正确无误地输出每个赋值结果。但当你用方括号把表达式括起来时,
[S.score]
就等同于
[S(1).score, S(2).score, S(3).score]
生成一个包含所有分数的行向量。
ans = 83 91 70
类似地,输入
S.name
只依次把姓名赋值给ans
。但若嵌入花括号,
{S.name}
则产生一个包含三个名字的1*3单元数组,
ans = 'Ed Plum' 'Toni Miller' 'Jerry Garcia'
而
char(S.name)
调用char
函数,用三个变元从姓名域创立一个字符数组,
ans = Ed Plum Toni Miller Jerry Garcia