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

9 次查看(过去 30 天)
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!

采纳的回答

Thaís Lobato Sarmento
I think I got it! I put all the conditions in a single find!

更多回答(1 个)

KSSV
KSSV 2022-3-24
idx = DOY >= 321 & DOY <= 330 ;
H(idx) = NaN ;
  1 个评论
Thaís Lobato Sarmento
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

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 2-D and 3-D Plots 的更多信息

产品


版本

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by