首先,我认为您的意思是定义一个多维结构:
a(1).field1=[1:5];
a(2).field1=[1:6];
a(1).field2=[2:8];
a(2).field2=[2:9];
(注意圆括号而不是花括号。花括号会给你一个包含两个struct
s 的单元格数组)。现在,您寻求的价值观:
max_mean = cellfun(@(x)[max(x) mean(x)], {a.field1}, 'UniformOutput', false);
这样做,将为您提供a(1).field1
in的最大值和平均值,以及inmax_mean{1}
的最大值和平均值。a(2).field1
max_mean{2}
对所有字段执行此操作可以通过将cellfun
上述嵌套在另一个中来完成cellfun
:
max_means = cellfun(@(x) ...
cellfun(@(y)[max(y) mean(y)], {a.(x)}, 'UniformOutput', false), ...
fieldnames(a), 'UniformOutput', false);
以便
max_means{1}{1} % will give you the max's and means of a(1).field1
max_means{1}{2} % will give you the max's and means of a(2).field1
max_means{2}{1} % will give you the max's and means of a(1).field2
max_means{2}{2} % will give you the max's and means of a(2).field2
使用这些功能,直到找到适合您需求的东西。