我的问题源于难以概念化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的绝对废话,所以我最初考虑解决这个问题的方法是考虑将循环中的矩阵分开,但我知道这将是混乱和低效的。否则,我失去了,因为我很难概念化矩阵本身。
有人可以提出行动计划吗?
答案 0 :(得分:0)
Ben Voigt的观点很明确,但人们可以做得更好。由于您要计算每组主题的平均值,因此我们将主题和组维度分开:
A = reshape(A, [5 5 7 17 3]);
现在你有了一个五维数组,其中最后两个维度是“subject”和“group”。让我们对主题进行平均分析:
m = mean(A, 4);
结果是一个尺寸为5 x 5 x 7 x 1 x 3的数组。平均后,第四个维度为singleton。我们可以摆脱这个:
m = squeeze(m);
之后,时间点t
和组g
的平均相关矩阵为m(:, :, t, g)
。