Replace some values to NaN using a condition found in a second vector

6 Ansichten (letzte 30 Tage)
Hello everyone!
I am trying to clean a time series and I am having some trouble.
I have a variable DOY, which contains the day of the year and a variable H, which contains the data I am trying to clean. They are both 1200x1 in size.
Example: Between the days 321 and 330, I want every H>30 to be replaced with NaN. I don't want to simply create new variables because I have lots of conditions like this one to apply to the data.
I tried solutions like:
idx = find(DOY>=321 & DOY<=330);
if H(idx)>30
H(idx) = NaN;
end
In this one, nothing happened; Then, I tried multiple versions with a while loop, and the last one was that:
while true
idx = H<=9.6;
H(idx) = NaN;
if ~find(DOY>=330 && DOY<=336.3)
break
end
end
In all my while loops I get the same error "Operands to the || and && operators must be convertible to logical scalar values."
I wrote in different ways and still can fix this.
Thank you in advance for any tips you can give me!

Akzeptierte Antwort

Thaís Lobato Sarmento
Thaís Lobato Sarmento am 24 Mär. 2022
I think I got it! I put all the conditions in a single find!

Weitere Antworten (1)

KSSV
KSSV am 24 Mär. 2022
idx = DOY >= 321 & DOY <= 330 ;
H(idx) = NaN ;
  1 Kommentar
Thaís Lobato Sarmento
Thaís Lobato Sarmento am 24 Mär. 2022
Unfortunately this doens't solve my problem..
What I need is, between DOY 321 and 330, to put NaN only on those places where H>30

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu 2-D and 3-D Plots finden Sie in Help Center und File Exchange

Produkte


Version

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by