多语言展示
当前在线:1122今日阅读:162今日分享:23

如何用MATLAB进行高通FIR滤波器仿真

之前的文章中介绍了如何产生FIR低通滤波器,本文将介绍如何用fir2函数产生高通滤波器,并举出一个简单的应用案例。
工具/原料

MATLAB

方法/步骤
1

实际应用背景:一个信号由5Hz余弦信号与15Hz余弦信号相加构成,如何滤除15Hz分量,得到5Hz分量。

3

观察原始信号时域与频谱:频谱中可以观察到信号的5Hz分量和15Hz分量Matlab程序:        figure;        plot(t,y);        title('原始信号时域');        xlabel('t/s');        ylabel('幅度');        figure;        fft_y=fftshift(fft(y));        f=linspace(-fs/2,fs/2,n);        plot(f,abs(fft_y));        title('原始信号频谱');        xlabel('f/Hz');        ylabel('幅度');        axis([ 0 50 0 100]);

4

生成高通FIR滤波器冲击响应:MATLAB程序:        b=fir1(80, B/(fs/2),'high');                    %滤波产生指定带宽的噪声信号        figure;        freqz(b);

5

原始信号经过高通滤波器:     MATLAB程序:        y_after_fir=filter(b,1,y);

6

滤波后信号时域及频谱:滤波后得到15Hz的信号,5Hz信号被滤除。MATLAB程序:           figure;        plot(t,y_after_fir);        title('滤波后信号时域');        xlabel('t/s');        ylabel('幅度');                fft_y1=fftshift(fft(y_after_fir));        f=linspace(-fs/2,fs/2,n);        figure;        plot(f,abs(fft_y1));        title('滤波后信号频谱');        xlabel('f/Hz');        ylabel('幅度');        axis([ 0 50 0 100]);

注意事项
1

如果要求通道窄或者要求过度带窄,滤波器阶数需要选择的更高。通带宽窄依据归一化带宽大小来判断。

2

滤波后信号最前面的一段信号是无效的,滤波器阶数越高,该段长度越长。

推荐信息