Как найти среднее значение соседних строк в матрице? - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь найти mean каждой соседней строки в матрице:

x=
[
1 2 3 4;
2 3 1 0;
1 0 1 0;
3 1 0 1;
]

Проще говоря, мне нужна результирующая матрица, которая вычисляет mean строки 1 и 2, а затем 3 и 4, что выглядит следующим образом:

y=
[
2;
0.875
] 

Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Вы можете изменить свой массив и поместить каждую строку в одну и ту же строку:

octave:6> [n,m] = size(x);
octave:7> mean(reshape(x.', m*2, n/2))
ans =

   2.00000   0.87500

Из-за транспонирования результат представляет собой вектор строки, вы можете просто транспонировать его обратно, если вы действительно хотите иметьвектор столбца.

На достаточно новом MATLAB (к которому у меня нет доступа) вы сможете использовать несколько входных аргументов для параметра измерения mean, что позволит вам использовать многомерные массивыв этом случае:

[n,m] = size(x);
mean(reshape(x, [2, n/2, m]), [1, 3]) % should leave n/2-sized dimension

По понятным причинам вышеупомянутое не проверено.

0 голосов
/ 25 января 2019

Вы можете рассчитать среднее число строк и, чем среднее значение двух последовательных строк

   z=mean(x,2)
z =

   2.50000
   1.50000
   0.50000
   1.25000

octave:22> y=((z(1:2:end)+z(2:2:end))/2)
y =

   2.00000
   0.87500
...