"Intermediate dot indexing produced a comma-separated list.." error prevents extracting values from nested indexed fields
741 views (last 30 days)
The following minimum working example illustrates a very common situation in Matlab, and shows the error produced when trying to aggregate values from across indexed fields that are themselves nested within other indexed fields.
a.students(1).grades = [7 8 9];
a.students(2).grades = [6 7 8];
max(a.students(:).grades(:)) % obtain maximum of ALL grades, from ALL students
% gives the error:
% Intermediate dot '.' indexing produced a comma-separated list with 2 values, but it must produce a single value when followed by subsequent indexing operations.
The same error is produced if I simply try to print out those values, without applying max or any other function, and putting the expression in square brackets doesn't help:
[ a.students(:).grades(:) ]
The only way to go around this is to keep using for loops, which makes code inelegant and error-prone. This seems too basic a feature to not have a built-in solution in Matlab. Would appreciate any suggestions how this could be achieved.