Borrar filtros
Borrar filtros

create an array of single struct

9 visualizaciones (últimos 30 días)
Aditya Jain
Aditya Jain el 9 de Nov. de 2015
Comentada: Guillaume el 9 de Nov. de 2015
structElement = struct('a1','', 'a2', '', 'a3', '', 'a4', '');
s1 = repmat(structElement, [1,1]);
The above code gives a 1x1 struct
s2 = repmat(structElement, [2,1]);
The above code results in a 2x1 struct
If I do s2(1) it returns a struct
If I do s1(1) it returns a1.
How can I create s1, such that s1(1) will give me back a struct. Basically I want to create an array of single struct.
  2 comentarios
Adam
Adam el 9 de Nov. de 2015
Editada: Adam el 9 de Nov. de 2015
Both those syntaxes return the full struct. They do in Matlab R2015b that I am using.
s1 = structElement;
would do though. The repmat instruction is redundant.
Guillaume
Guillaume el 9 de Nov. de 2015
I'm fairly certain they've done so in every version of matlab (barring any bug).
It would never make any sense for an index to return a field of a structure. Particularly since everything in matlab, including scalar structures, is always an array.

Iniciar sesión para comentar.

Respuesta aceptada

Guillaume
Guillaume el 9 de Nov. de 2015
"If I do s1(1) it returns a1." No, it also returns a structure.
Both s1 and structElement are arrays of a single struct:
>>s1(1)
ans =
a1: ''
a2: ''
a3: ''
a4: ''
>>size(s1)
ans =
1 1
>>size(structElement)
ans =
1 1
Everything in matlab is an array. Scalars (numbers, structs, objects, etc.) are stored as array of size 1x1
  3 comentarios
Walter Roberson
Walter Roberson el 9 de Nov. de 2015
s2 = repmat({structElement}, [2,1]);
Guillaume
Guillaume el 9 de Nov. de 2015
You can create cell arrays of structures the same way you create cell arrays of numbers, by plain assignment, using arrayfun / cellfun, using num2cell, etc.
s = struct('a', {1 2 3 4 5}, 'b', ''); %creates a 1x5 array of struct
c = num2cell(s); %convert matrix to cell array
Another way:
s = struct('a', '', 'b', '');
c = cell(2, 5);
c(:) = {s};
However, if all the structures have the same fields, I don't see the point of storing them in a cell array.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Structures en Help Center y File Exchange.

Etiquetas

Aún no se han introducido etiquetas.

Community Treasure Hunt

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

Start Hunting!

Translated by