cfirpmgydF4y2Ba

复杂非线性相位等纹波FIR滤波器设计gydF4y2Ba

语法gydF4y2Ba

B = cfirpm(n,f,@gydF4y2BafrespgydF4y2Ba)gydF4y2Ba
B = cfirpm(n,f,@gydF4y2BafrespgydF4y2Baw)gydF4y2Ba
B = cfirpm(n,f,a)gydF4y2Ba
B = cfirpm(n,f,a,w)gydF4y2Ba
B = cfirpm(…,gydF4y2Ba“符号”gydF4y2Ba)gydF4y2Ba
B = cfirpm(…,'skip_stage2')gydF4y2Ba
B = cfirpm(…,gydF4y2Ba“调试”gydF4y2Ba)gydF4y2Ba
B = cfirpm(…,{lgrid})gydF4y2Ba
[b,delta] = cfirpm(…)gydF4y2Ba
[b,delta,opt] = cfirpm(…)gydF4y2Ba

描述gydF4y2Ba

cfirpmgydF4y2Ba允许为可能复杂的设计指定任意频域约束gydF4y2Ba冷杉过滤器。切比雪夫(或极大极小)滤波器误差进行优化,产生等纹波FIR滤波器设计。gydF4y2Ba

B = cfirpm(n,f,@gydF4y2BafrespgydF4y2Ba)gydF4y2Ba返回一个长度gydF4y2Ban + 1gydF4y2BaFIR滤波器与函数返回的所需频率响应的最佳近似gydF4y2BafrespgydF4y2Ba,它由函数句柄(gydF4y2Ba@frespgydF4y2Ba).gydF4y2BafgydF4y2Ba是频带边对的向量,指定范围为-1和1,其中1对应归一化奈奎斯特频率。频率必须是递增的,并且gydF4y2BafgydF4y2Ba长度必须均匀。频带跨度gydF4y2Baf (k)gydF4y2Ba来gydF4y2Baf (k + 1)gydF4y2Ba为gydF4y2BakgydF4y2Ba奇怪的;的时间间隔gydF4y2Baf (k + 1)gydF4y2Ba来gydF4y2Baf (k + 2)gydF4y2Ba为gydF4y2BakgydF4y2Ba奇数是优化过程中的“过渡带”或“不关心”区域。gydF4y2Ba

