“中间点索引产生一个以逗号分隔…”从嵌套误差防止提取值索引字段

651(30天)
下面的最低工作示例说明了Matlab中非常常见的情况,并显示错误当试图产生聚合值来自自己嵌套在其他索引字段索引字段。
a.students (1)。成绩= [7 8 9];
a.students (2)。成绩= (6 7 8);
max (a.students (:) .grades (:))%获得最高的分数,从所有的学生
%的错误:
%的中间点。与2索引产生一个以逗号分隔值,但是它必须产生一个单一值,其次是后续索引操作。
产生同样的错误,如果我只是试着打印出这些值,而不应用 马克斯 或任何其他功能,将在方括号表达式并不帮助:
[a.students (:) .grades (:))
唯一的出路就是继续使用for循环,使代码不雅且容易出错。这似乎也基本功能没有内置在Matlab解决方案。如何实现这将不胜感激任何建议。
1评论
Stephen23
Stephen23 2022年5月18日
编辑:Stephen23 2022年5月18日
代码不工作,因为您正试图应用一个索引到多个变量。MATLAB没有这样的一个命令,一个索引适用于所有成员的逗号分隔列表,也不可能在不久的将来(这将是一个重大的变化在逗号和列表是如何解释)。
a.students (1)。成绩= [7 8 9];
a.students (2)。成绩= (6 7 8);
a.students (:) .grades%这返回多个单独的变量,而不是一个数组。
ans = 1×3
7 8 9
ans = 1×3
6 7 8
a.students (:) .grades (:)%我们如何将一个索引应用到多个数组?
中间点”。与2索引产生一个以逗号分隔值,但是它必须产生一个单一值,其次是后续索引操作。
基本上你的代码做一些像这样的(伪代码):
[7 8 9]、[6 7 8](:)
结肠的期望指数对双方都适用的逗号分隔列表。

登录置评。

接受的答案

乔恩
乔恩 2022年5月18日
如果你想马克斯超过所有的分数你能做到这样很简单
val = max ([a.students.grades])
6个评论
z8080
z8080 2022年5月19日
非常感谢乔恩和斯蒂芬。非常奇怪,我已经想到将在方括号表达式,而是因为我也包括(:),这促使错误。使用我的兆瓦,现在的错误我是不同于线程的一个标题,即相关的一个“预期一个输出从一个花括号……”
总之,我学到很多东西,谢谢你。

登录置评。

s manbetx 845


释放

R2022a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!