diff --git a/matlab/@dates/colon.m b/matlab/@dates/colon.m index 4449d9a3f..76e78a227 100644 --- a/matlab/@dates/colon.m +++ b/matlab/@dates/colon.m @@ -68,23 +68,18 @@ end C = dates(); n = (B-A)+1; +if d>1 + n = length(1:d:n); +end C.freq = A.freq; C.ndat = n; C.time = NaN(n,2); C.time(1,:) = A.time; -current_date = A; -linee = 1; - -while current_datefreq); -time(id1,1) = time(id1,1) + 1; -time(id1,2) = time(id1,2) - freq; +if ~isempty(id1) + time(id1,1) = time(id1,1) + 1; + time(id1,2) = time(id1,2) - freq; +end id2 = find(time(:,2)<1); -time(id2,1) = time(id2,1) - 1; -time(id2,2) = time(id2,2) + freq; +if ~isempty(id2) + time(id2,1) = time(id2,1) - 1; + time(id2,2) = time(id2,2) + freq; +end %@test:1 %$ t(1) = dyn_assert(add_periods_to_array_of_dates([1950 1], 4, 1),[1950 2]); diff --git a/matlab/utilities/dates/string2date.m b/matlab/utilities/dates/string2date.m index 139b65dbf..bb91a05fb 100644 --- a/matlab/utilities/dates/string2date.m +++ b/matlab/utilities/dates/string2date.m @@ -26,7 +26,7 @@ end if isyearly(a) year = 1:(regexp(a,'[AaYy]')-1); date.freq = 1; - date.time = write_time_field(a, year); + date.time = write_time_field_y(a, year); return end @@ -51,13 +51,14 @@ if isweekly(a) return end + function b = write_time_field(c, d) - b(1) = str2num(c(d)); - if ismember(c(d(end)+1),{'Y','y','A','a'}) - b(2) = 1; - else - b(2) = str2num(c(d(end)+2:end)); - end + b(1) = str2double(c(d)); + b(2) = str2double(c(d(end)+2:end)); + +function b = write_time_field_y(c, d) + b(1) = str2double(c(d)); + b(2) = 1; %@test:1 %$