如何在MATLAB中将数组作为单个元素添加到另一个数组?

时间:2016-07-20 18:53:20

标签: matlab

我有一个返回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

1 个答案:

答案 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