数字信号处理 (Digital Signal Processing) 国家电工电子实验示范中心 数字信号处理课程组
第7章 FIR 数字滤波器设计 CUST 7.1 FIR DF 设计的窗函数法 7.2 窗函数 7.3 FIR DF 设计的频率抽样法 7.5 几种简单形式的滤波器 7.6 简单整系数滤波器 7.7 差分滤波器
CUST IIR数字滤波器: 有极点,也有零点,因此可以借用经典的连续滤波器的设计方法,且取得非常好的效果,如好的衰减特性,准确的边缘频率。由于FIR数字滤波器 只有零点而没有极点,所以没办法借用连续滤波器的设计方法。其思路是: 直接从频域出发,即以某种准则逼近理想的频率特性,且保证滤波器具有线性相位。
7.1 Fourier 级数法(窗函数法) 一、思路与方法: CUST 1. 由理想的频率响应 得到理的 ; 1. 由理想的频率响应 得到理的 ; 2. 由 得到因果、 有限长的单位抽样响应 ; 3. 对 加窗得到较好的频率响应。 理想频率响应
CUST 设理想低通滤波器的幅频为1,相频为零: 则: 特点: 无限长 非因果 偶对称 解决方法: 截短, 移位 保留 即: 特点: 无限长 非因果 偶对称 解决方法: 截短, 移位 保留 即: 隐含着使用了窗函数
CUST 于是: 注意: H(Z) 是因果的,且是线性相位的,即 ? 即事先给一线性相位 为了省去每次的移位,可以令: 在通带内 这样:
CUST 于是: 使用了矩形窗 上式的的表达式及设计 的思路可推广到高通、带阻及带通滤波器,也可推广到其它特殊类型的滤波器。实际上,给定一个 ,只要能积分得到 ,即可由截短、移位的方法得到因果的、且具有线性相位的FIR滤波器 。
CUST 高通: 令: 相当于用一个截止频率在 处的低通滤波器 (实际上是全通滤波器)减去一个截止频率 在 处的低通滤波器。
CUST 带通: 令: 相当于用一个截止频率在 处的低通滤波器 减去一个截止频率在 处的低通滤波器。
CUST 带阻: 令: 相当于 ? :窗函数,自然截短即是矩形窗。 当然也可以用其它形式的窗函数。
CUST 结果如右图 例1.设计低通 FIR DF, 令归一化截止频 率 =0.125, M=10,20,40, 用矩形窗截短。
CUST 接上例:M=10 分别用矩形窗 和Hamming 窗 使用Hamming 窗后,阻带衰减变好,但过渡带变宽。
CUST 例: 理想差分器及其设计 理想微分器的频率特性: 令: 理想差分器的频率特性:
CUST 奇对称,纯虚函数 第2类FIR滤波器 理想相频特性
CUST 实际相频特性 幅频: 1 矩形窗 2 哈明窗 有关各种差分器的性能,本 章将继续讨论
CUST 思考:能否用上一章的方法设计差分器和Hilbert变换器? 例: 设计 Hilbert 变换器 第2类FIR滤波器
二、 FIR DF 设计的窗函数法的特点: CUST 优点:1. 无稳定性问题; 2. 容易做到线性相位; 优点:1. 无稳定性问题; 2. 容易做到线性相位; 3. 可以设计各种特殊类型的滤波器; 4. 方法特别简单。 缺点:1. 不易控制边缘频率; 2. 幅频性能不理想; 3. 较长; 改进:1. 使用其它类型的窗函数; 2. 改进设计方法。
CUST 三、关于对 截短的讨论 误差曲线 误差能量
CUST 请自己导出此式 什么情况下 为最小 ?
CUST 最小 所以,有限项傅立叶级数是在最小平方意 义上对原信号的逼近。傅立叶级数是正交 变换,这也体现了正交变换的性质。
CUST 窗函数法 同一事情不同名称 傅里叶系数 周期信号展开为傅里叶级数 傅里叶级数法
7.2 窗函数 CUST 矩形窗 窗函数的使用在数字信号处理中是不可避免的。数据、频谱、自相关函数等都需要截短。对窗函数提出那几方面的要求? 关键是要搞清楚使用窗函数后所产生的影响:一个域相乘,在另一个域是卷积。
CUST 对窗函数的技术要求: 1. 3 dB 带宽 :主瓣归一化幅度降到- 3 dB 时的带宽;或直接用 。令 则 的单位为 ; 越小越好! 2. 边瓣最大峰值 ( dB) 越小越好! 3. 边瓣谱峰衰减速度 ( dB/oct) 越大越好!
CUST 常用窗函数: 1. 矩形窗 2. 三角窗Bartlett窗 3.汉宁窗Hanning 4.汉明窗Hamming
CUST 窗函数
CUST 窗函数
CUST 7.3 FIR DF设计的频率抽样法 窗函数法:给定连续的理想的 ,用 得到因果的、具有线性相位的 FIR DF 逼近
CUST 离散化 直接赋值 计算更容易 滤波器已设计出 思考: 相等?
CUST 如何指定 ? 可指定:
CUST 转移函数、频率响应和给定的 的关系: 有何特点 用DFT系数作为权函数来表示设计出的
CUST 关系? 原抽样 再抽样
CUST 用插值的方法得到所要的滤波器: 插值函数 线性相位 权重 应为实数 所以: 如何指定 ?
CUST 为偶数: 为奇数: 其它赋值方法见书。当然,阻带内应指定为零。另外,为了得到好的幅频响应,在1和0之间加过渡点,如0.5 。
7.4 用Chebyshev 最佳一致逼近设计 FIR DF CUST 7.4 用Chebyshev 最佳一致逼近设计 FIR DF 7.4.1 最佳一致逼近定理 7.4.2 利用最佳一致逼近理论设计 FIR DF 7.4.3 关于误差函数的极值特性 7.4.4 FIR DF 的四种表示形式 7.4.5 设计举例 7.4.6 滤波器阶次估计
CUST 上述两种方法(窗函数法和频率抽样法)设计 的 FIR DF 的频率响应都不理想,即通带不够 平,阻带衰减不够大,过渡带过宽,频率边缘 不能精确指定。因此我们要寻找新的设计方法。 此方法即是Chebyshev 最佳一致逼近 法。该方 法在数字信号处理中占有重要的定位,是设计 FIR DF 最理想的方法。但是,该方法的原理稍为复杂。
目标: ? CUST 给定理想的 , 设计 , 使 是对 的“最佳”逼近。 对函数 f(x) 逼近的方法: 1. 最小平方逼近: 给定理想的 , 设计 , 使 是对 的“最佳”逼近。 ? 对函数 f(x) 逼近的方法: 1. 最小平方逼近: 着眼积分区间内整体误差最小。傅立叶级数法即是这一种。
CUST 插值法:寻找 阶多项式 ,使其 在 个点 上满足: 频率抽样方法 3. 最佳一致逼近:寻找 ,使误差 插值法:寻找 阶多项式 ,使其 在 个点 上满足: 频率抽样方法 3. 最佳一致逼近:寻找 ,使误差 在区间 [a,b] 均匀一致,并使误差的极大值 达到最小。
McClellan----Parks 方法 CUST Chebyshev最佳一致逼近理论解决了 的存 在性、唯一性及构造方法等问题。 将最佳一致逼近理论应用于FIR DF的设计, 是数学和信号处理理论相结合的又一典型范 例。该方法可以设计出性能优良的FIR DF, 是FIR设计的主要方法。该方法又称 McClellan----Parks 方法
CUST 一、切比雪夫最佳一致逼近定理 在 阶多项式的集合中,寻找多项式 使其相对其它所有的多项式 对 的偏差为最小: 最小最大原理
CUST 交错点组原理: 误差最大值 令: 误差曲线 是 最佳一致逼近的充要条件是, 在 上至少存在 个交错点 使得: 极值点 交错点
? CUST 所以: 是 的极值点,它们构成了一个“交错点 组” 什么样的函数(或多项式)可以充当 误差曲线 Chebyshev 多项式: 是 的极值点,它们构成了一个“交错点 组” 什么样的函数(或多项式)可以充当 误差曲线 ? Chebyshev 多项式: 在区间 [-1,1]上存在 个点:
CUST ? 轮流使 取极值+1,-1。 是 的 阶多项式,最高项系数是 , 在所有阶多项式的集合中, 和 0 的偏 轮流使 取极值+1,-1。 是 的 阶多项式,最高项系数是 , 在所有阶多项式的集合中, 和 0 的偏 差为最小。因此,可用 为误差多项式。 : 个极值点 交错点组定 理要求: 个极值点 ?
CUST 二、利用最佳一致逼近理论设计 FIR DF 理想滤波器 要设计的滤波器
CUST 线性相位FIR滤波器有四种形式: 四种情况下的“滤波器增益” 都是实函数,也有四种表示形式。其一是: 我们用 逼近理想滤波器。显然,若能求 出 ,则滤波器也就设计出来了。
CUST 用 一致逼近 目标 使误差曲线 寻找 的最大值为最小,并呈现交错。
CUST 在设计滤波器时,对通带和阻带往往有不同的要求,如通带要求特别平,这是需要牺牲阻带;反之,要想阻带衰减特别大,则需要牺牲通带。实现方法:给以不同的加权。 定义加权函数: 需要离散化
CUST 由交错点组定理: 写成矩阵形式 注意,将频率分成了 个离散的点。分 点在通带和阻带上,过渡带不考虑。目的是 取得 个极值点。
CUST 方阵,可唯一地求出 然而,该方程的求解异常困难!
数字信号处理中最有名的算法之一! CUST McClellan. J.H & Parks. T. W 等于70年代初提出用数值分析中的Remez算法,靠一次次的迭代来求解最优的系数 及 。从而达到滤波器设计的目的。 该方法不但可以用来设计低通、高通、带通、带阻等经典滤波器,而且可以用来设计差分滤波器,Hilbert变换器。不但可以给出好的幅频特性、线性相位,而且可以给出较为准确定边缘频率。 数字信号处理中最有名的算法之一!
CUST Step1. 先在通带、阻带频率轴上等间隔取 M+2 个频率点 ,计算出 。它是相对第 一次指定的交错点组产生的误差 A.
CUST 求出 后,利用插值公式,在不知 的情况下求出 。 B.
C. 完成第一次迭代! CUST 当然,初次求出的 肯定不是最优的! 将求出的 代入 可求出误差函数 。 如果第一次迭代即是最优,那么 应是 当然,初次求出的 肯定不是最优的! 将求出的 代入 C. 可求出误差函数 。 完成第一次迭代! 如果第一次迭代即是最优,那么 应是 的极值点。当然,一次迭代是不够的。
CUST Step2. 检查是否有 的频率点(肯定 有)。将出现这种情况的频率点和原来指定的 频率点 中相距最近的点相交换(注 频率点 中相距最近的点相交换(注 意:这样的点可能不止一个),这样,就得到 一组新的频率点组 ,当然,它们不 再是原频率区间的等分。
求出新的 A. 求出新的 B. 求出新的 C. 再重复步骤2,又可得到一组新的交错点组: 代入公式 再代入公式 再代入公式 CUST Step3. 将新的频率点组 代入公式 A. 求出新的 重复了步骤 1 再代入公式 求出新的 B. 再代入公式 求出新的 C. 再重复步骤2,又可得到一组新的交错点组:
CUST 如此重复迭代,每一次都是把新的局部极值点 当作新的交错点组,所以,每一次的 都是递 增的,最后收敛到自己的上限。再迭代一次, 当作新的交错点组,所以,每一次的 都是递 增的,最后收敛到自己的上限。再迭代一次, 也不会再增加,频率点组也不会再移动, 这时的 即是对 的最佳一致逼近。 Step4. 将最优的 配上线性相位,作傅 立叶反变换,即可得所设计滤波器的 。
CUST 是阻带峰值偏差 ; 通带内的峰 值偏差 最佳一致逼近是在通带与阻带内进行的,过渡带没有考虑。 迭代步骤
CUST 三、关于误差函数的极值特性(见书) 四、FIR DF 的四种表示形式
CUST 把上述四种形式稍作改造,得到如下的统一形式,目的是便于编程:
CUST 五、设计举例 例1: 设计低通 FIR DF: 调整通带、阻带的加权及滤波器的长度。 设计结果
CUST 参数调整对滤波器性能的影响:
CUST 例2: 设计多带滤波器,抽样频率500Hz, 在 50Hz、 100Hz 及150Hz处陷波。 通带加权为8,阻带为1 -17dB 通带、阻带加权都是1 -25dB
CUST 六、阶次估计 设计滤波器之前,滤波器的长度(即阶次)是未知道。显然,要求:通带越平,阻带衰减越大,过渡带越窄,滤波器的阶次越高。 :通带纹波 :阻带纹波 经验公式
CUST 例如,对例1的第一种情况: 求出: 和原来给定的相同 另一估计公式: 估计出的阶次稍低
7.5 几种简单形式的滤波器 一、平均滤波器 二、平滑滤波器 三、梳状滤波器 CUST 7.5 几种简单形式的滤波器 一、平均滤波器 二、平滑滤波器 三、梳状滤波器 这一类滤波器性能不是很好,但滤波器简单,有时很实用,有的具有一些特殊的用途。
CUST 信噪比(SNR)与噪声减少比(NRR) 观察信号 信号 噪声 信噪比: 为了减少噪声,将 通过一个滤波器
CUST 噪声减少比(Noise Reduction Ration, NRR): 越小越好! 可以证明:
CUST 一、平均滤波器 点平均器 IIR系统
CUST
CUST
可以求出: CUST 可见 N 足够大,即可就可以获得足够小的NRR。但是, N 过大会使滤波器具有过大的延迟: 群延迟=(N-1)/2 而且会使其主瓣的单边的带宽大大降低,这就有可能在滤波时使有用的信号 s(n) 也受到损失。因此,在平均器中,N 不宜取得过大。
二、平滑滤波器 CUST Savitzky-Golay平滑器:基于多项式拟合的方法,具体推导过程见教材。 5点2次(抛物线)拟合: 7点3次拟合: 在NRR和阶次N之间取得折中。MATLAB文件: sgolay.m
CUST 三、梳状滤波器 作用:去除周期性的噪声,或是增强周期 性的信号分量。
CUST
CUST
7.6 建立在极零抵消基础上的 简单整系数的滤波器 CUST 7.6 建立在极零抵消基础上的 简单整系数的滤波器 对信号作实时滤波处理时,有时对滤波器的性能要求并不很高,但要求计算速度快,滤波器的设计也应简单易行,因而希望滤波器的系数为整数。特别是当用汇编语言编写程序时,更希望如此。采用极零抵消的方法,可以设计出简单整系数的低通、高通、带通和带阻滤波器。
CUST 单位圆上均匀分布M个零点 1. 低通 设置一极点,抵消掉z=1处零点 M点平均器
CUST 2. 高通 单位圆上均匀分布M个零点 设置一极点,抵消掉z=-1处零点
CUST 上述低通和高通滤波器的系数都是整系数(系数1/N可最后单独处理),如果认为幅频响应不满意,可以取 滤波器系数仍为整数
CUST 3. 带通 实际应用
CUST 为保证分母取整数,要求 取整数 因此: 在要求整系数的情况下,对带通滤波器,其通带的中心频率收到限制。
CUST 4. 带阻 幅频: 全通幅频-带通幅频 设计方法 相频: 配置相频 例 令 ,设计50Hz陷波器, 中心频率范围在 解:取
CUST 由于 因此增加一对共轭极点: 150Hz ? 现在需要确定M:
CUST 具有相同相位
CUST
CUST 7.7 低阶低通差分滤波器 ? 理想微分器: 理想差分器:
CUST 为了防止在高频端将噪声放大,取: 低通差分器: 差分器的一般形式:
CUST 差分器的抽样响应: 所以,差分器是奇对称的。 现在的任务是确定系数 两点中心差分:
CUST “最佳”差分器 逼近 误差: 得到最佳系数 得到最佳通带
CUST 最佳通带: 可求出:M=2 可求出:M=3
CUST M=2 和 3 时“最佳”差分器的幅频特性: 但是,上述“最佳”差分器的系数全是小数,我们希望得到整系数。实际上,人们从不同的角度,已给出了不同形式的整系数差分器。后来,人们还导出了“次最佳”的整系数差分器。
CUST 单纯 M 次差分; 牛顿-柯斯特差分; Lanczos差分(多项式拟合); 平滑化差分; 最佳差分; 整系数 比较参数:
7.8 滤波器设计小结 CUST IIR 滤波器的优点: 1. 好的通带与阻带衰减;准确的通带与阻带边缘频率; 2. 滤波时需要的计算量较少 7.8 滤波器设计小结 IIR 滤波器的优点: 1. 好的通带与阻带衰减;准确的通带与阻带边缘频率; 2. 滤波时需要的计算量较少 缺点: 不具有线性相位,有可能存在稳定性问题。 FIR 滤波器的优点: 1. 可取得线性相位; 2. 无稳定性问题; 缺点: 滤波时需要的计算量较少
CUST IIR 窗函数法 设计方法简单,性能不够好 频率抽样法 一致逼近法 简单平均 简单平滑 FIR 性能非常好 简单,实用,性能不够好 梳状滤波器 极零抵消滤波器 特殊用途,周期性 IIR 简单实用,速度快
与本章内容有关的MATLAB文件: CUST 产生窗函数的文件有八个: bartlett(三角窗); 2. blackman(布莱克曼窗) ; 3. boxcar(矩形窗); 4. hamming(哈明窗); 5. hanning(汉宁窗); 6. triang(三角窗); 7. chebwin(切比雪夫窗); 8 .kaiser(凯赛窗); 两端为零 调用方式都非常简单请见help文件 两端不为零 稍为复杂
CUST 9.fir1.m 用“窗函数法”设计FIR DF。 调用格式: (1)b = fir1(N,Wn); (2) b = fir1(N,Wn,‘high’); (3) b = fir1(N,Wn, ‘stop’); N:阶次,滤波器长度为N+1; Wn:通带截止频率,其值在0~1之间,1对应 Fs/2 b: 滤波器系数。
CUST 对格式(1),若Wn为标量,则设计低通滤波器,若 Wn是1×2的向量,则用来设计带通滤波器,若Wn是 1×L的向量,则可用来设计L带滤波器。这时,格式 (1)要改为: b = fir1(N,Wn, 'DC-1'), 或 b = fir1(N,Wn, 'DC-0') 前者保证第一个带为通带,后者保证第一个带为阻带。 格式(2)用来设计高通滤波器, 格式(3)用来设计带阻滤波器。 在上述所有格式中,若不指定窗函数的类型,fir1自 动选择Hamming窗。
CUST 设计结果如下: 10.fir2.m 本文件采用“窗函数法”设计具有任意幅 频相应的FIR 数字滤波器。其调用格式是: b = fir1(N, F, M); F是频率向量,其值在0~1之间,M是和F相对应 的所希望的幅频相应。如同fir1, 缺省时自动选用 Hamming窗。 例 :设计一多带滤波器,要求频率在0.2~0.3, 0.6~0.8 之间为1,其余处为零。 设计结果如下:
CUST N=30 N=90 N=30,90时幅频响应响应及理想幅频响应;
CUST 11. remez.m 设计Chebyshev最佳一致逼近FIR滤波 器、Hilbert变换器和差分器。调用格式是: (1) b=remez(N, F, A); (2) b=remez(N, F, A, W); (3)b=remez(N,F,A,W,‘Hilbert’); (4) b=remez(N, F, A,W, ‘'differentiator') N是给定的滤波器的阶次,b是设计的滤波器的系数,其长度为N+1;F是频率向量,A是对应F的各频段上的理想幅频响应,W是各频段上的加权向量。
CUST F、A及W的指定方式和例7.4.1和7.4.2所讨论过的一样,唯一的差别是F的范围为0~1,而非~0~0.5, 1对应抽样频率的一半。需要指出的是,若b的长度为偶数,设计高通和带阻滤波器时有可能出现错误,因此,最好保证b的长度为奇数,也即N应为偶数。
CUST 例1: 设计低通 FIR DF: b=remez(N, F, A, W) F = (0, 0.6, 0.7, 1)
CUST 12.remezord.m 本文件用来确定在用Chebyshev最佳一致逼近设计FIR滤波器时所需要的滤波器阶次。其调用格式是: [N, Fo, Ao, W] = remezord(F, A, DEV, Fs)。 F、A的含意同文件remez,DEV是通带和阻带上的偏差;输出的是适合要求的滤波器阶次N、频率向量Fo、幅度向量Ao和加权向量W。若设计者事先不能确定要设计的滤波器的阶次,那么,调用remezord后,就可利用这一族参数调用remez, 即 b=remez(N, Fo, Ao, W),从而设计出所需要滤波器。因此,remez和remezord常结合起来使用。需要说明的是,remezord给出的阶次N有可能偏低,这时适当增加N即可;另外,最好判断一下,若N为奇数,就令其加一,使其变为偶数,这样b的长度为奇数。
CUST 13. firls.m 用最小平方法设计线性相位FIR滤波器,可设计任意给定的理想幅频响应; 14. fircls.m用带约束的最小平方法设计线性相位FIR滤波器,可设计任意给定的理想幅频响应; 15. fircls1.m 用带约束的最小平方方法设计线性相位FIR低通和高通滤波器。 16. sgolay.m 用来设计 Savitzky-Golay FIR 平滑滤波器,其原理见9.1.1节 17. firrcos.m 用来设计低通线性相位FIR滤波器,其过渡带为余弦函数形状。