Taking mean of values whose difference is smaller

3 Ansichten (letzte 30 Tage)
BlueBee77
BlueBee77 am 27 Okt. 2016
Kommentiert: BlueBee77 am 28 Okt. 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

Akzeptierte Antwort

Adam
Adam am 27 Okt. 2016
Bearbeitet: Adam am 27 Okt. 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 ) = [];

Weitere Antworten (0)

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by