Matlab coder logical indexing structs

1 visualización (últimos 30 días)
Mohammed Kagalwala
Mohammed Kagalwala el 18 de Feb. de 2020
Editada: Stephen23 el 18 de Feb. de 2020
Hello,
I currently have a struct defined as such,
struct(1).a
struct(2).a
struct(3).a
...
struct(N).a
where the field a is a 3x3 matrix. When I'm attempting to convert Matlab code to C through the code I run into the follwing error when trying to access the above struct through a logical index, lg.
What I'm attempting:
b = blkdiag(struct(lg).a);
Error I get:
"Directly accessing field or property of nonscalar struct or object not supported for code code generation."
I'm not fully understanding the error. Furthermore isn't 'struct' a scalar struct in this case. Note: 'struct' does have other fields that are matrices, scalars and logicals as well.
  2 comentarios
Stephen23
Stephen23 el 18 de Feb. de 2020
Editada: Stephen23 el 18 de Feb. de 2020
"I currently have a struct defined as such,"
struct(1).a
struct(2).a
struct(3).a
...
struct(N).a
Hopefully you do NOT have a structure named struct. That would be a very unfortunate name for a structure, as it would shadow the inbuilt struct function.
"Furthermore isn't 'struct' a scalar struct in this case."
Only if N==1. If N~=1 then the structure is non-scalar.
Just like any other array, a scalar structure has size 1x1x1x1x1x1...
If N~=1, then regardless of what dimension it corresponds to, the structure cannot be scalar.
Note: the number of fields a structure has is completely independent of its size.
Mohammed Kagalwala
Mohammed Kagalwala el 18 de Feb. de 2020
I do not have a struct named struct, this is just a simple label for example purposes. From some trial and error it seems the C Coder does NOT support the use of logicals to index into such structs

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Structures 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!

Translated by