adding a struct to struct array
이전 댓글 표시
I like to return mutltiple outputs from a function as a struct. Many times I call the function in a loop and I want to gather the results for all iterations as a struct array. Then I can, for example, access all individual fields using a bracket.
My question is how to add the return-structs to the struct array so each member of the array has the return-struct fields.
This does not work:
>> sarry = struct([]);
>> sarry(end+1) = myfunc(foo);
??? Subscripted assignment between dissimilar structures.
I wrote a function that does what I want--see below.
Is there an easier way to do it?
Bob
p.s. here is my function:
function sarray = AddStruct2StructArray(sarray,s)
fnames = fieldnames(s);
sarray(end+1).(fnames{1}) = s.(fnames{1});
if length(fnames) > 1
for k = 2:length(fnames)
sarray(end).(fnames{k}) = s.(fnames{k});
end
end
p.p.s. I ran across this idea but it assumes that the inputs to the function in different iterations of the loop are the integers. It could be extended but does not allow other code within the loop.
T = arrayfun(@(K) CreateAsStruct(K), 1:n, 'UniformOutput',0);
array = horzcat(T{:});
clear T
채택된 답변
추가 답변 (1개)
카테고리
도움말 센터 및 File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!