why bandwidth returns an "inf"?
조회 수: 8 (최근 30일)
이전 댓글 표시
I have this tf with the following bode plot
k = 1
z = [-1 4 0]
p = [-10+4*j -10-4*j -3 -3 -3]
sys = zpk(z,p,k);
display(sys);
figure(1);
bode(sys);
grid
Why, in this case, the bandwidth(sys) retruns an "Inf"?
And is it only a problem in matlab to calculate the bandwidth or a bandpass exist but I have to calculate in another way?
it is not clear to me looking the plot.
thanks in advance.
댓글 수: 0
채택된 답변
Star Strider
2021년 12월 15일
It returns Inf because the bandwidth function requires a monotonically-decreasing signal, not one with a passband.
Try this —
k = 1
z = [-1 4 0]
p = [-10+4*j -10-4*j -3 -3 -3]
sys = zpk(z,p,k);
display(sys);
[mag,phs,wout] = bode(sys);
smag = squeeze(mag)
sphs = squeeze(phs)
dB3 = 10^(-3/20)
[maxmag,idx] = max(smag)
wascdB3 = interp1(smag(1:idx), wout(1:idx), dB3*maxmag)
wdscdB3 = interp1(smag(idx:end), wout(idx:end), dB3*maxmag)
bndwdh = wdscdB3 - wascdB3
figure(1);
semilogx(wout, mag2db(smag))
hold on
plot([wascdB3, wdscdB3], [1 1]*mag2db(maxmag*dB3), '+-r')
hold off
grid
xlabel('Frequency (rad/s)')
ylabel('Magnitude(dB)')
text(mean([wascdB3, wdscdB3]), mag2db(maxmag*dB3), sprintf('\\uparrow\nBandwidth = %.2f',bndwdh), 'Horiz','center', 'Vert','top')
The red line is between the -3 dB points on the passband.
.
댓글 수: 0
추가 답변 (1개)
Chunru
2021년 12월 15일
편집: Chunru
2021년 12월 15일
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. The bandwidth is expressed in rad/TimeUnit, where TimeUnit is the TimeUnit property of sys.
So this bandwidth is applicable for a low pass filter only.
For your system, DC response is 0, so the bandwidth is Inf
댓글 수: 2
Chunru
2021년 12월 15일
You can write a code to do that:
- Find the peak response
- Find the first points to the left of peak that is 3dB lower
- Find the first points to the right of peak that is 3dB lower
- Then compute the bandwidth.
Note that this is not full-proof bandwidth for arbitrary response.
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!