Changing magnitude to decibel in freqs plot

43 次查看(过去 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?

回答(1 个)

Roshni Garnayak
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

类别

Help CenterFile Exchange 中查找有关 Digital Filter Analysis 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by