matlab滤波器(切比雪夫为例)实验

matlab滤波器(切比雪夫为例)实验

数字滤波器的定义

所谓数字滤波器,是指输入、输出均为数字信号,通过数值运算改变输入信号所含频率成分的相对比例,或者滤除某些频率成分的数字器件或程序。

数字滤波器的分类

依据分类方法不同,分为经典滤波器和现代滤波器;IIR滤波器(无限长单位脉冲响应滤波器)和FIR滤波器(有限长单位脉冲响应滤波器)。

  1. IIR :设计方法有间接法和直接法,常常使用间接法,即借助模拟滤波器的方法进行,设计步骤为:设计模拟滤波器的系统函数H(s),再将其转换为数字滤波器需要的H(z),好处是方法成熟,可供查阅的资料很多;
  2. FIR:只能用直接法,好处是绝对稳定,相位严格线性;

matlab实现

首先是IFR(低通),滤波器选切比雪夫I型滤波器,指标为:通带截止频率1.5kHz,阻带截止频率2kHz,通带最大衰减0.1dB,阻带最小衰减60dB。以上为常用的设计指标,一般还有一个3dB点的截止频率也比较重要,有时也用到。
注意,滤波器认为1表示数字pi,即Fs/2(采样定理要求);因此wp和ws得做归一化处理;

Fs=1e4;fp=1.5e3;fs=2e3; % 采样频率和各指标
x=linspace(0,1,Fs); %如果不明显规定Fs,那么滤波器也认为0~1之间的点数为采样频率
x=10*cos(2*pi*1.5e3/2*x);
wp=2*fp/Fs; ws=2*fs/Fs; Rp=0.1;As=60;  
[N1,wp1]=cheb1ord(wp,ws,Rp,As); % 返回的是阶数N1和通带边界频率
[B1,A1]=cheby1(N1,Rp,wp1); %返回的是系统函数的分子和分母系数
subplot(2,2,1)
fk=0:1/512:1;wk=2*pi*fk;
Hk=freqs(B1,A1,wk);%得到的是系统函数的拉普拉斯式频率响应
plot(fk,20*log10(abs(Hk)));grid on;
y=filter(B1,A1,x);%滤波器的使用
plot(x);
hold on;
plot(y);

然后我们设计FIR滤波器,选切比雪夫窗,一般指标为:旁瓣峰值,过渡带宽度,阻带最小衰减。设计过程为:由指标选定窗函数类型和阶数

fs = 100;%采样频率
f1 = 10;
f2 = 50;
f3 = 80;
t = linspace(0,1,fs);
x2 = 2*sin(2*pi*f1*t)+5*sin(2*pi*f2*t)+3*sin(2*pi*f3*t);
figure;
plot(abs(fft(x2,512)));
figure;
plot(abs(fft(x2,1024)));
title('原始信号频谱')
b = fir1(50,[0.3 0.6],'bandpass',chebwin(51,50));
y = filter(b,1,x2);
figure;
plot(abs(fft(y,1024)));
title('滤波后信号频谱')

你可能感兴趣的:(数字信号处理)