基于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、滤波器出数有一定延迟,这在具体调制解调过程中需要注意

  • 46
    点赞
  • 460
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
好的,我可以帮你解答这个问题。如果您的信号是一个一维向量,那么可以使用MATLABfilter函数来实现滤波。对于巴特沃斯低通、高通、带通滤波器以及切比雪夫低通、高通带通滤波器,MATLAB中都有现成的函数可以调用。下面是一个示例代码,展示了如何使用这些函数来滤波2000Hz信号: ```matlab % 生成一个2000Hz的信号 fs = 8000; % 采样率为8000Hz t = 0:1/fs:1; % 时间从0到1s f = 2000; % 信号频率为2000Hz signal = sin(2*pi*f*t); % 生成正弦波信号 % 巴特沃斯低通滤波器 fc = 1000; % 截止频率为1000Hz [b, a] = butter(4, fc/(fs/2), 'low'); % 4阶巴特沃斯低通滤波器 signal_filtered = filter(b, a, signal); % 对信号进行滤波 % 巴特沃斯高通滤波器 fc = 1000; % 截止频率为1000Hz [b, a] = butter(4, fc/(fs/2), 'high'); % 4阶巴特沃斯高通滤波器 signal_filtered = filter(b, a, signal); % 对信号进行滤波 % 巴特沃斯带通滤波器 f1 = 1500; % 通带下限频率为1500Hz f2 = 2500; % 通带上限频率为2500Hz [b, a] = butter(4, [f1/(fs/2) f2/(fs/2)], 'bandpass'); % 4阶巴特沃斯带通滤波器 signal_filtered = filter(b, a, signal); % 对信号进行滤波 % 切比雪夫低通滤波器 fc = 1000; % 截止频率为1000Hz rp = 3; % 通带最大衰减为3dB [b, a] = cheby1(4, rp, fc/(fs/2), 'low'); % 4阶切比雪夫低通滤波器 signal_filtered = filter(b, a, signal); % 对信号进行滤波 % 切比雪夫高通滤波器 fc = 1000; % 截止频率为1000Hz rp = 3; % 通带最大衰减为3dB [b, a] = cheby1(4, rp, fc/(fs/2), 'high'); % 4阶切比雪夫高通滤波器 signal_filtered = filter(b, a, signal); % 对信号进行滤波 % 切比雪夫带通滤波器 f1 = 1500; % 通带下限频率为1500Hz f2 = 2500; % 通带上限频率为2500Hz rp = 3; % 通带最大衰减为3dB [b, a] = cheby1(4, rp, [f1/(fs/2) f2/(fs/2)], 'bandpass'); % 4阶切比雪夫带通滤波器 signal_filtered = filter(b, a, signal); % 对信号进行滤波 ``` 上述代码中,我们使用了butter和cheby1函数来生成巴特沃斯和切比雪夫滤波器的数字滤波器系数,然后使用filter函数对信号进行滤波。需要注意的是,滤波器的阶数和截止频率等参数需要根据具体应用进行选择。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值