How to insert NaNs on an array based on a condition some other array

1 view (last 30 days)
I have an array
A= [210,210,210,220,220,220,240]
B= [210,nan,nan,220,nan,nan,240]
C=[1,2,4,5,7,8,10]
and now i remove NaNs from B
index= find(~isnan(B))
and apply this index to B and C
New
B= [210,220,240]
and new
C=[1,5,10]
and now my condition is if
diff(B)<=10 & diff(C)<=4
, i insert NaNs between these indexes in A
so my final A is:
A= [210,210,210,220,nan,nan,240]
Can you please me do this?
  5 Comments
Jalaj Gambhir
Jalaj Gambhir on 27 Jul 2020
Yeah, but how are you getting indices 5 & 6 to insert nan in array A, based on this condition? "diff(B)<=10 & diff(C)<=4" Please frame your question in a better way.

Sign in to comment.

Answers (1)

Matt J
Matt J on 27 Jul 2020
Using group1s from the File Exchange
index = ~isnan(B);
nangroups = group1s(~index);
diffg = find(diff(B(index))<=10 & diff(C(index))<=4);
mask=any( nangroups==diffg(:) , 1)
A(mask)=nan

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!