《FIR数字滤波器的设计--等波纹最佳逼近法.pdf》由会员分享,可在线阅读,更多相关《FIR数字滤波器的设计--等波纹最佳逼近法.pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 FIR 数字滤波器的设计-等波纹最佳逼近法一、等波最佳逼近的原理简介 等波纹最佳逼近法是一种优化设计法,即最大误差最小化准则,它克服了窗函数设计法和频率采样法的缺点,使最大误差(即波纹的峰值)最小化,并在整个逼近频段上均匀分布。用等波纹最佳逼近法设计的 FIR 数字滤波器的幅频响应在通带和阻带都是等波纹的,而且可以分别控制通带和阻带波纹幅度,这就是等波纹的含义。最佳逼近是指在滤波器长度给定的条件下,使加权误差波纹幅度最小化。与窗函数设计法和频率采样法比较,由于这种设计法使滤波器的最大逼近误差均匀分布,所以设计的滤波器性能价格比最高。阶数相同时,这种设计法使滤波器的最大逼近误差最小,即通带最大
2、衰减最小,阻带最小衰减最大;指标相同时,这种设计法使滤波器阶数最低。等波纹最佳逼近法的设计思想。用)(dH表示希望逼近的幅度特性函数,要求设计线性相位 FIR 数字滤波器时,)(dH必须满足线性相位约束条件。用 H表示实际设计的滤波器的幅度特性函数。定义加权误差函数 为 HHWd 式中,W为幅度误差加权函数,用来控制不同频带(一般指通带和阻带)的幅度逼近精度。等波纹最佳逼近法的设计在于找到滤波器的系数向量 nh,使得在通带和阻带内的最大绝对值幅度误差 为最小,这也就是最大误差最小化问题。二、等波纹逼近法设计滤波器的步骤和函数介绍 1.根据滤波器的设计指标的要求:边界频率,通带最大衰减,阻带最大
3、衰等估计滤波器阶数 n,确定幅度误差加权函数 W 2.采用 Parks-McClellan 算法,获得所设计滤波器的单位脉冲响应 nh 实现 FIR 数字滤波器的等波纹最佳逼近法的 MATLAB 信号处理工具函数为firpm 和 firpmord。firpm 函数采用数值分析中的多重交换迭代算法求解等波纹最佳逼近问题,求的满足等波纹最佳逼近准则的 FIR 数字滤波器的单位脉冲响应 nh。firpmord 根据逼近指标,计算采用 Parks-McClellan 算法等波纹最佳逼近滤波器的最低阶数,误差加权向量 w,归一化边界频率向量 f。3 对 firpm 和 firpmord 的说明 firp
4、m 函数功能:采用 Parks-McClellan 算法设计 FIR 滤波器 函数格式:hn=firpm(n,f,m,w)n 是滤波器的阶 hn 是数字滤波器的单位脉冲响应,其长度为 n+1 f 是希望滤波器的边界频率向量,要求 f 是单调增向量,并且从 0 开始,以 1结束,1 对于数字频率 m 是与 f 对应的希望滤波器的幅度向量,m 和 f 的长度相等,km表示希望滤波器在频率点 kf上的幅频响应,m 和 f 给出了希望滤波器的幅度特性。w 是误差加权向量,其长度为 f 的一半。)(w i表示对 m 中第 i 个频率段幅度逼近精度的加权值。w 缺省时,函数默认 w 全为 1,即每个频率段
5、的逼近误差加权值相同。firpmord 函数 函数功能:根据逼近指标,计算采用 Parks-McClellan 算法等波纹最佳逼近滤波器的最低阶数 n,误差加权向量 w 和归一化边界频率 f。其返回参数作为firpm 函数的调用参数。函数格式:n,f,m,w=firpmord(f,m,rip,fs)f 可以是归一化边界数字频率向量,也可以是模拟边界频率向量,但必须以 0开始,以 1 结束或 fs/2 结束,并且其中省略了 0 和 fs/2 两个频率点。fs 是时域采样频率,单位 Hz。fs 缺省时,函数默认 fs=2Hz.但这是 f 的长度(包括省略 0 和 fs/2 两个频率点)是 m 的两
6、倍,即 m 中的每个元素表示 f给定的一个逼近频段上的希望逼近的幅度值。rip 表示 f 和 m 描述的各逼近段允许的波纹振幅(幅频响应最大偏差)。4.注意事项:省略 fs 时,f 必须是归一化的数字频率 有时计算的阶数 n 略小,使设计结果达不到指标要求,这时要取 n+1 或 n+2 三、程序 低通滤波器设计%Lowpass filter:wp=,ws=,N=26%peak passband ripple is,peak stopband ripple is clc;clear;clear all;wp_l=*pi;ws_l=*pi;N1=26;deltal_1=;deltal_2=;%初始
7、化参数 f_l=0 wp_l ws_l pi/pi;%设定归一化的firpm函数参数 deltal=deltal_1,deltal_2;a_l=1 1 0 0;%幅值 n,f,m,w_l=firpmord(f_l(2:3),1 0,deltal);%计算权值 fil_l=firpm(N1,f_l,a_l,w_l);%生成滤波器 figure(1);stem(fil_l,.);title(impulse response of lowpass filter);xlabel(time sequence);ylabel(amplitude);fft_l=fft(fil_l,1024);db_l=20
8、*log10(abs(fft_l);%对数表示 figure(2);plot(0:length(fft_l)-1/length(fft_l),db_l);%将横坐归化到0-1,单位为1/1024 title(Log-magnitude response of lowpass filter);xlabel(Normalized frequency);ylabel(Magnitude response(dB);axis(0 -100 10);%设坐标轴的范围,只取0-2pi的一半 afl=abs(fft_l);%取傅变的幅值 afl_p=zeros(1,1024/2);afl_s=zeros(1,
9、1024/2);%初始化两个一行512列的零序列 afl_p(1:fix(wp_l/(2*pi)*1024)=afl(1:fix(wp_l/(2*pi)*1024)-1;%将通带幅值赋给序列一 afl_s(fix(ws_l/(2*pi)*1024)+3:end)=afl(fix(ws_l/(2*pi)*1024)+3:end/2);%将阻带幅值赋给序列二 figure(3);plot(0:1024/2-1/1024,afl_p+afl_s);%将通带和阻带的波形显示到一幅图像上 title(passband and stopband approximation error of lowpass
10、 filter);xlabel(Normalized frequency);ylabel(Passband and stopband ripple);带通滤波器设计%Bandpass filter:ws1=,wp1=,wp2=,ws2=,N=80%peak passband ripple is,each peak stopband ripple is ws_b1=*pi;wp_b1=*pi;wp_b2=*pi;ws_b2=*pi;N2=80;deltab_1=;deltab_2=;deltab_3=;deltab=deltab_1,deltab_2,deltab_3;f_b=0 ws_b1 w
11、p_b1 wp_b2 ws_b2 pi/pi;a_b=0 0 1 1 0 0;n,f,m,w_b=firpmord(f_b(2:5),0 1 0,deltab);fil_b=firpm(N2,f_b,a_b,w_b);figure(4);stem(fil_b,.);title(impulse response of bandpass filter);xlabel(time sequence);ylabel(amplitude);fft_b=fft(fil_b,1024);db_b=20*log10(abs(fft_b);figure(5);plot(0:length(fft_b)-1/leng
12、th(fft_b),db_b);title(Log-magnitude response of bandpass filter);xlabel(Normalized frequency);ylabel(Magnitude response(dB);axis(0 -100 10);afb=abs(fft_b);afb_p=zeros(1,1024/2);afb_s=zeros(1,1024/2);afb_p(fix(wp_b1/(2*pi)*1024)+3:fix(wp_b2/(2*pi)*1024)=afb(fix(wp_b1/(2*pi)*1024)+3:fix(wp_b2/(2*pi)*1
13、024)-1;afb_s(fix(ws_b2/(2*pi)*1024)+2:end)=afb(fix(ws_b2/(2*pi)*1024)+2:end/2);afb_s(1:fix(ws_b1/(2*pi)*1024)=afb(1:fix(ws_b1/(2*pi)*1024);figure(6);plot(0:1024/2-1/(1024),afb_p+afb_s);title(passband and stopband approximation error of bandpass filter);xlabel(Normalized frequency);ylabel(Passband an
14、d stopband ripple);高通滤波器设计%Highpass filter:ws=,wp=,N=34%peak passband ripple is,peak stopband ripple is ws_h=*pi;wp_h=*pi;N3=34;deltah_1=;deltah_2=;deltah=deltah_1,deltah_2;f_h=0 ws_h wp_h pi/pi;a_h=0 0 1 1;n,f,m,w_h=firpmord(f_h(2:3),0 1,deltah)fil_h=firpm(N3,f_h,a_h,w_h);figure(7);stem(fil_h,.);ti
15、tle(impulse response of highpass filter);xlabel(time sequence);ylabel(amplitude);fft_h=fft(fil_h,1024);db_h=20*log10(abs(fft_h);figure(8);plot(0:length(fft_h)-1/length(fft_h),db_h);title(Log-magnitude response of highpass filter);xlabel(Normalized frequency);ylabel(Magnitude response(dB);axis(0 -100
16、 10);afh=abs(fft_h);afh_p=zeros(1,1024/2);afh_s=zeros(1,1024/2);afh_p(fix(wp_h/(2*pi)*1024)+5:end)=afh(fix(wp_h/(2*pi)*1024)+5:end/2)-1;afh_s(1:fix(ws_h/(2*pi)*1024)=afh(1:fix(ws_h/(2*pi)*1024);figure(9);plot(0:1024/2-1/(1024),afh_p+afh_s);title(passband and stopband approximation error of highpass filter);xlabel(Normalized frequency);ylabel(Passband and stopband ripple);仿真图 1)以下三幅图依次为低通滤波器的冲激响应,对数幅频响应和通带阻带波纹 2)以下三幅图依次为带通滤波器的冲激响应,对数幅频响应和通带阻带波纹 3)以下三幅图依次为高通滤波器的冲激响应,对数幅频响应和通带阻带波纹