How to Plot Absolute Frequency Response of Filter?

22 次查看(过去 30 天)
I am currently using the freqz() command to plot the frequency response of an FIR filter designed in fdatool and exported to the workspace as a variable.This plots the correct frequency response (as seen in FDAtool), but with normalized frequency on the x-axis.I understand that the freqz() command returns 512 points from 0 to pi.I divide the index by 512 and multiply it with FS/2, which "corrects" the x-axis but when I plot this against 20*log10(abs(filter)), the amplitude is not as seen in FDA tool.
mag=(freqz(Filter1,512));
plot(((1:512)/512)*(44100/2),20*log10(abs(mag(1:512))));

回答(1 个)

Star Strider
Star Strider 2016-5-15
You can output the frequency in Hz if you give freqz the sampling frequency as an argument (at least in more recent MATLAB releases):
[mag,frq] = freqz(Filter1,2048,FS);
I’ve also noticed that fdatool and freqz give different results. I design my own filters with the individual filter functions, and analyse them with freqz. (I have nothing against using fdatool and the others, but when I learned signal processing, we had to design our own filters at every step, and I just got used to designing them that way.)
  2 个评论
Matlab Student
Matlab Student 2016-5-16
Thank you for your reply! I'd like to add that the correct frequency response can be obtained with
mag=(freqz(Filter1,512));
plot(((1:512)/512)*(44100/2),20*log10(abs(mag(1:512))));
Star Strider
Star Strider 2016-5-16
My pleasure.
If you use freqz with no outputs, it plots the frequency response by default:
figure(1)
freqz(Filter1,2048,FS)

请先登录,再进行评论。

类别

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

Community Treasure Hunt

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

Start Hunting!

Translated by