Bandwidth returns inf with discrete time transfer function

8 visualizzazioni (ultimi 30 giorni)
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 Commenti
Mathieu NOE
Mathieu NOE il 30 Set 2021
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)
Shivanshu Sahoo
Shivanshu Sahoo il 30 Set 2021
Yes @Mathieu NOE you are correct. Bandwidth works only for low pass.

Accedi per commentare.

Risposta accettata

Star Strider
Star Strider il 30 Set 2021
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 Commenti

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by