如何在MATLAB中访问嵌套在单元数组中的结构数组的所有字段元素?

如何在MATLAB中访问嵌套在单元数组中的结构数组的所有字段元素?,matlab,struct,cell-array,Matlab,Struct,Cell Array,下面是为这个问题创建示例单元格数组的代码: 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 e

下面是为这个问题创建示例单元格数组的代码:

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变量。有什么想法吗

两种可能的解决办法: 第一: 如果单元格数组中的所有结构都具有相同的字段,则:

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

注意:如果某些字段为空(
[]
),这些方法可能无法按预期工作

一句话:

.

谢谢你给我写的关于i和j的便条。我肯定发现调试更容易了,因为我没有将它们用作循环计数器。不幸的是,结构没有所有相同的字段。cellfun方法非常有效!谢谢