allData
Nx1のセル配列があります。各セルには、names
プロパティを持つ構造が含まれています(名前はカスタムオブジェクトですが、必要に応じて文字列のセル配列と考えてください)。すべての名前を含む単一のセル配列を作成したいと思います。たとえば、N = 3の場合、つまりallData
3x1セル配列の場合、次のようにして私の目標を達成できます。
A = allData{1};
B = allData{2};
C = allData{3};
allNames = [A.names B.names C.names];
このアプローチの問題は、Nが大きく、入力に応じて変化することです。そのため、を使用してこれを行うための賢い方法があることを期待してcellfun
いますが、私が試したすべてが失敗します(たとえば、うまくいきません)。allNames = [cellfun(@(x) {x.names}, allData)];
)。
更新:提案された解決策のおかげで、すべてを1つのセル配列にまとめることができます。各セルにはセル配列が含まれています。ここでの私の目標は、これらを連結することです。多かれ少なかれ、私が持っているのは:
{A.names B.names C.names}
そして、私が欲しいものと得られないように見えるものは
{A.names{1} A.names{2} ... A.names{end} B.names{1} ... B.names{end} ...}
解決策:以下の各回答の一部が必要だったので、これが私のために働いた解決策です:
アンドリュー・ラザロから:
allNames = arrayfun(@(x) x.name, [allData{:}], 'UniformOutput', false);
次に、gnoviceから:
allNames = vertcat(allNames{:});
両方に感謝します!!