【问题标题】:Averaging subsets of certain dimensions in a 4D matrix in MATLAB在 MATLAB 中平均 4D 矩阵中某些维度的子集
【发布时间】:2015-07-31 00:26:49
【问题描述】:

我的问题源于难以概念化 4D 矩阵(相对于 3D)。 在 MATLAB 中,我将数据存储在 5x5x7x54 矩阵中。 5x5 部分在对角线上对称,代表 5 个大脑区域之间的活动相关性。 “7”代表7个时间点,“54”代表54名受试者,其中3组各17名(前17人为Group1,接下来17人为Group2,最后17人为Group3)。

我想对每个组中参与者的每个相关值进行平均,但我想对每个时间点分别执​​行此操作。例如,我想要时间点 1 的前 17 个受试者的平均相关值,然后是时间点 2 的平均相关值,等等。然后我想要时间点 1 的中间 17 个受试者的平均相关值,等等。

总之,每组我会有 7 个 5x5 矩阵(所以总共有 21 个 5x5 矩阵)。

我在 MATLAB 上绝对是垃圾,所以我最初考虑解决这个问题的方法是考虑将矩阵划分为循环,但我知道这既令人困惑又效率低下。但是,否则,我会非常迷茫,因为我很难将矩阵本身概念化。

谁能提出行动计划?

【问题讨论】:

  • 使用dim 参数到mean 在第四维度上进行平均?喜欢mean(A(:,:,:,1:17), 4)
  • 这似乎可以按我的意愿工作,非常感谢。我想我担心使用 dim 参数会以某种方式忽略第三维信息,所以我最终得到了一个 5x5 的平均值矩阵,尽管我不确定我为什么这么认为。

标签: matlab matrix 4d


【解决方案1】:

Ben Voigt 的评论很中肯,但可以做得更好。由于您要计算每组主题的平均值,因此让我们将主题和组维度分开:

A = reshape(A, [5 5 7 17 3]);

现在您有了一个五维数组,其中最后两个维度是“主题”和“组”。让我们对各个科目进行平均:

m = mean(A, 4);

结果是一个维度为 5 x 5 x 7 x 1 x 3 的数组。平均后,第四维度是 singleton。我们可以摆脱它:

m = squeeze(m);

之后,时间点t 和组g 的平均相关矩阵为m(:, :, t, g)

【讨论】:

  • 这对我计划的其他操作很有帮助,非常感谢。
猜你喜欢
  • 2015-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-02
  • 2011-10-21
  • 1970-01-01
  • 2015-10-29
  • 1970-01-01
相关资源
最近更新 更多