Create structs with different number of columns
Mostrar comentarios más antiguos
Hi.
Assume that I have a parameter n, that has no constant value.
I want to cretae a single structure with n columns and m rows (m is constsnt) in each iteration of a loop. How can I do this? Note that in each loop, the parameter n is changed, so, the structures have no constant column.
Thanks in advance.
Respuestas (1)
Walter Roberson
el 4 de Nov. de 2020
This is not possible if you are referring to struct array and columns refers to the second dimension. For example if you had
s = struct('hello', 5);
s(1,5).hello = true;
Then you could not say that for s(2,:) you only want 3 columns.
You could store each struct inside a cell array.
5 comentarios
civil tech
el 4 de Nov. de 2020
Editada: civil tech
el 4 de Nov. de 2020
Walter Roberson
el 4 de Nov. de 2020
That question is incorrect. That is a scalar struct with four fields.
If you do not know n ahead of time then
fn = cellstr(char(randi(26,n,10)+'a'-1)))
Now you have n different field names and can assign to them using dynamic fields
s.(fn{K}) = "this is field " + K
civil tech
el 4 de Nov. de 2020
Walter Roberson
el 4 de Nov. de 2020
When you want to access the K'th field, then fn{K} holds its name.
The code might be rather different if you had a small maximum bound on n making it practical to define allowed field names in advance
civil tech
el 4 de Nov. de 2020
Categorías
Más información sobre Structures en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!