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

 时间:2026-02-13 21:21:11

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

2、产生原始信号:y=cos(2π*5t)+cos(2π*15t);

Matlab程序:

        f1=5;%第一个点频信号分量频率

        f2=15;%第二个点频信号分量频率

        fs=100;%采样率

        T=2;%时宽

        B=10;%FIR截止频率

        n=round(T*fs);%采样点个数

        t=linspace(0,T,n);

        y=cos(2*pi*f1*t)+cos(2*pi*f2*t);

        

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]);

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

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

4、生成高通FIR滤波器冲击响应

MATLAB程序:

        b=fir1(80, B/(fs/2),'high');                    %滤波产生指定带宽的噪声信号

        figure;

        freqz(b);

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

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]);

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

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

  • Matlab切换中英文的超简单方法
  • matlab怎么运行代码
  • 用matlab将plot后的图像保存
  • matlab中rank函数求矩阵的秩教程
  • matlab如何将编辑器和命令行放在一个界面
  • 热门搜索
    什么是失业保险 变质作用 板蓝根的作用 氧化还原反应知识点 山楂的作用 知识就是力量是谁说的 小奶狗什么意思 败酱草的功效与作用 毕业生就业推荐表有什么用 黄精的功效与作用及食用方法