Effacer les filtres
Effacer les filtres

Taking mean of values whose difference is smaller

1 vue (au cours des 30 derniers jours)
BlueBee77
BlueBee77 le 27 Oct 2016
Commenté : BlueBee77 le 28 Oct 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

Réponse acceptée

Adam
Adam le 27 Oct 2016
Modifié(e) : Adam le 27 Oct 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 ) = [];
  1 commentaire
BlueBee77
BlueBee77 le 28 Oct 2016
Thanks alot, it solved my problem.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by