2016-07-20 13 views
1

Ich habe eine Funktion, die Arrays von Struct-Arrays zurückgibt. Ich möchte diese Funktion wiederholt aufrufen und den zurückgegebenen Wert an ein anderes Array anhängen, aber ich möchte den zurückgegebenen Wert als einzelnes Element des größeren Arrays anfügen. cat() scheint nicht für mich zu arbeiten, da es jedes Element des zurückgegebenen Werts einzeln an das größere Array anfügt.Wie fügt man ein Array als einzelnes Element zu einem anderen Array in MATLAB hinzu?

Im Zusammenhang mit dem folgenden Beispiel, wie füge ich foo zu bar als ein einzelnes Element von bar hinzu?

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 

Antwort

3

Wenn ich Ihre Frage richtig bin zu interpretieren, würden Sie jedes Element in dieser „Array“ mögen diese Anordnung von Strukturen zu sein, die von der Funktion zurückgegeben wird. Was Sie in Ihrem Code unten tun, ist einfach ein größeres Struktur-Array zu erstellen und jedes der Elemente im Struktur-Array an dieses größere Struktur-Array anzuhängen.

Sie möchten wahrscheinlich stattdessen cell arrays verwenden. Einfach ausgedrückt, ändern Sie bar = []; zu bar = {};. Wenn Sie fertig sind, können Sie jedes Element zugreifen, indem geschweiften Klammern (dh {}) und der Index der, wo Sie zugreifen möchten:

% 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

Ja, für jedermann von Anthere Sprache kommen, wo Arrays von Objekten indiziert werden (Arrays innerhalb von Arrays werden als einzelne Objekte und nicht als Matrix "row" oder was auch immer interpretiert. Das Zellen-Array ist Ihr Retter. – Anonymous

+0

@jphollowed Danke :) Ein upvote würde nicht kommen: D ... optional natürlich. – rayryeng

+0

Ah, hier nimm es – Anonymous

Verwandte Themen