Deriving the transfer function from a data set that has magnitude,phase and omega

15 views (last 30 days)
I have this dataset that contains magnitude, phase and omega of a transfer function. I can bodeplot it but I need to derive the transfer function from it. Please help.

Answers (1)

Paul on 16 Sep 2022
Hi George,
I plotted the data and it looks like the data comes from a transfer function where the degree of the denominator is two more than the degree of the numerator.
First, store the data in an frd object. Then try using tfest to find the transfer function that fits the data. It should work very well.
If you have any trouble, feel free to come back, show your code, and and ask more questions.
Paul on 17 Sep 2022
Strictly speaking, the formula only applies for a second order system. For example, with zeta = 0.2 and Kdc = 1, we would expect to have
Kdc = 1;
zeta = 0.2;
Mr = 1/2/zeta/sqrt(1-zeta^2)
Mr = 2.5516
ans = 8.1361
And we do
bode(tf(1,[1 2*zeta*1 1]),tf(Mr))
If the transfer function is not second order, the formula might still be a very good approximation if the additional poles and zeros are at higher frequency than that of the dominant second order poles. For example, let's add a zero at s= -10 and a pole at s = -20, which don't have much impact on the low-frequency response and don't really affect the Mr
bode(tf([1/10 1],conv([1/20 1],[1 2*zeta*1 1])),tf(Mr),logspace(-1,1,500))
In your transfer function, the dominant second order poles are at ~4.45 rad/sec, but the transfer function has a zero at s = -0.1, which is smaller than the frequency of the dominant poles. That zero has a sigificant impact on the low frequency portion of the Bode plot (and the overshoot of the step response as illuatrated above by @Sam Chak), so the formula doesn't apply.

Sign in to comment.


Find more on Get Started with Control System Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by