MATLAB Answers

AA
0

filtering out two months with a code

Asked by AA
on 1 Nov 2017
Latest activity Answered by dpb
on 1 Nov 2017
Accepted Answer by dpb
dateless = Dates(nomatch);
datelike = Dates(~nomatch);
dateliketime=datetime(datelike);
liatime=dateliketime.Month == 10;
datelike1= datelike(liatime,1);
Here I select the month November from the group that is available. What if I want to select two months, i.e. November and October? Is there any way to display this?

  0 Comments

Sign in to comment.

2 Answers

Answer by dpb
on 1 Nov 2017
 Accepted Answer

Month1 == 10; % make variables instead of hardcoded
Month2 == 11; % "magic" numbers
datelike1= datelike(iswithin(dateliketime.Month,Month1,Month2));
where iswithin is my "syntactic sugar" utility
function flg=iswithin(x,lo,hi)
% returns T for values within range of input
% SYNTAX:
% [log] = iswithin(x,lo,hi)
% returns T for x between lo and hi values, inclusive
flg= (x>=lo) & (x<=hi);
If you convert your dates to datetime class, there is a "veritable plethora" of functions specifically for handling dates, date arithmetic and logic, including isbetween

  0 Comments

Sign in to comment.


Answer by Cam Salzberger on 1 Nov 2017

In this code snippet, liatime will be a logical array, with true anywhere dateliketime.Month is 10, and false anywhere it isn't. So a good place to start looking would probably be under MATLAB's logical operations.
For your specific question, the logical OR operator (non-short-circuit version) should be sufficient:
liatime = dateliketime.Month == 10 | dateliketime.Month == 11;
-Cam

  0 Comments

Sign in to comment.