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]两个数值就可以利用filter这个函数进行下一步的处理。 第五: 具体案例: 切比雪夫2型 Wp=0.5;Ws=0.3;Rp=1;Rs=40; 参考:https://www.cnblogs.com/alimy/p/9140695.html第三:滤波器设计:
第四: 滤波器的实现:
[b,a] = cheby1(6,10,0.6);
freqz(b,a)
dataIn = randn(1000,1);
dataOut = filter(b,a,dataIn);
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;
[n,Wn] = cheb2ord(Wp,Ws,Rp,Rs)
[b,a]=cheby2(n,Rs,Wn);
freqz(b,a)