Matlab:具有6x6矩阵的结构 - 如何获得整个组的平均值

时间:2013-06-10 22:13:50

标签: matlab structure mean

我有一个名为'data'的结构,有100个条目,每个条目对应一个实验的参与者。 100个条目中的每一个包含多个6x6矩阵,给出不同的值。

例如,我的第一个参与者的矩阵示例是:

data.p001.matrixCB

   18.9737   17.0000   14.2829   12.4499   11.7898   10.0995
   18.1384   16.0000   13.4907   11.7898   11.2250   10.3441
   14.7986   12.5300   11.7898   11.7473   12.2066    9.3808
   14.3527   13.4536   12.9615   13.3417   12.7279   11.7047
   18.0278   17.8885   17.6068   17.4642   17.1464   16.6132
   24.1661   24.7790   23.7697   23.3880   22.6495   23.8537

...这是具有类似设置的结构中的100个条目之一。

我希望在100位参与者中获得矩阵中每个单元格的平均值。所以我会得到位置矩阵C(1,1)中100个值的平均值,以及矩阵中的所有其他位置。不幸的是,我无法看到这是如何完成的,并且帮助功能不太有用。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

您可以将所有100个矩阵加总为Sum,然后除以100 - Sum./100,然后每个单元格代表每个索引上所有100个单元格的平均值。

例如 -

Sum = A + B ; 
Sum./2 ; 

答案 1 :(得分:1)

结构可能是一种痛苦。为避免输入大量代码,您可以采用以下方法:

  1. 将所需的矩阵转换为单元格数组
  2. 将单元格阵列重塑为3D矩阵
  3. 计算意味着跨越第三维
  4. 此代码:

    Mcell = arrayfun(@(x) data.(sprintf('p%03d',x)).matrixCB, 1:100, 'uni', 0);
    M = mean( reshape(cell2mat(Mcell), 6, 6, []), 3 );