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
Mathieu NOE
2021년 9월 30일
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
Shivanshu Sahoo
2021년 9월 30일
Mathieu NOE
2021년 9월 30일
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
2021년 9월 30일
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Digital Filter Analysis에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
