基于MATLAB的filter的使用,低通、带通和高通滤波器设计

1、目的

学习MATLAB的filter函数的使用,通过设计低通、带通和高通滤波器对其进行仿真

2、用到的主要函数和工具

MATLAB、FDATOOL、filter、fft

3、设计

  1. 信号的产生
%% Parameter Interface
Frequence0          = 60;        %单位:Hz    
Frequence1          = 130;       %单位:Hz
Frequence2          = 1e3;       %单位:Hz
SampleFre           = 4e3;       %单位:Hz
SampleLen           = SampleFre; %采样点数
%% Main
%-------------------产生三路信号
t = 0:1/SampleLen:1/SampleFre*(SampleLen-1);
SignalData0 = sin(2*pi*Frequence0*t);
SignalData1 = sin(2*pi*Frequence1*t);
SignalData2 = sin(2*pi*Frequence2*t);
SignalData3 = SignalData0+SignalData1+SignalData2;
figure;hold on
plot(t(1:150),SignalData0(1:150),'b')
plot(t(1:150),SignalData1(1:150),'r')
plot(t(1:150),SignalData2(1:150),'k')
hold off
figure;plot(t(1:150),SignalData3(1:150))
title('三路信号求和')
  •  三路信号的时域波形

                                       三路信号时域波形                                                                      三路信号求和时域波形       

  • 三路求和信号频谱分析
FFT_Data = fft(SignalData3);

        2.低通滤波器设计

  • 基于fdatool的低通滤波器的设计

          在MATLAB命令行执行fdatool命令,弹出滤波器设计交互窗口,根据自己的需求设计符合自己要求的滤波器,这是我设计的低通滤波器见下图

           需要注意的是通过设计Fpass和Fstop确定了滤波器的带宽,同时参数设计的越接近理论滤波器的性能,滤波器的阶数越多,计算量越大,所以需要优化滤波器这两个参数,在保证性能的同时确保阶数越小(计算量越小)

  • 滤波
LPF_Data = filter(LPF_Coe.LPF_60M,1,SignalData3);

滤波后的时域和频谱波形

          3.带通和高通操作步骤大体一致就不详细说明

4、M代码

      代码见https://download.csdn.net/download/flypassion/10627808

5、备注

       1、滤波器出数有一定延迟,这在具体调制解调过程中需要注意

原文链接:加载失败,请重新获取