FIR数字滤波器的设计--等波纹最佳逼近法
frequency函数计算频数等波最佳逼近的原理简介
    等波纹最佳逼近法是一种优化设计法,即最大误差最小化准则,它克服了窗函数设计法和频率采样法的缺点,使最大误差(即波纹的峰值)最小化,并在整个逼近频段上均匀分布。用等波纹最佳逼近法设计的FIR数字滤波器的幅频响应在通带和阻带都是等波纹的,而且可以分别控制通带和阻带波纹幅度,这就是等波纹的含义。最佳逼近是指在滤波器长度给定的条件下,使加权误差波纹幅度最小化。与窗函数设计法和频率采样法比较,由于这种设计法使滤波器的最大逼近误差均匀分布,所以设计的滤波器性能价格比最高。阶数相同时,这种设计法使滤波器的最大逼近误差最小,即通带最大衰减最小,阻带最小衰减最大;指标相同时,这种设计法使滤波器阶数最低。 
等波纹最佳逼近法的设计思想 。用表示希望逼近的幅度特性函数,要求设计线性相位FIR数字滤波器时,必须满足线性相位约束条件。用表示实际设计的滤波器的幅度特性函数。定义加权误差函数为 
                               
式中,为幅度误差加权函数,用来控制不同频带(一般指通带和阻带)的幅度逼近精度。等波纹最佳逼近法的设计在于到滤波器的系数向量,使得在通带和阻带内的最大绝对值幅度误差为最小,这也就是最大误差最小化问题。
等波纹逼近法设计滤波器的步骤和函数介绍
1.根据滤波器的设计指标的要求:边界频率,通带最大衰减,阻带最大衰等估计滤波器阶数n,确定幅度误差加权函数
2.采用Parks-McClellan算法,获得所设计滤波器的单位脉冲响应
实现FIR数字滤波器的等波纹最佳逼近法的MATLAB信号处理工具函数为firpm和firpmord。 firpm函数采用数值分析中的多重交换迭代算法求解等波纹最佳逼近问题,求的满足等波纹最佳逼近准则的FIR数字滤波器的单位脉冲响应firpmord根据逼近指标,计算采用Parks-McClellan算法等波纹最佳逼近滤波器的最低阶数,误差加权向量w,归一化边界频率向量f。
3对firpm和firpmord的说明
firpm
函数功能:采用Parks-McClellan算法设计FIR滤波器
函数格式:hn=firpm(n,f,m,w)
n是滤波器的阶
hn是数字滤波器的单位脉冲响应,其长度为n+1
f是希望滤波器的边界频率向量,要求f是单调增向量,并且从0开始,以1结束,1对于数字频率
m是与f对应的希望滤波器的幅度向量,m和f的长度相等,表示希望滤波器在频率点上的幅频响应,m和f给出了希望滤波器的幅度特性。
w是误差加权向量,其长度为f的一半。表示对m中第i个频率段幅度逼近精度的加权值。w缺省时,函数默认w全为1,即每个频率段的逼近误差加权值相同。
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的两倍,即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=;    %初始化参数