bandwidth returns inf on transfer function

I have a tf object
tf1 =
From input "u1" to output "y1":
0.3645 s + 0.0003711
--------------------------
s^2 + 0.3928 s + 0.0003717
which gives me a bandwidth(tf1) = 0.3353
When I use a different tf object of lower order, but with almost the same impulse response
tf2 =
From input "u1" to output "y1":
0.9236 s + 0.001036
-------------------
s + 0.001038
bandwidth(tf2) = Inf
Also, If I look at the bode plots of both transfer functions, I can see that the left one (tf1) shows the full frequency range, while the plot for tf2 right on the right "stops" at 10e-2.
I am wondering, what is the reason for that and does it have other implications besides "bandwidth" is not working?

Answers (1)

From the documentation —
fb = bandwidth(sys) returns the bandwidth of the SISO dynamic system model sys. The bandwidth is the first frequency where the gain drops below 70.79% (-3 dB) of its DC value.’
However it never gets to -3 dB. It is asymptotic at about -0.7 dB from about 0.1 to . I suspect that is the problem.
s = tf('s');
tf2 = (0.9236*s + 0.001036) / (s + 0.001038)
tf2 = 0.9236 s + 0.001036 ------------------- s + 0.001038 Continuous-time transfer function.
win = logspace(-4,4,150);
figure
h = bodeplot(tf2,win);
opts = getoptions(h);
opts.Grid = 'on';
setoptions(h,opts)
.

2 Comments

That is true, but why shows the bode plot only till 1e-2?
I am not certain of the reason it sets that limit (it chooses the limit based on the system characteristics, so it may set that on the basis of the system becoming asymptotic at about that frequency), however that can easily be overridden by providing the frequency vector as an additional argument, as my Answer demonstrates.
.

Sign in to comment.

Categories

Products

Release

R2021a

Asked:

on 11 Aug 2021

Commented:

on 12 Aug 2021

Community Treasure Hunt

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

Start Hunting!