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!