【问题标题】:Matlab: Structure with 6x6 matrices - how to get the average across the groupMatlab:具有 6x6 矩阵的结构 - 如何获得整个组的平均值
【发布时间】:2013-06-06 16:31:28
【问题描述】:

我有一个名为“数据”的结构,其中包含 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 名参与者的矩阵中每个单元格的平均值。因此,对于位置矩阵CB(1,1) 和矩阵中的所有其他位置,我将获得 100 个值的平均值。不幸的是,我看不到这是如何完成的,而且帮助功能也没什么帮助。任何帮助将不胜感激!

【问题讨论】:

    标签: matlab structure mean


    【解决方案1】:

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

    例如——

    Sum = A + B ; 
    Sum./2 ; 
    

    【讨论】:

      【解决方案2】:

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

      1. 将所需矩阵转换为元胞数组
      2. 将元胞数组重塑为 3D 矩阵
      3. 计算意味着跨 3 维

      代码:

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

      【讨论】:

        猜你喜欢
        • 2016-08-16
        • 2018-12-02
        • 1970-01-01
        • 2018-03-09
        • 2011-10-21
        • 1970-01-01
        • 1970-01-01
        • 2013-09-23
        • 1970-01-01
        相关资源
        最近更新 更多