How to recover the response to a step forcing upon system identification using impulseest?

1 次查看(过去 30 天)
I am unable to recover the response to a step forcing. The recreated signal reaches a level lower than the actual one (phi_asym), and then it is constant in time for the rest of the time. Otherwise, before reacing the plateau, the reconstruction seems very good. I also wonder why the first nonzero value of the step forcing (mystep) is supposed to correspond with a still zero value of the response (output).
t = 0:2^8;
dt = t(2)-t(1);
tau = 20; % time scale of relaxation in years
phi_asym = 4; % relative increase of the observable phi t -> infinity
sig = 0.; % noise strength corrupting the signal
phi_r2s = phi_asym*(1 - exp(-t/tau)); % uncorrupted
output = [zeros(1,length(phi_r2s)) phi_r2s+sig*randn(1,length(phi_r2s))]; % corrupted
mystep = [zeros(1,length(phi_r2s)) ones(1,length(phi_r2s))];
figure; plot(1:length(mystep),mystep,1:length(output),output)
io_r2s = iddata(output',mystep',dt);
sys = impulseest(io_r2s);
[y, ~, ~, ysd] = step(sys,t);
figure; plot(t, y, 'b', t, y+3*ysd, 'b:', t, y-3*ysd, 'b:', t, output(end-length(t)+1:end))

回答(1 个)

Tamas Bodai
Tamas Bodai 2020-12-2
Perhaps the default order of the impulse response model is 70, which is where the plateau suddenly starts. There is no mention of a default value in the Help article for impulseest.
With noise corrupting the response (e.g. sig = 0.1), it appears that an order somewhat smaller than the time series length gives a better result in ways of "smoothing", as opposed to taking the maximally allowed value.

类别

Help CenterFile Exchange 中查找有关 Linear Model Identification 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by