2016-07-20 7 views
1

私は構造体配列の配列を返す関数を持っています。私はこの関数を繰り返し呼び出すと、返された値を別の配列に追加しますが、返された値を大きな配列の単一の要素として追加したいと思います。 cat()は、返された値のすべての要素を大きな配列に個別に追加するため、私にとってはうまくいかないようです。配列をMATLABの別の配列に単一の要素として追加する方法は?

barの単一要素としてfoobarを追加するにはどうすればよいですか?

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 

答えて

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 
+1

はい、誰でも配列はオブジェクト(でインデックス化されている葯の言語から来て配列内の配列は、行列「行」などではなく単一のオブジェクトとして解釈されます)、セル配列はあなたの救世主です。 – Anonymous

+0

@jphollowedありがとう:) upvoteはうんざりしないだろう:D ...もちろんオプション。 – rayryeng

+0

ああ、ここでそれを取る。 – Anonymous

関連する問題