300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 巴特沃斯数字低通滤波器

巴特沃斯数字低通滤波器

时间:2018-10-10 04:32:25

相关推荐

巴特沃斯数字低通滤波器

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。

%%--------------------------------

%%巴特沃斯低通滤波对信号进行滤波

%%,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('低通滤波器幅频特性曲线');

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。