Matlab coder logical indexing structs

2 vues (au cours des 30 derniers jours)
Mohammed Kagalwala
Mohammed Kagalwala le 18 Fév 2020
Modifié(e) : Stephen23 le 18 Fév 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 commentaires
Stephen23
Stephen23 le 18 Fév 2020
Modifié(e) : Stephen23 le 18 Fév 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 le 18 Fév 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

Connectez-vous pour commenter.

Réponses (0)

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by