Improve speed of @dates/colon method.
parent
6aee567382
commit
84caf6d35f
|
@ -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_date<B
|
||||
linee = linee+1;
|
||||
for linee=2:n
|
||||
C.time(linee,:) = add_periods_to_array_of_dates(C.time(linee-1,:), C.freq, d);
|
||||
current_date = current_date + d;
|
||||
end
|
||||
|
||||
C.time = C.time(1:linee,:);
|
||||
C.ndat = rows(C.time);
|
||||
|
||||
%@test:1
|
||||
%$ % Define two dates
|
||||
%$ date_1 = '1950Q2';
|
||||
|
|
|
@ -27,12 +27,16 @@ time(:,1) = time(:,1) + fix(p/freq);
|
|||
time(:,2) = time(:,2) + rem(p,freq);
|
||||
|
||||
id1 = find(time(:,2)>freq);
|
||||
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]);
|
||||
|
|
|
@ -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
|
||||
%$
|
||||
|
|
Loading…
Reference in New Issue