Replacing value by the mean of the two nearest neighbors

18 ビュー (過去 30 日間)
Ludovica Maria Campagna
Ludovica Maria Campagna 2022 年 9 月 26 日
コメント済み: Alexis 2024 年 1 月 24 日
I have a column vector:
B = [20; 18; NaN; 25; 100; 15; -50; 23]
B = 8×1
20 18 NaN 25 100 15 -50 23
I need to pre-process data, so I want to:
  1. replace numbers greater than a certain value (e.g. numbers greater than 40) with the average of the two adjacent numbers.
  2. replace numbers smaller than a certain value (e.g. numbers smaller than -10) with the average of the two adjacent numbers.
  3. replace missing value with the average of the two adjacent numbers.
Thank you!
  2 件のコメント
Torsten
Torsten 2022 年 9 月 26 日
The result will depend on the order in which you perform these operations.
So order doesn't matter ?
Ludovica Maria Campagna
Ludovica Maria Campagna 2022 年 9 月 27 日
Yes, it doesn't matter!

サインインしてコメントする。

採用された回答

David Hill
David Hill 2022 年 9 月 26 日
B = [20; 18; NaN; 25; 100; 15; -50; 23; NaN; 15; -15; 30];
idx=find(isnan(B));
B(idx)=mean([B(idx-1),B(idx+1)],2);
idx=find(B<-10);
B(idx)=mean([B(idx-1),B(idx+1)],2);
idx=find(B>40);
B(idx)=mean([B(idx-1),B(idx+1)],2)
B = 12×1
20.0000 18.0000 21.5000 25.0000 20.0000 15.0000 19.0000 23.0000 19.0000 15.0000
  1 件のコメント
Alexis
Alexis 2024 年 1 月 24 日
This won't work if two consecutive values appear

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!

Translated by