Why does the System Identification Toolbox return a different transfer function than one produced analytically?
Info
Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.
Ältere Kommentare anzeigen
Using the system identification toolbox I inserted 2 small data series that were calculated from the following input and output:
Input: u(t) = 6*cos(2*t) Output: y(t) = -exp(-t)-3*exp(-3*t)+4*cos(2*t)+4*sin(2*t)
Analytically I calculated the following transfer function:
H(s) = (9*s+14)/(3*(s+1)*(s+3))
However, when prompted to determine a transfer function with 2 poles and 1 zero, the System Identification toolbox produced a much different looking transfer function than the one that I had calculated.
Does anyone know the reason behind this?
Thanks -Pat
Antworten (1)
Arkadiy Turevskiy
am 31 Okt. 2013
Bearbeitet: Arkadiy Turevskiy
am 31 Okt. 2013
I get very good match:
t=0:0.01:100;
u=6*cos(2*t)';
y=(-exp(-t)-3*exp(-3*t)+4*cos(2*t)+4*sin(2*t))';
data=iddata(y,u,t(2));
sys=(9*s+14)/(3*(s+1)*(s+3));
sys_id=tfest(data,2,1);
Checking:
>>sys
sys =
9 s + 14
----------------
3 s^2 + 12 s + 9
>> sys_id
sys_id =
From input "u1" to output "y1":
3.023 s + 4.606
---------------
s^2 + 4 s + 3
Continuous-time identified transfer function.
As you can see, sys_id gets the poles exactly, the zero and gain are slightly off.
If we do the bode and step, the differences are really small:
bode(sys);
hold on;
bode(sys_id,'r');

figure;
step(sys,sys_id,'r');

Diese Frage ist geschlossen.
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!