10

この質問のセル配列の例を作成するコードは次のとおりです。

mycell = cell([5,1]);
for i = 1 : size(mycell)
    mystruct = struct();
    mycell{i} = mystruct;
    mycell{i}.field1 = i;
end

mycell{:}.field1やりたいことをやろうと思っていたのですが、エラーになります。次のforループを使用できます。

for i = 1 : size(mycell)
    mycell{i}.field1
end

しかし、mycell.field1のすべての要素をプロットのy変数として使用したいので、より単純またはより洗練されたソリューションをお勧めします。何か案は?

4

1 に答える 1

16

2つの可能な解決策:

初め:

セル配列内のすべての構造体に、次のフィールドと同じフィールドがある場合:

mycell = [ mycell{:} ]; % convert cell array to struct array
y = [ mycell(:).filed1 ]; % get the values

2番:

別の方法はcellfun

y = cellfun( @(x) x.field1, mycell );  

mycell{ii}.filed1すべてがスカラーであると仮定します。そうでない場合は、に追加'UniformOutput', falseする必要がありますcellfun

注:一部のフィールドが空の場合([])、これらのメソッドは期待どおりに機能しない可能性があります。

1つの小さな注意:Matlabで変数として使用
することはお勧めできませんij

于 2013-02-14T19:52:50.497 に答える