基于MATLAB GUI的数字滤波器设计

 IIR数字滤波器的最通用的方法是借助于模拟滤波器的设计方法。模拟滤波器设计已经有了相当成熟的技术和方法,有完整的设计公式,还有比较完整的图表可以查询,因此设计数字滤波器可以充分利用这些丰富的资源来进行。
 对于IIR数字滤波器的设计具体步骤如下:

(1)按照一定的规则将给出的数字滤波器的技术指标转换为模拟低通滤波器的技术指标。
(2)根据转换后的技术指标设计模拟低通滤波器G(s)(G(s)是低通滤波器的传递函数)。
(3)再按照一定的规则将G(s)转换成H(z)(H(z)是数字滤波器的传递函数)。若设计的数字滤波器是低通的,上述的过程可以结束,若设计的是高通、带通或者是带阻滤波器,那么还需要下面的步骤:
将高通、带通或带阻数字滤波器的技术指标转换为低通模拟滤波器的技术指标,然后设计出低通G(s),再将G(s)转换为H(z)。
IIR数字滤波器的系统函数可以写成封闭函数的形式。
IIR数字滤波器采用递归型结构,即结构上带有反馈环路。IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。
IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。
基于MATLAB GUI的数字滤波器设计_第1张图片
基于MATLAB GUI的数字滤波器设计_第2张图片
基于MATLAB GUI的数字滤波器设计_第3张图片
[b,a]=ellip(4,Ap,As,fc1/fs); %采用椭圆滤波
[h,w]=freqz(b,a,512); % 求频率响应
Iirlpsignal=filter(b,a,originsignal); % IIR滤波,输出为Iirlpsignal
w1=(0:255)/256*(fs/2);%频率刻度
Iirlpsinfft=fft(Iirlpsignal,512);%滤波的信号傅立叶变换
axes(handles.axes2)
plot(handles.t,Iirlpsignal)
title(‘IIR低通滤波信号’)
xlabel(‘时间/s’);
ylabel(‘幅值’);
axes(handles.axes5)
plot(w1,abs(Iirlpsinfft(1:256)));
title(‘IIR低通滤波后的幅频曲线’)
xlabel(‘频率/Hz’); ylabel(‘幅值/dB’);
[db,mag,pha,grd,w]=freqz_m(b,a); % 求滤波器的频率响应曲线
axes(handles.axes3)
plot(w/pi*fs,db,‘linewidth’,2)
grid; title(‘低通滤波器的幅值响应曲线’)
xlabel(‘频率/Hz’); ylabel(‘幅值/dB’);

你可能感兴趣的:(基于MATLAB GUI的数字滤波器设计)