巴特沃斯数字低通滤波器

信号处理 专栏收录该内容
18 篇文章 2 订阅

matlab实现信号滤波有很多种方法,本文采用filter函数,先由butter函数生成数字滤波器分子、分母多项式,然后将这些参数传给filter函数,便可实现滤波的功能。

知识点如下:

1、[b,a] = butter(N,wc);

其中,b和a分别为滤波器分子、分母多项式,N为滤波器阶数,wc为3dB截止频率,巴特沃斯低通滤波器的特点为:整个频带内单调下降,且非常光滑,并且阶数越高,阻带内下降的越陡峭、越干脆。无论阶数多高,都在经过(wc,3dB)一点。

2、y = filter(b,a,x);

y为滤波后的信号,x为输入信号,b和a分别为分子、分母多项式,由butter函数获得。

3、滤波器的阶数和3dB截止频率可以通过函数butterd()获取,当然,如果没有那么多要求,直接设定也可以。

[N,wc] = butterd(wp,ws,Rp,Rs);

N为阶数,wc为3dB截止频率,wp和ws位通带截止频率和阻带截止频率,Rp和Rs为通带最大衰减和阻带最小衰减,这些参数挺讲究的,新手容易被搞懵逼,多看看课本。

4、本例程,生成的信号为两个正弦信号之和,频率分被为1KHz和3KHz,采样频率为10KHz,巴特沃斯低通滤波器8阶、3dB截止带宽2000Hz。

%%--------------------------------
%%巴特沃斯低通滤波对信号进行滤波
%%2020,10.07 12:35
%%-------------------------------
close all;clc;clear all;
Fs = 10000;%采样频率为10Khz
dt = 1/Fs;%采样时间间隔
L = 1000;%采样点数
t = (0:L-1)*dt;%生成时间向量
wc = 2000;%3dB截止频率

y = cos(2*pi*1000*t)+cos(2*pi*3000*t);%1000Hz和3000Hz
plot(t(1:100),y(1:100));
title('y=cos(2*pi*1000*t)+cos(2*pi*3000*t)');
figure;
Fy = fft(y)/L;
stem((0:L/2-1)*10,abs(Fy(1:L/2)));
title('y的频谱图')
[b a] = butter(8,wc*2/Fs);%3db截止频率为wc,最高频率为采样频率的一般,此时需要将0-wc/2映射到0-1上
y_lowpass = filter(b,a,y);%滤波
figure;
plot(t(1:100),y_lowpass(1:100));%绘制滤波后的信号波形
title('滤波后信号曲线');
Fy_low = fft(y_lowpass)/L;
stem((0:L/2-1)*(Fs/L),abs(Fy_low(1:L/2)));%Fs/L为频谱分辨度
title('滤波后频谱图');
[H W] = freqz(b,a);%获取数字低通滤波器的幅频特性曲线
figure;
plot(W*wc,abs(H));
xlabel('频率/Hz');ylabel('|H(jw)|');title('低通滤波器幅频特性曲线');

 

  • 1
    点赞
  • 0
    评论
  • 30
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页

打赏作者

nwsuaf_lzh

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值