Initializing Array of Structures/Objects
81 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Sven
el 5 de Sept. de 2015
Comentada: mary
el 17 de Nov. de 2022
I simply want to set each struct in a struct-array. I set structarray to [] as it is an object property in my case, where it is being initialized as emtpy array. My first approach looks like:
structarray = [];
for i=1:10
structarray(i) = struct('index', i);
end
I get the following error: 'The following error occurred converting from struct to double: Error using double Conversion to double from struct is not possible.'
I can use an if else check and set the first element by:
structarray = struct('index', i);
On http://www.ece.northwestern.edu/CFS/local-apps/matlabhelp/base/relnotes/matlab/matlab1212.html it reports that setting structarray(1) throws this error.
Is there any easy way to write this straightforward similar to my code above?
0 comentarios
Respuesta aceptada
Geoff Hayes
el 5 de Sept. de 2015
Sven - why not use arrayfun to apply a function to each element in the array. In this case, your function would create a struct with a single field called index where its value is assigned its position/index within the array. The following should do what you require
myStructArray = arrayfun(@(x)struct('index',x),1:10)
Note how the first input to arrayfun is the function that creates the struct given an input parameter. The value of each parameter is determined from the second input to arrayfun - an array of indices from one to ten.
Try the above and see what happens!
3 comentarios
Bruno Luong
el 17 de Nov. de 2022
myStructArray = arrayfun(@(i1,i2)struct('index1',i1,'index2',i2),zeros(1,10),zeros(1,10))
mary
el 17 de Nov. de 2022
I found the answer:
myStructArray = arrayfun( @(x)struct('index1',x,'index2',x),zeros(1,10) )
Más respuestas (1)
Walter Roberson
el 6 de Sept. de 2015
structarray = struct('index', repmat({[]}, 1, 10));
0 comentarios
Ver también
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!