预定义的gydF4y2BafrespgydF4y2Ba频率响应功能包括一些常见的滤波器设计,如下所述。(见gydF4y2Ba创建函数句柄gydF4y2Ba(MATLAB)获取关于如何创建自定义的更多信息gydF4y2BafrespgydF4y2Ba函数)。对于所有预定义的频率响应函数,对称选项gydF4y2Ba“符号”gydF4y2Ba默认为gydF4y2Ba“甚至”gydF4y2Ba如果不包含负频率gydF4y2BafgydF4y2Ba而且gydF4y2BadgydF4y2Ba=gydF4y2Ba0gydF4y2Ba;否则gydF4y2Ba“符号”gydF4y2Ba默认为gydF4y2Ba“没有”gydF4y2Ba.(见gydF4y2Ba“符号”gydF4y2Ba详情请参阅下面的选项。)对于所有预定义的频率响应函数,gydF4y2BadgydF4y2Ba指定组延迟偏移量,使筛选器响应的组延迟为gydF4y2Ban / 2 + dgydF4y2Ba以样本间隔为单位。负值产生更少的延迟;正值会产生更多的延迟。默认情况下gydF4y2BadgydF4y2Ba=gydF4y2Ba0gydF4y2Ba:gydF4y2Ba

  • @lowpassgydF4y2Ba,gydF4y2Ba@highpassgydF4y2Ba,gydF4y2Ba@allpassgydF4y2Ba,gydF4y2Ba@bandpassgydF4y2Ba,gydF4y2Ba@bandstopgydF4y2Ba

    这些函数具有共同的语法,下面举例说明gydF4y2Ba@lowpassgydF4y2Ba.gydF4y2Ba

    B = cfirpm(n,f,@lowpass,…)gydF4y2Ba而且gydF4y2Ba

    B = cfirpm(n,f,{@lowpass,d},…)gydF4y2Ba设计一个线性相位(gydF4y2Ban / 2 + dgydF4y2Ba延迟)过滤器。gydF4y2Ba

    请注意gydF4y2Ba

    为gydF4y2Ba@bandpassgydF4y2Ba滤波器,频率向量中的第一个元素必须小于或等于零,最后一个元素必须大于或等于零。gydF4y2Ba

  • @multibandgydF4y2Ba设计了一种带幅任意的线性相位频响滤波器。gydF4y2Ba

    B = cfirpm(n,f,{@multiband,a},…)gydF4y2Ba而且gydF4y2Ba

    B = cfirpm(n,f,{@multiband,a,d},…)gydF4y2Ba指定向量gydF4y2Ba一个gydF4y2Ba在带的边缘处包含所需的振幅gydF4y2BafgydF4y2Ba.点对之间频率上的期望振幅gydF4y2Baf (k)gydF4y2Ba而且gydF4y2Baf (k + 1)gydF4y2Ba为gydF4y2BakgydF4y2Ba奇数是连接这些点的线段gydF4y2Ba(f (k) (k))gydF4y2Ba而且gydF4y2Ba(f (k + 1) (k + 1))gydF4y2Ba.gydF4y2Ba

  • @differentiatorgydF4y2Ba设计了一个线性相位微分器。对于这些设计,零频率必须在一个过渡波段,并且波段权重设置为与频率成反比。gydF4y2Ba

    B = cfirpm(n,f,{@微分器,fs},…)gydF4y2Ba而且gydF4y2Ba

    B = cfirpm(n,f,{@微分器,fs,d},…)gydF4y2Ba指定采样率gydF4y2BafsgydF4y2Ba用于确定微分器响应的斜率。如果省略了,gydF4y2BafsgydF4y2Ba默认值为1。gydF4y2Ba

  • @hilbfiltgydF4y2Ba设计了一个线性相位希尔伯特变换滤波器响应。对于希尔伯特设计,零频率必须在过渡带内。gydF4y2Ba

    B = cfirpm(n,f,@hilbfilt,…)gydF4y2Ba而且gydF4y2Ba

    b = cfirpm(N,F,{@hilbfilt,d},…)gydF4y2Ba设计一个线性相位(gydF4y2Ban / 2 + dgydF4y2Ba希尔伯特变换滤波器。gydF4y2Ba

  • @invsincgydF4y2Ba设计了一个线性相位反正弦滤波器的响应。gydF4y2Ba

    B = cfirpm(n,f,{@invsinc,a},…)gydF4y2Ba而且gydF4y2Ba

    B = cfirpm(n,f,{@invsinc,a,d},…)gydF4y2Ba指定增益gydF4y2Ba一个gydF4y2Ba对于sinc函数,计算为sinc(gydF4y2Ba一个gydF4y2Ba*gydF4y2BaggydF4y2Ba),gydF4y2BaggydF4y2Ba包含归一化到范围[- 1,1]的优化网格频率。默认情况下,gydF4y2Ba一个gydF4y2Ba= 1。组延迟偏移量为gydF4y2BadgydF4y2Ba,这样过滤器响应将有一个组延迟gydF4y2BaNgydF4y2Ba/ 2 +gydF4y2BadgydF4y2Ba以采样间隔为单位,其中N为滤波器阶数。负值产生更少的延迟,而正值产生更多的延迟。默认情况下,gydF4y2BadgydF4y2Ba= 0。gydF4y2Ba

B = cfirpm(n,f,@gydF4y2BafrespgydF4y2Baw)gydF4y2Ba在向量中使用实数,非负权gydF4y2BawgydF4y2Ba在每个频带中对拟合进行加权。的长度gydF4y2BawgydF4y2Ba是长度的一半吗gydF4y2BafgydF4y2Ba,所以每个波段正好有一个权重。gydF4y2Ba

B = cfirpm(n,f,a)gydF4y2Ba是的同义词吗gydF4y2BaB = cfirpm(n,f,{@multiband,a})gydF4y2Ba.gydF4y2Ba

B = cfirpm(n,f,a,w)gydF4y2Ba应用一组可选的正权重,每个波段一个,以便在优化期间使用。如果gydF4y2BawgydF4y2Ba,则将权重设置为unity。gydF4y2Ba

B = cfirpm(…,gydF4y2Ba“符号”gydF4y2Ba)gydF4y2Ba对设计的脉冲响应施加对称性约束,其中gydF4y2Ba“符号”gydF4y2Ba可能是以下之一:gydF4y2Ba

  • “没有”gydF4y2Ba表示无对称约束。如果通过了任何负带边缘频率,或如果gydF4y2BafrespgydF4y2Ba不提供默认值。gydF4y2Ba

  • “甚至”gydF4y2Ba表示一个真实且均匀的脉冲响应。这是高通、低通、全通、带通、带阻、反正弦和多带设计的默认值。gydF4y2Ba

  • “奇怪”gydF4y2Ba表示实奇脉冲响应。这是希尔伯特和微分器设计的默认值。gydF4y2Ba

  • “真实”的gydF4y2Ba表示频率响应的共轭对称性gydF4y2Ba

如果有任何gydF4y2Ba“符号”gydF4y2Ba其他选择gydF4y2Ba“没有”gydF4y2Ba,则只应在正频率上指定带边;负频率区域由对称性填充。如果一个gydF4y2Ba“符号”gydF4y2Ba选项未指定时,则gydF4y2BafrespgydF4y2Ba函数查询默认设置。任何用户提供的gydF4y2BafrespgydF4y2Ba函数应该返回一个有效的gydF4y2Ba“符号”gydF4y2Ba选项gydF4y2Ba“违约”gydF4y2Ba作为过滤器顺序gydF4y2BaNgydF4y2Ba.gydF4y2Ba

B = cfirpm(…,'skip_stage2')gydF4y2Ba禁用第二阶段优化算法,该算法仅在gydF4y2BacfirpmgydF4y2Ba确定标准未达到最优解gydF4y2BafirpmgydF4y2Baerror-exchange。禁用此算法可能会提高计算速度,但可能会降低准确性。缺省情况下,开启第二阶段优化。gydF4y2Ba

B = cfirpm(…,gydF4y2Ba“调试”gydF4y2Ba)gydF4y2Ba启用在过滤器设计期间显示中间结果,其中gydF4y2Ba“调试”gydF4y2Ba可能是其中之一gydF4y2Ba“跟踪”gydF4y2Ba,gydF4y2Ba“阴谋”gydF4y2Ba,gydF4y2Ba“两个”gydF4y2Ba,或gydF4y2Ba“关闭”gydF4y2Ba.默认设置为gydF4y2Ba“关闭”gydF4y2Ba.gydF4y2Ba

B = cfirpm(…,{lgrid})gydF4y2Ba使用整数gydF4y2BalgridgydF4y2Ba要控制频率网格的密度,这大致有gydF4y2Ba2 ^ nextpow2 (lgrid * n)gydF4y2Ba频率点。的默认值。gydF4y2BalgridgydF4y2Ba是gydF4y2Ba25gydF4y2Ba.请注意gydF4y2Ba{lgrid}gydF4y2Ba参数必须是一个1乘1的单元格数组。gydF4y2Ba

的任何组合gydF4y2Ba“符号”gydF4y2Ba,gydF4y2Ba“skip_stage2”gydF4y2Ba,gydF4y2Ba“调试”gydF4y2Ba,gydF4y2Ba{lgrid}gydF4y2Ba可指定选项。gydF4y2Ba

[b,delta] = cfirpm(…)gydF4y2Ba返回最大波纹高度gydF4y2BaδgydF4y2Ba.gydF4y2Ba

[b,delta,opt] = cfirpm(…)gydF4y2Ba返回一个结构gydF4y2Ba选择gydF4y2Ba的可选结果gydF4y2BacfirpmgydF4y2Ba并包含以下字段。gydF4y2Ba

场gydF4y2Ba

描述gydF4y2Ba

opt.fgridgydF4y2Ba

频率网格矢量用于滤波器的优化设计gydF4y2Ba

opt.desgydF4y2Ba

每个点的期望频率响应gydF4y2Baopt.fgridgydF4y2Ba

opt.wtgydF4y2Ba

中的每个点的权重gydF4y2Baopt.fgridgydF4y2Ba

opt.HgydF4y2Ba

每个点的实际频率响应gydF4y2Baopt.fgridgydF4y2Ba

opt.errorgydF4y2Ba

在每一点上的错误gydF4y2Baopt.fgridgydF4y2Ba

opt.iextrgydF4y2Ba

指标的向量gydF4y2Baopt.fgridgydF4y2Ba对于极端频率gydF4y2Ba

opt.fextrgydF4y2Ba

极值频率的向量gydF4y2Ba

可以使用用户自定义函数,而不是@的预定义频响函数gydF4y2BafrespgydF4y2Ba.函数是从内部调用的gydF4y2BacfirpmgydF4y2Ba使用以下语法gydF4y2Ba

(dh, dw) =gydF4y2BafrespgydF4y2Ba(n、f gf, w, p1, p2,…)gydF4y2Ba

地点:gydF4y2Ba

  • ngydF4y2Ba是过滤器顺序。gydF4y2Ba

  • fgydF4y2Ba是在-1到1之间单调出现的频带边向量,其中1对应奈奎斯特频率。gydF4y2Ba

  • 女朋友gydF4y2Ba是一个网格点的向量,已被线性插值在每个指定的频带gydF4y2BacfirpmgydF4y2Ba.gydF4y2Ba女朋友gydF4y2Ba确定响应函数必须在其上求值的频率网格。返回的数据与gydF4y2BacfirpmgydF4y2Ba在gydF4y2BafgridgydF4y2Ba的字段gydF4y2Ba选择gydF4y2Ba结构。gydF4y2Ba

  • wgydF4y2Ba是一个真实的正权重向量,每个波段一个,在优化期间使用。gydF4y2BawgydF4y2Ba是可选的gydF4y2BacfirpmgydF4y2Ba;如果没有指定,它将在被传递到之前被设置为统一权重gydF4y2BafrespgydF4y2Ba.gydF4y2Ba

  • dhgydF4y2Ba而且gydF4y2BadwgydF4y2Ba是否在网格的每个频率处分别求出所需的复频率响应和带权向量gydF4y2Ba女朋友gydF4y2Ba.gydF4y2Ba

  • p1gydF4y2Ba,gydF4y2Bap2gydF4y2Ba,gydF4y2Ba...gydF4y2Ba,是可以传递给的可选参数gydF4y2BafrespgydF4y2Ba.gydF4y2Ba

此外,初步呼叫gydF4y2BafrespgydF4y2Ba来确定默认的对称属性gydF4y2Ba“符号”gydF4y2Ba.该调用使用以下语法:gydF4y2Ba

信谊=gydF4y2BafrespgydF4y2Ba(“违约”,{n, f, [], w, p1, p2,…})gydF4y2Ba

根据需要,参数可用于确定适当的对称性默认值。可以使用local函数gydF4y2Ba低通滤波器gydF4y2Ba作为生成新的频响函数的模板。要找到gydF4y2Ba低通滤波器gydF4y2Ba函数,类型gydF4y2Ba编辑cfirpmgydF4y2Ba在命令行中搜索gydF4y2Ba低通滤波器gydF4y2Ba在gydF4y2BacfirpmgydF4y2Ba代码。您可以复制函数、修改它、重命名它并将它保存到您的路径中。gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

设计一个31丝锥线性相位低通滤波器。显示其大小和相位响应。gydF4y2Ba

b = cfirpm(30日[1 -0.5 -0.4 0.7 0.8 1],@lowpass);fvtool (b, 1gydF4y2Ba“OverlayedAnalysis”gydF4y2Ba,gydF4y2Ba“阶段”gydF4y2Ba)gydF4y2Ba

设计一个22阶非线性相位全通FIR滤波器,其频率响应近似为gydF4y2Ba 经验值gydF4y2Ba (gydF4y2Ba -gydF4y2Ba jgydF4y2Ba πgydF4y2Ba fgydF4y2Ba NgydF4y2Ba /gydF4y2Ba 2gydF4y2Ba +gydF4y2Ba jgydF4y2Ba 4gydF4y2Ba πgydF4y2Ba fgydF4y2Ba |gydF4y2Ba fgydF4y2Ba |gydF4y2Ba )gydF4y2Ba ,在那里gydF4y2Ba fgydF4y2Ba ∈gydF4y2Ba [gydF4y2Ba -gydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba 1gydF4y2Ba ]gydF4y2Ba .gydF4y2Ba

N = 22;gydF4y2Ba%筛选顺序gydF4y2BaF = [-1 1];gydF4y2Ba%频带边gydF4y2BaW = [1 1];gydF4y2Ba优化权重%gydF4y2BaGf = linspace(-1,1,256);gydF4y2Ba%频率点网格gydF4y2Bad = exp(1 *π*广发* n / 2 + 1我*π*π*签署(gf)。*女朋友。*广发* (4 / pi));gydF4y2Ba%期望频率响应gydF4y2Ba

使用gydF4y2BacfirpmgydF4y2Ba计算FIR滤波器。画出实际和近似的震级响应,单位为分贝,相位响应单位为度。gydF4y2Ba

B = cfirpm(n,f,gydF4y2Ba“allpass”gydF4y2Baw,gydF4y2Ba“真实”的gydF4y2Ba);gydF4y2Ba%近似gydF4y2Bafreqz (b, 1256,gydF4y2Ba“整体”gydF4y2Ba次要情节(2,1,1)gydF4y2Ba%叠加响应gydF4y2Ba持有gydF4y2Ba在gydF4y2Ba情节(π* (gf + 1), 20 * log10 (abs (fftshift (d))),gydF4y2Ba“r——”gydF4y2Ba副图(2,1,2)hold住gydF4y2Ba在gydF4y2Ba情节(π* (gf + 1),打开(角(fftshift (d))) * 180 /π,gydF4y2Ba“r——”gydF4y2Ba)传说(gydF4y2Ba“近似”gydF4y2Ba,gydF4y2Ba“想要的”gydF4y2Ba,gydF4y2Ba“位置”gydF4y2Ba,gydF4y2Ba“西南”gydF4y2Ba)gydF4y2Ba

算法gydF4y2Ba

针对复杂的情况,实现了雷米兹交换方法的扩展版本。该交换方法在滤波器的等纹特性被限制为具有时,得到最优滤波器gydF4y2Ban + 2gydF4y2Ba极值。当它不收敛时,算法切换到一个上升-下降算法来完成对最优解的收敛。有关更多细节,请参阅参考资料。gydF4y2Ba

参考文献gydF4y2Ba

卡拉姆,l。j。和j。h。麦克莱伦。FIR滤波器设计的复切比雪夫近似。gydF4y2BaIEEEgydF4y2Ba®gydF4y2Ba反式。电路与系统2gydF4y2Ba1995年3月,第207-216页。gydF4y2Ba

卡拉姆,L.J.gydF4y2Ba切比雪夫感觉下复杂数字FIR滤波器的设计gydF4y2Ba.佐治亚理工学院博士论文,1995年3月。gydF4y2Ba

[3]德米扬约夫,V.F和V.N.马洛泽莫夫。gydF4y2Ba极小极大简介gydF4y2Ba.纽约:John Wiley & Sons出版社,1974年。gydF4y2Ba

扩展功能gydF4y2Ba

另请参阅gydF4y2Ba

|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba

R2006a之前介绍过gydF4y2Ba