In MATLAB möchte ich ein verschachteltes Feld für jeden Index einer 1 x n-Struktur (eine nicht skalare Struktur) extrahieren und die Ausgabe als ein 1 x n-Zellenarray erhalten. Als ein einfaches Beispiel an, dass ich mit der folgenden Struktur s starten:In MATLAB: Wie sollten verschachtelte Felder einer Struktur in ein Zellenfeld konvertiert werden?
s(1).f1.fa = 'foo';
s(2).f1.fa = 'yedd';
s(1).f1.fb = 'raf';
s(2).f1.fb = 'da';
s(1).f2 = 'bok';
s(2).f2 = 'kemb';
Ich kann meinen Wunsch 1 x 2 Zellenarray C unter Verwendung eines produzieren for-Schleife:
n = length(s);
c = cell(1,n);
for k = 1:n
c{k} = s(k).f1.fa;
end
Wenn ich tun wollte analog für ein nicht verschachteltes Feld, zum Beispiel f2, dann könnte ich "vectorize" die Operation (siehe this question), das Schreiben einfach:
c = {s.f2};
Derselbe Ansatz scheint jedoch für verschachtelte Felder nicht zu funktionieren. Was sind dann Möglichkeiten, die obige For-Schleife zu vektorisieren?