У меня есть массив следующим образом:Средних из каждых двух столбцов в массиве
arr=[2 3 4 5 6 7 8 9 1 2 3 4];
Как я могу получить средние каждые два столбцов, так что результат:
ans=[2.5 4.5 6.5 8.5 ...];
У меня есть массив следующим образом:Средних из каждых двух столбцов в массиве
arr=[2 3 4 5 6 7 8 9 1 2 3 4];
Как я могу получить средние каждые два столбцов, так что результат:
ans=[2.5 4.5 6.5 8.5 ...];
Как насчет использования свертки?
arr=[2 3 4 5 6 7 8 9 1 2 3 4];
arr2=[1 1];
A=conv(arr,arr2)/2;
mean2=A(2:2:end-1)
plot(mean2)
Если номер массива не всегда даже, и вы хотите добавить последний элемент в конце результирующего массива, когда число массива нечетно,
arr=[2 3 4 5 6 7 8 9 1 2 3 4 6];
arr2=[1 1];
A=conv(arr,arr2)/2;
if mod(length(arr),2) == 1;
mean2=[A(2:2:end-1) arr(end)]
else
mean2=[A(2:2:end-1)]
end
plot(mean2)
Convert она в матрицу из двух строк с использованием reshape
, sum
, и деления на 2:
>> arr=[2 3 4 5 6 7 8 9 1 2 3 4];
>> arrbar = sum(reshape(arr,2,[]))/2
arrbar =
2.5000 4.5000 6.5000 8.5000 1.5000 3.5000
Дополняя раствор на ваши комментарии к this answer, мы можем защититься от нечетной длины с небольшим количеством индексации трюком:
>> arrbar = sum(reshape([arr,arr(end:end-(mod(end,2)==0))],2,[]))/2
arrbar =
2.5000 4.5000 6.5000 8.5000 1.5000 3.5000
>> arr=[2 3 4 5 6 7 8 9 1 2 3 4 6];
>> arrbar = sum(reshape([arr,arr(end:end-(mod(end,2)==0))],2,[]))/2
arrbar =
2.5000 4.5000 6.5000 8.5000 1.5000 3.5000 6.0000
Дополнительная индексация добавляет последний элемент для нечетной длины, так что окончательные среднего просто последний элемент ,
, как я могу взять последний элемент в case У меня есть один дополнительный номер в массиве, например: arr = [2 3 4 5 6 7 8 9 1 2 3 4 6]; так что среднее значение 2 = 2.5000 4.5000 6.5000 8.5000 1.5000 3.5000 6]; – ryh12
Я думаю, что если вы хотите добавить свой последний элемент в конце массива результатов, когда массив нечетен, вы можете принять решение с помощью инструкции if. – KKS