Bandwidth returns inf with discrete time transfer function
9 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Shivanshu Sahoo
le 30 Sep 2021
Commenté : Star Strider
le 30 Sep 2021
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 commentaires
Mathieu NOE
le 30 Sep 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)
Réponse acceptée
Star Strider
le 30 Sep 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)
[mag,phase,wout] = bode(H);
mag = squeeze(mag);
wdB3 = interp1(mag2db(mag/max(mag)), wout, -3)
magdB3 = interp1(wout, mag2db(mag), wdB3)
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 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Digital Filter Analysis dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
