这是为此问题创建示例单元格数组的代码:
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变量。有任何想法吗?
答案 0 :(得分:15)
如果单元格数组中的所有结构都具有与您相同的字段:
mycell = [ mycell{:} ]; % convert cell array to struct array
y = [ mycell(:).filed1 ]; % get the values
另一种方法使用cellfun
y = cellfun( @(x) x.field1, mycell );
假设所有mycell{ii}.filed1
都是标量,否则您需要将'UniformOutput', false
添加到cellfun
。
注意:如果某些字段为空([]
),则这些方法可能无法正常工作。
一句小话:
it is not a good practice to use i
and j
as variables in Matlab