Wie macht man verketten cell-arrays, die Teil eines cell Arrays in MATLAB?

Habe ich ein cell-array allData die Nx1. Jede Zelle enthält eine Struktur mit einem names Eigenschaft (der name ist ein benutzerdefiniertes Objekt, sondern betrachten Sie es als ein cell array mit strings, wenn Sie möchten). Ich möchte eine einzelne Zelle ein array mit allen Namen. Zum Beispiel, wenn N=3, so dass allData ist eine 3x1-cell-array, dann werden die folgenden erledigen würde, mein Ziel:

A = allData{1};
B = allData{2};
C = allData{3};

allNames = [A.names B.names C.names];

Das problem bei diesem Ansatz ist, dass N groß ist und ändert sich je nach Eingabe, also hoffe ich, dass es ist ein cleverer Weg, dies zu tun mit cellfun, aber alles, was ich versucht habe, ein Fehler auf (z.B. es nicht zu tun allNames = [cellfun(@(x) {x.names}, allData)];).

UPDATE: Dank der vorgeschlagenen Lösungen, die ich bekommen kann, alles in ein cell-array, wobei jede Zelle enthält ein cell-array. Mein Ziel ist es hier zu verketten diese. Mehr oder weniger das, was ich habe, ist:

{A.names B.names C.names} 

und was ich will und kann nicht scheinen zu bekommen, ist

{A.names{1} A.names{2} ... A.names{end} B.names{1} ... B.names{end} ...}

LÖSUNG:
Ich brauchte die Stücke von jeder Antwort unten, also hier die Lösung, die für mich gearbeitet:

vom Andrew Lazarus:

allNames = arrayfun(@(x) x.name, [allData{:}], 'UniformOutput', false);

dann, aus gnovice:

allNames = vertcat(allNames{:});

Danke an beide!!

  • Sind die Strukturen Skalare (d.h. 1-von-1), oder können Sie eine Struktur-arrays?
  • Ja, die Strukturen sind 1x1.
InformationsquelleAutor PengOne | 2011-05-16
Schreibe einen Kommentar