is there a jump of 2 months?

2 views (last 30 days)
antonet
antonet on 17 Aug 2012
Dear all
I have the following sequence of dates
A={
'24/09/2000'
'22/10/2000'
'19/11/2000'
'17/12/2000'
'14/01/2001'
'11/02/2001'
'11/03/2001'
'08/04/2001'
'03/06/2001'
'01/07/2001'
'29/07/2001'
'26/08/2001'
'23/09/2001'
'21/10/2001'}
I want to see if I have a jump of two months. for instance, in the above example there is such a jump from '08/04/2001' to '03/06/2001'.
I am looking for an if statement
if there is not such a jump
'...'
end
thanks

Accepted Answer

José-Luis
José-Luis on 17 Aug 2012
Edited: José-Luis on 17 Aug 2012
Assuming your data is ordered, and that you have the financial toolbox:
numDate = datenum(A,'dd/mm/yyyy');
numDate = numDate - numDate(1);
monthNumber = month(test) + 12 * year(test);
jumpMonth = [0; diff(monthNumber)];
The vector jumpMonth will contain the difference in months between two succesive dates.
Cheers!

More Answers (2)

Wayne King
Wayne King on 17 Aug 2012
The basic way to do it is using datenum()
B = datenum(A,'dd/mm/yyyy');
numdays = diff(B);
nummonths = numdays/30;
Then you need to use floor(), round(),ceil() or something similar, but you will see that only one element of nummonths is close to 2 in value
So, in this example
nummonths = ceil(nummonths);
for nn = 1:length(nummonths)
if (nummonths(nn) > 1.5 & nummonths(nn) < 3.5)
disp('There''s a jump');
else
disp('No Jump');
end
end
Anyway, you get the point.

Andrei Bobrov
Andrei Bobrov on 17 Aug 2012
[m,m] = datevec(A,'dd/mm/yyyy');
test = [0;mod(diff(m),12)] == 2;

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by