How can I use a logical array to remove and replace values in a corresponding data array?
이전 댓글 표시
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.
채택된 답변
추가 답변 (1개)
Perhaps as follows,
A(TF)=nan;
A=fillmissing(A,'linear');
댓글 수: 2
Steve Francis
2021년 11월 17일
Matt J
2021년 11월 17일
You're welcome, but please Accept-click the answer to indicate that it worked.
카테고리
도움말 센터 및 File Exchange에서 Interpolation of 2-D Selections in 3-D Grids에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!