我有一个函数可以处理单个数据集,并将结果指标存储在数据集中,如下所示:
trial_data.output_metric_a.value_1 = 2;
...
trial_1 = trial_data;
此函数应用于许多不同的试验并存储为数组结构:
% trial_1.output_metric_a.value_1 = 4
% trial_2.output_metric_a.value_1 = 2
trials = [trial_1 ; trial_2];
是否可以得到子字段值的平均值和标准差 没有遍历数据结构?
理想情况下:
mean_trials = mean(trials)
mean_trials.output_metric_a.value_1 == 3 % true
解决这个问题的可能的循环实现可能是(显然这还有很多不足之处):
output_metric_a_value_1 = [];
...
for i:length(trials)
output_metric_a_value_1(end+1) = trials(i).output_metric_a.value_1;
... % For each output metric and value
end
mean_trials.output_metric_a.value_1 = mean(output_metric_a_value_1);
最佳答案
您可以将主结构体转换为单元格,然后对内容进行操作:
% your data base:
trial_1.output_metric_a.value_1 = 4
trial_2.output_metric_a.value_1 = 2
trials = [trial_1 ; trial_2];
% convert to cell:
Ctrials=struct2cell(trials);
Atrials=[Ctrials{:}];
meanTrials=mean([Atrials.value_1])
meanTrials=
3
关于arrays - 是否可以在不循环的情况下对 Matlab 中的结构子字段数组进行平均?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48145108/