How can I use a logical array to remove and replace values in a corresponding data array?

30 ビュー (過去 30 日間)
I have an array A (1280 x 1024) that has some rogue values that I want to remove and replace with a linear interpolation of the two nearest neighbouring elements (that are not rogue) in the column. (I call them 'rogue' rather than outliers because the values can appear ok statistically.)
I have a logical array TF (1280 x 1024) whose elements are true if the corresponding element in A is rogue.
How do I do create the corrected array, B?
Example (5 x 3 array shown for simplicity):
TF = 5×3 logical array
0 0 0
0 0 0
0 0 1
0 1 0
0 0 0
A = 5×3
54 46 32
48 60 50
50 51 59
51 49 48
45 55 66
I want the output to be:
B = 5×3
54 46 32
48 60 50
50 51 49
51 53 48
45 55 66
The function 'filloutliers(A,'linear')' is close but that function seems to generate its own TF array whereas I want to implement the TF array that I already have.
I'm using the R2020a version of Matlab. Thank you.

採用された回答

Star Strider
Star Strider 2021 年 11 月 17 日
See if the fillmissing funciton produces the desired result —
TF = [0 0 0
0 0 0
0 0 1
0 1 0
0 0 0];
TF = TF == 1; % Create Logical Array From Numeric Array
A = [54 46 32
48 60 50
50 51 59
51 49 48
45 55 66];
A(TF) = NaN; % Set 'TF' Entries To 'NaN'
A = fillmissing(A, 'nearest')
A = 5×3
54 46 32 48 60 50 50 51 48 51 55 48 45 55 66
.
  2 件のコメント
Steve Francis
Steve Francis 2021 年 11 月 17 日
Thanks for your answer, Star Strider. This works if I replace 'nearest' with Matt's suggestion of 'linear'.
Appreciate the comments in the code.
Star Strider
Star Strider 2021 年 11 月 17 日
As always, my pleasure!
.

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

その他の回答 (1 件)

Matt J
Matt J 2021 年 11 月 17 日
編集済み: Matt J 2021 年 11 月 17 日
Perhaps as follows,
A(TF)=nan;
A=fillmissing(A,'linear');
  2 件のコメント
Steve Francis
Steve Francis 2021 年 11 月 17 日
Thanks for your answer, Matt. This works.
Matt J
Matt J 2021 年 11 月 17 日
You're welcome, but please Accept-click the answer to indicate that it worked.

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

カテゴリ

Help Center および File ExchangeDirection of Arrival Estimation についてさらに検索

製品


リリース

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by