Borrar filtros
Borrar filtros

Taking mean of values whose difference is smaller

1 visualización (últimos 30 días)
BlueBee77
BlueBee77 el 27 de Oct. de 2016
Comentada: BlueBee77 el 28 de Oct. de 2016
I have an array like [81,144,146,214,261,267,339,458,580]. In this array there are some elements whose difference is smaller e.g., 144 and 146 also 261 and 267. I want to have only one value from each either 144 or 146 and either 261 or 267. I thought of comparing the elements and if difference is smaller the find mean of the two values and put in another array and move to the next element for comparison. But the code is not giving the results which i want. I would appreciate if anyone can help. Below is my code:
for i=1:length(res)
sub= abs(res(i+1)-res(i))
if sub<40
Newres(i)= mean(res(i+1),res(i));
i= i+2;
else
Newres(i)= res(i);
end
end

Respuesta aceptada

Adam
Adam el 27 de Oct. de 2016
Editada: Adam el 27 de Oct. de 2016
a = [81,144,146,214,261,267,339,458,580];
d = diff( a );
idx = find( d < 40 );
a( idx ) = ( a( idx ) + a( idx + 1 ) ) / 2;
a( idx + 1 ) = [];

Más respuestas (0)

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by