【发布时间】:2018-01-08 06:15:37
【问题描述】:
我有一个函数可以处理单个数据集,并将结果指标存储在数据集中,如下所示:
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);
【问题讨论】:
-
为了让您的问题更清楚,能否请您添加代码,包括您想用不带循环的代码替换的循环?
-
更新了一个可以工作的循环解决方案的例子,不幸的是这是站不住脚的,因为我有 256 个输出指标。
-
更好的解决方案(自 R2013 左右以来)是使用
table。它更有效,因为每个表列都是一个数组。对数据应用各种操作也更容易。