Bandwidth returns inf with discrete time transfer function

I am trying to find the 3dB frequency of discrete time transfer function using bandwidth but it returns inf. Here is the code:
alpha1=0.9;
ts = 0.1;
z = tf('z',ts);
H = ((1-alpha1)/2)*(1-z)/(1-alpha1*z);
fb = bandwidth(H,-3);
Am I doing anything conceptually wrong?

4 Kommentare

Hi
read the doc
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.
seems that this function cannot be used if you hae a high pass filter behaviour in your tf; because then the dc gain is 0 (-Inf in dB)
you have to write your own function for bandwith that overcomes this limitation
I recognize it's strange that this case is not dealed correctly in the native matlab function (shame on you TMW !)
all the best
Yeah I also thought the same but thought there must be something which I must be missing, so asked to confirm. Thanks for confirming.
see the results of low pass vs high filters
bandwith works ok only for the low pass case
% high pass digital filter
alpha1=0.9;
ts = 0.1;
z = tf('z',ts);
H = ((1-alpha1)/2)*(1-z)/(1-alpha1*z);
figure(1),bode(H)
fb = bandwidth(H,-3);
% low pass analog filter
sys = tf(1,[1 1]);
fb = bandwidth(sys)
figure(2),bode(sys)
% high pass analog filter
sys = tf([1 0],[1 1]);
fb = bandwidth(sys)
figure(3),bode(sys)
Yes @Mathieu NOE you are correct. Bandwidth works only for low pass.

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

The -3 dB frequency is straightforward to calculate —
alpha1=0.9;
ts = 0.1;
z = tf('z',ts);
H = ((1-alpha1)/2)*(1-z)/(1-alpha1*z);
fb = bandwidth(H,-3)
fb = Inf
[mag,phase,wout] = bode(H);
mag = squeeze(mag);
wdB3 = interp1(mag2db(mag/max(mag)), wout, -3)
wdB3 = 1.0591
magdB3 = interp1(wout, mag2db(mag), wdB3)
magdB3 = -28.5751
phase = squeeze(phase);
figure
semilogx(wout, mag2db(mag))
hold on
plot(wdB3, magdB3, '+r', 'MarkerSize',10)
hold off
grid
xlim([min(wout) max(wout)])
.

4 Kommentare

What does wdB3 represent in our code?
It is the frequency corresponding to the -3 dB power.
.
Ok thank you so much
As always, my pleasure!
.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by