Changing magnitude to decibel in freqs plot
19 次查看(过去 30 天)
显示 更早的评论
I have the following transfer funtion for a analogue low pass filter:
39.476/(s^2+8.886 s+39.476)
I am using "freqs" to plot the frequency:
a=[1,8.886,39.476]
b=39.476
w=logspace(-1,3)
freqs(b,a,w)
However I want my plot to show magnitude in decibels, i have tried the mag2db command but that is messig with the results, any suggestions?
0 个评论
回答(1 个)
Roshni Garnayak
2019-11-5
You can store the output of ‘freqs’ in a variable, say h. The following line of code would give you the magnitude in decibels:
mag = mag2db(abs(h));
For plotting the magnitude and phase response, you can use the ‘semilogx’ function which plots the x-axis in log scale and the y-axis in linear scale. You can find the code for that below:
h = freqs(b,a,w);
mag = mag2db(abs(h));
phase = angle(h);
phasedeg = phase*180/pi;
subplot(2,1,1), semilogx(w,mag), grid on
xlabel 'Frequency (rad/s)', ylabel Magnitude
subplot(2,1,2), semilogx(w,phasedeg), grid on
xlabel 'Frequency (rad/s)', ylabel 'Phase (degrees)'
For further capabilities of the ‘freqs’ function, refer to the examples in the following documentation:https://www.mathworks.com/help/signal/ref/freqs.html
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Digital Filter Analysis 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!