【问题标题】:Best way to calculate means within a MATLAB array based on other values in the array?根据数组中的其他值计算 MATLAB 数组中均值的最佳方法?
【发布时间】:2015-11-16 20:24:14
【问题描述】:

我有一个如下所示的 MATLAB 双精度数组:

YEAR    QUARTER ID  VAR1    VAR2
2000    1       1   50      20
2000    1       2   20      34
2000    2       1   43      33

它持续了很多年和很多个季度,每个季度和每年的行数变化莫测。我想计算 Var1 上 2000 Q1 的平均值,然后计算 Var1 上 2000 Q2 的平均值,依此类推。

我意识到我可以使用循环轻松地做到这一点,但怀疑这不是最优雅或最有效的编程方式。

【问题讨论】:

    标签: arrays matlab mean


    【解决方案1】:

    是的,有:accumarray:

    data = [ 2000    1       1   50      20
             2000    1       2   20      34
             2000    2       1   43      33]; %// example data
    [u, ~, v] = unique(data(:, [1 2]), 'rows'); %// get groups (u) and integer labels (v)
    result_mean = accumarray(v, data(:,4), [], @mean); %// mean within each group
    result = [u result_mean]; %// built result in matrix form
    

    这给了

    result_mean =
        35
        43
    result =
            2000           1          35
            2000           2          43
    

    【讨论】:

      猜你喜欢
      • 2021-08-17
      • 1970-01-01
      • 2021-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      相关资源
      最近更新 更多