"Intermediate dot indexing produced a comma-separated list.." error prevents extracting values from nested indexed fields
460 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
z8080
el 18 de Mayo de 2022
Comentada: Stephen23
el 3 de Nov. de 2022
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.
1 comentario
Stephen23
el 18 de Mayo de 2022
Editada: Stephen23
el 18 de Mayo de 2022
Your code does not work because you are trying to apply one index onto multiple variables. MATLAB does not have such a command that applies one index to all members of a comma-separated list, nor is it likely to in the near future (that would be a major change in how commas and lists are interpreted).
a.students(1).grades = [7 8 9];
a.students(2).grades = [6 7 8];
a.students(:).grades % this returns multiple separate variables, not one array.
a.students(:).grades(:) % how can we apply one index to multiple arrays?
Basically your code is doing something a bit like this (pseudo-code):
[7 8 9],[6 7 8](:)
with the expectation that the colon index would be applied to both members of the comma-separated list.
Respuesta aceptada
Más respuestas (1)
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!