arrays - 是否可以在不循环的情况下对 Matlab 中的结构子字段数组进行平均?

标签 arrays matlab struct

我有一个函数可以处理单个数据集,并将结果指标存储在数据集中,如下所示:

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/

相关文章:

c# - C# 中存储数组的位置

pdf - 白色网格将 MATLAB 图保存为 EPS 或 PDF

c - 与 C 中的结构和指针相关的问题

c - 我将如何使用数组来打印图像?

python - 跨多个轴的点积

javascript - 我有一个应该是对象的数组

c++ - 从 C++ 调用 Matlab 函数

Matlab 不返回特征向量的正交矩阵

c++ - 通过指向指针的指针访问结构元素的地址

c - 如何跨多个翻译单元共享不透明类型?