Fixed bug if LHS no present in datablase.

Removed range on the left hand side.
time-shift
Stéphane Adjemia (Scylla) 2019-04-11 10:13:34 +02:00
parent ba46992e18
commit fe4a15e417
Signed by untrusted user who does not match committer: stepan
GPG Key ID: A6D44CB9C64CE77B
1 changed files with 7 additions and 7 deletions

View File

@ -111,15 +111,15 @@ for i=1:length(eqtags)
end end
end end
if isempty(transform) if isempty(transform)
ds{LHS}(range) = eval(RHS); ds{LHS} = eval(RHS);
else else
tmp = eval(RHS); tmp = eval(RHS);
switch length(transform) switch length(transform)
case 1 case 1
if isequal(transform{1}, 'cumsum') if isequal(transform{1}, 'cumsum')
ds{lhs}(range) = cumsum(tmp)+ds{lhs}(range(1)-1).data; ds{lhs} = cumsum(tmp)+ds{lhs}(range(1)-1).data;
else else
ds{lhs}(range) = feval(transform{1}, tmp); ds{lhs} = feval(transform{1}, tmp);
end end
case 2 case 2
if isequal(transform{2}, 'cumsum') if isequal(transform{2}, 'cumsum')
@ -128,25 +128,25 @@ for i=1:length(eqtags)
for t = 1:length(range) for t = 1:length(range)
t2(t) = 2*ds{lhs}(range(t)-1).data-ds{lhs}(range(t)-2).data+tmp(range(t)).data; t2(t) = 2*ds{lhs}(range(t)-1).data-ds{lhs}(range(t)-2).data+tmp(range(t)).data;
end end
ds{lhs}(range) = dseries(t2, range(1)); ds{lhs} = dseries(t2, range(1));
else else
t2 = zeros(length(range), 1); t2 = zeros(length(range), 1);
for t = 1:length(range) for t = 1:length(range)
t1 = feval(transform{2}, log(ds{lhs}(range(t)-1))+tmp(range(t)).data ); t1 = feval(transform{2}, log(ds{lhs}(range(t)-1))+tmp(range(t)).data );
t2(t) = t1.data; t2(t) = t1.data;
end end
ds{lhs}(range) = dseries(t2, range(1)); ds{lhs} = dseries(t2, range(1));
% $$$ % The commented version below is more efficient but the discrepancy with what is returned by simulating % $$$ % The commented version below is more efficient but the discrepancy with what is returned by simulating
% $$$ % the model is much bigger (see pac/trend-component-28/example4.mod). % $$$ % the model is much bigger (see pac/trend-component-28/example4.mod).
% $$$ tmp = cumsum(tmp)+log(ds{lhs}(range(1)-1).data); % $$$ tmp = cumsum(tmp)+log(ds{lhs}(range(1)-1).data);
% $$$ ds{lhs}(range) = feval(transform{2}, tmp); % $$$ ds{lhs} = feval(transform{2}, tmp);
end end
case 3 case 3
t2 = zeros(length(range), 1); t2 = zeros(length(range), 1);
for t = 1:length(range) for t = 1:length(range)
t2(t) = feval(transform{3}, 2*log(ds{lhs}(range(t)-1).data)-log(ds{lhs}(range(t)-2).data)+tmp(range(t)).data); t2(t) = feval(transform{3}, 2*log(ds{lhs}(range(t)-1).data)-log(ds{lhs}(range(t)-2).data)+tmp(range(t)).data);
end end
ds{lhs}(range) = dseries(t2, range(1)); ds{lhs} = dseries(t2, range(1));
otherwise otherwise
error('More than 3 unary ops. in LHS not implemented.') error('More than 3 unary ops. in LHS not implemented.')
end end