Усреднение подмножеств определенных размеров в 4D матрице в MATLAB
Моя проблема связана с трудностями концептуализации 4D матриц (в отличие от 3D). В MATLAB у меня есть данные, хранящиеся в матрице 5x5x7x54. Часть 5х5 симметрична по диагонали и представляет корреляции в активности между 5 областями мозга. "7" представляет 7 временных точек, а "54" представляет 54 субъекта, по 17 в каждой из 3 групп (первые 17 - это группа 1, следующие 17 - это группа 2, последние 17 - это группа 3).
Я хотел бы усреднить каждое значение корреляции по участнику в каждой группе, но я хочу сделать это отдельно для каждого момента времени. Например, я хочу получить средние значения корреляции для первых 17 субъектов для момента времени 1, затем для момента времени 2 и т. Д. Затем я хочу получить средние значения корреляции для средних 17 предметов для момента времени 1 и т. Д.
В сумме у меня будет 7 матриц 5х5 для каждой группы (итого 21 матрица 5х5).
Я абсолютный дерьм в MATLAB, поэтому мой первоначальный способ решения этой проблемы - думать о том, чтобы просто разделить матрицу на циклы, но я знаю, что это будет и запутанно, и неэффективно. В противном случае, однако, я супер потерян, потому что мне очень трудно осмыслить саму матрицу.
Кто-нибудь может предложить план действий?
1 ответ
Комментарий Бена Фойгта уместен, но можно сделать немного лучше. Поскольку вы хотите вычислить среднее значение для каждой группы предметов, давайте разделим измерения предмета и группы:
A = reshape(A, [5 5 7 17 3]);
Теперь у вас есть пятимерный массив, где последние два измерения - это "субъект" и "группа". Давайте усредним по предметам:
m = mean(A, 4);
В результате получается массив с размером 5 x 5 x 7 x 1 x 3. После усреднения четвертое измерение является одиночным. Мы можем избавиться от этого:
m = squeeze(m);
После этого средняя корреляционная матрица для момента времени t
и группа g
является m(:, :, t, g)
,