Improve speed of @dates/colon method.
parent
6aee567382
commit
84caf6d35f
|
@ -68,23 +68,18 @@ end
|
||||||
|
|
||||||
C = dates();
|
C = dates();
|
||||||
n = (B-A)+1;
|
n = (B-A)+1;
|
||||||
|
if d>1
|
||||||
|
n = length(1:d:n);
|
||||||
|
end
|
||||||
C.freq = A.freq;
|
C.freq = A.freq;
|
||||||
C.ndat = n;
|
C.ndat = n;
|
||||||
C.time = NaN(n,2);
|
C.time = NaN(n,2);
|
||||||
C.time(1,:) = A.time;
|
C.time(1,:) = A.time;
|
||||||
|
|
||||||
current_date = A;
|
for linee=2:n
|
||||||
linee = 1;
|
|
||||||
|
|
||||||
while current_date<B
|
|
||||||
linee = linee+1;
|
|
||||||
C.time(linee,:) = add_periods_to_array_of_dates(C.time(linee-1,:), C.freq, d);
|
C.time(linee,:) = add_periods_to_array_of_dates(C.time(linee-1,:), C.freq, d);
|
||||||
current_date = current_date + d;
|
|
||||||
end
|
end
|
||||||
|
|
||||||
C.time = C.time(1:linee,:);
|
|
||||||
C.ndat = rows(C.time);
|
|
||||||
|
|
||||||
%@test:1
|
%@test:1
|
||||||
%$ % Define two dates
|
%$ % Define two dates
|
||||||
%$ date_1 = '1950Q2';
|
%$ date_1 = '1950Q2';
|
||||||
|
|
|
@ -27,12 +27,16 @@ time(:,1) = time(:,1) + fix(p/freq);
|
||||||
time(:,2) = time(:,2) + rem(p,freq);
|
time(:,2) = time(:,2) + rem(p,freq);
|
||||||
|
|
||||||
id1 = find(time(:,2)>freq);
|
id1 = find(time(:,2)>freq);
|
||||||
|
if ~isempty(id1)
|
||||||
time(id1,1) = time(id1,1) + 1;
|
time(id1,1) = time(id1,1) + 1;
|
||||||
time(id1,2) = time(id1,2) - freq;
|
time(id1,2) = time(id1,2) - freq;
|
||||||
|
end
|
||||||
|
|
||||||
id2 = find(time(:,2)<1);
|
id2 = find(time(:,2)<1);
|
||||||
|
if ~isempty(id2)
|
||||||
time(id2,1) = time(id2,1) - 1;
|
time(id2,1) = time(id2,1) - 1;
|
||||||
time(id2,2) = time(id2,2) + freq;
|
time(id2,2) = time(id2,2) + freq;
|
||||||
|
end
|
||||||
|
|
||||||
%@test:1
|
%@test:1
|
||||||
%$ t(1) = dyn_assert(add_periods_to_array_of_dates([1950 1], 4, 1),[1950 2]);
|
%$ t(1) = dyn_assert(add_periods_to_array_of_dates([1950 1], 4, 1),[1950 2]);
|
||||||
|
|
|
@ -26,7 +26,7 @@ end
|
||||||
if isyearly(a)
|
if isyearly(a)
|
||||||
year = 1:(regexp(a,'[AaYy]')-1);
|
year = 1:(regexp(a,'[AaYy]')-1);
|
||||||
date.freq = 1;
|
date.freq = 1;
|
||||||
date.time = write_time_field(a, year);
|
date.time = write_time_field_y(a, year);
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -51,13 +51,14 @@ if isweekly(a)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function b = write_time_field(c, d)
|
function b = write_time_field(c, d)
|
||||||
b(1) = str2num(c(d));
|
b(1) = str2double(c(d));
|
||||||
if ismember(c(d(end)+1),{'Y','y','A','a'})
|
b(2) = str2double(c(d(end)+2:end));
|
||||||
|
|
||||||
|
function b = write_time_field_y(c, d)
|
||||||
|
b(1) = str2double(c(d));
|
||||||
b(2) = 1;
|
b(2) = 1;
|
||||||
else
|
|
||||||
b(2) = str2num(c(d(end)+2:end));
|
|
||||||
end
|
|
||||||
|
|
||||||
%@test:1
|
%@test:1
|
||||||
%$
|
%$
|
||||||
|
|
Loading…
Reference in New Issue