动态字段名称
访问结构体中的数据的最常用方法是指定要引用的字段的名称。
访问结构体数据的另一种方法是使用动态字段名称。这些名称将字段表示为变量表达式,MATLAB 会在运行时计算这些表达式。此处显示的 点-括号 语法将 expression 作为动态字段名称:
structName.(expression)
使用标准 MATLAB 索引语法创建此字段的索引。例如,要在字段名称中计算 expression,并在行 7 中的 1 至 25 列内获取该字段的值,使用
structName.(expression)(7,1:25)
动态字段名称示例
下面显示的 avgscore 函数可用于计算考试的平均分数,并使用动态字段名称检索 testscores 结构体中的信息:
function avg = avgscore(testscores, student, first, last)
for k = first:last scores(k) = testscores.(student).week(k);
end
avg = sum(scores)/(last - first + 1);
运行此函数,并对动态字段 student 使用不同值。
首先,对包含 25 周内的分数的结构体进行初始化:
testscores.Ann_Lane.week(1:25) = ... [95 89 76 82 79 92 94 92 89 81 75 93 ... 85 84 83 86 85 90 82 82 84 79 96 88 98]; testscores.William_King.week(1:25) = ... [87 80 91 84 99 87 93 87 97 87 82 89 ... 86 82 90 98 75 79 92 84 90 93 84 78 81];
现在,运行 avgscore,并在运行时使用动态字段名称为 testscores 结构体提供学生姓名字段:
avgscore(testscores, 'Ann_Lane', 7, 22) ans = 85.2500 avgscore(testscores, 'William_King', 7, 22) ans = 87.7500