2016-10-23 2 views

ответ

0

Как насчет использования свертки?

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) 
+0

, как я могу взять последний элемент в 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

+0

Я думаю, что если вы хотите добавить свой последний элемент в конце массива результатов, когда массив нечетен, вы можете принять решение с помощью инструкции if. – KKS

3

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 

Дополнительная индексация добавляет последний элемент для нечетной длины, так что окончательные среднего просто последний элемент ,

Смежные вопросы