如果数字相同,则计算平均值

时间:2018-08-21 23:07:54

标签: matlab average mean

如果第一列号相同,我想计算平均值。例如:

M = [ 2  0.99   0.15    0.60    0.12    0.76    0.16    0.81    0.02    0.75    0.32
      2  0.17   0.38    0.34    0.02    0.74    0.67    0.75    0.92    0.23    0.81
      2  0.26   0.16    0.30    0.29    0.74    0.89    0.12    0.65    0.06    0.79
      3  0.40   0.76    0.45    0.32    0.11    0.52    0.53    0.93    0.77    0.85
      3  0.07   0.87    0.42    0.65    0.68    0.70    0.33    0.16    0.67    0.51
      3  0.68   0.35    0.36    0.96    0.46    0.15    0.55    0.92    0.72    0.64
      3  0.40   0.69    0.56    0.94    0.21    0.95    0.40    0.79    0.64    0.95
      4  0.98   0.29    0.74    0.46    0.10    0.54    0.42    0.58    0.42    0.44
      4  0.40   0.53    0.42    0.24    0.82    0.68    0.18    0.44    0.39    0.06
      4  0.62   0.83    0.43    0.76    0.18    0.04    0.26    0.26    0.82    0.87 ]

Out=[ 2  0.47   0.23    0.41    0.15    0.75    0.57    0.56    0.53    0.35    0.64
      3  0.39   0.67    0.45    0.72    0.37    0.58    0.45    0.70    0.70    0.74
      4  0.67   0.55    0.53    0.49    0.37    0.42    0.28    0.43    0.54    0.46 ]

1 个答案:

答案 0 :(得分:0)

G = findgroups(M(:,1 )); 
Out = [unique(M(:,1)) splitapply(@mean, M(:,2:end), G)]

G = findgroups(A)返回G,它是从分组变量A创建的组号向量。这里G = findgroups(M(:,1))表示从矩阵中选取第一列。

Y = splitapply(func,X,G)将X分成G指定的组,并将函数func应用于每个组。