MATLAB 进行IIR数字滤波器设计

第一:综述:

MATLAB 进行数字滤波器的设计分为了两个步骤,步骤1:根据给定的指标,确定滤波器的阶数N 和频率尺度因子Wn。步骤2:利用这些参数和给定的纹波.

第二:阶数估计:

利用双线性转换法:

[n,Wn] = buttord(Wp,Ws,Rp,Rs)

[n,Wn] = cheb1ord(Wp,Ws,Rp,Rs) 

[n,Wn] = cheb2ord(Wp,Ws,Rp,Rs) 

[n,Wn] = ellipord(Wp,Ws,Rp,Rs)

Wp,Ws分别代表归一化通带和阻带截至频率,且Wp

对于巴特沃斯滤波器,Wn是3db的截至频率,切比雪夫1型和椭圆滤波器是Wn是截至频率,切比雪夫2型Wn是阻带截至频率。

第三:滤波器设计:

主要是选择使用哪一种逼近方法:

[B,A] = butter(N,Wn) 

[b,a]=cheby1(N,rp,Wn);

[b,a]=cheby2(N,rs,Wn);

[b,a]=ellip(N,rp,rs,Wn);

第四: 滤波器的实现:

[b,a] = cheby1(6,10,0.6);
freqz(b,a)
dataIn = randn(1000,1);
dataOut = filter(b,a,dataIn);

只要得到[b,a]两个数值就可以利用filter这个函数进行下一步的处理。

第五: 具体案例:

Wp=0.7;
Ws=0.5;
Rp=1;
Rs=32;
[N,Wn] = cheb1ord(Wp,Ws,Rp,Rs);
[b,a]=cheby1(N,Rp,Wn,'high');

[h,omega]=freqz(b,a,256);
figure;
plot(omega/pi,20*log(abs(h)),'r');grid on; hold on;

切比雪夫2型

Wp=0.5;Ws=0.3;Rp=1;Rs=40;
[n,Wn] = cheb2ord(Wp,Ws,Rp,Rs) 
[b,a]=cheby2(n,Rs,Wn);
freqz(b,a)

参考:https://www.cnblogs.com/alimy/p/9140695.html

你可能感兴趣的:(matlab,滤波器的边缘效应)