我有一个返回struct数组数组的函数。我想重复调用此函数,将返回的值附加到另一个数组,但我想将返回的值作为较大数组的单个元素追加。 cat()
似乎不适合我,因为它会将返回值的每个元素分别附加到较大的数组中。
在以下示例的上下文中,如何将foo
添加到bar
作为bar
的单个元素?
foo(1).id = 1;
foo(1).v = 'a';
foo(2).id = 2;
foo(2).v = 'b';
bar = [];
bar = cat(1, bar, foo); % Adds each element of foo individually
答案 0 :(得分:3)
如果我正确地解释你的问题,你希望这个“数组”中的每个元素都是这个函数返回的结构数组。您在下面的代码中所做的只是创建一个更大的结构数组,并将结构数组中的每个元素附加到这个更大的结构数组中。
您可能想要使用cell arrays。简而言之,将bar = [];
更改为bar = {};
。完成后,您可以使用大括号(即{}
)和您要访问的位置的索引来访问每个元素:
% Your example data
foo(1).id = 1;
foo(1).v = 'a';
foo(2).id = 2;
foo(2).v = 'b';
% Add another one for proof of concept
foo2(1).id = 3;
foo2(1).v = 'c';
foo2(2).id = 4;
foo2(2).v = 'd';
bar = {}; % Change
bar = cat(1, bar, foo);
bar = cat(1, bar, foo2); % Add another nested structure array in
baz = bar{1}; % Get the first nested structure array
baz2 = bar{2}; % Get the second nested structure array