cfirpmgydF4y2Ba

复杂和非线性相位平均杉木过滤器设计gydF4y2Ba

语法gydF4y2Ba

b = cfirpm (n、f, @gydF4y2BafrespgydF4y2Ba)gydF4y2Ba
b = cfirpm (n、f, @gydF4y2BafrespgydF4y2Ba,w)gydF4y2Ba
b = cfirpm (n、f)gydF4y2Ba
b = cfirpm (n、f, w)gydF4y2Ba
b = cfirpm(…gydF4y2Ba“符号”gydF4y2Ba)gydF4y2Ba
b = cfirpm(…,“skip_stage2”)gydF4y2Ba
b = cfirpm(…gydF4y2Ba“调试”gydF4y2Ba)gydF4y2Ba
{lgrid} b = cfirpm(…)gydF4y2Ba
[b,三角洲]= cfirpm(…)gydF4y2Ba
[b,δ,选择]= cfirpm(…)gydF4y2Ba

描述gydF4y2Ba

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

b = cfirpm (n、f, @gydF4y2BafrespgydF4y2Ba)gydF4y2Ba返回一个长度gydF4y2Ban + 1gydF4y2Ba与函数返回的期望频率响应最接近的FIR滤波器gydF4y2BafrespgydF4y2Ba,由其函数句柄(gydF4y2Ba@fresp.gydF4y2Ba).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,},…)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

  • @Differentiator.gydF4y2Ba设计一个线性相位微分器。对于这些设计,零频率必须在一个过渡频带,并且频带加权被设置成与频率成反比。gydF4y2Ba

    B = cfirpm(N,F,{@微分,FS},...)gydF4y2Ba和gydF4y2Ba

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

  • @hilbfiltgydF4y2Ba设计线性相位Hilbert变换滤波器响应。对于Hilbert设计,零频率必须在过渡带中。gydF4y2Ba

    b = cfirpm (n、f、@hilbfilt…)gydF4y2Ba和gydF4y2Ba

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

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

    b = cfirpm (n、f {@invsinc,},…)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, @gydF4y2BafrespgydF4y2Ba,w)gydF4y2Ba在向量中使用实的非负权值gydF4y2BawgydF4y2Ba在每个频段中重写拟合。长度gydF4y2BawgydF4y2Ba长度的一半是gydF4y2BafgydF4y2Ba,因此每个频段都有一个重量。gydF4y2Ba

b = cfirpm (n、f)gydF4y2Ba是的同义词gydF4y2Bab = cfirpm (n、f} {@multiband,)gydF4y2Ba.gydF4y2Ba

b = cfirpm (n、f, w)gydF4y2Ba应用一组可选的正权值,每个频带一个,用于优化期间。如果gydF4y2BawgydF4y2Ba时,权重被设置为统一。gydF4y2Ba

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

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

  • “甚至”gydF4y2Ba表示一个真实且均匀的脉冲响应。这是高通、低通、全通、带通、带阻、逆sinc和多频带设计的默认值。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确定标准未达到最优解决方案gydF4y2BaFILPM.gydF4y2Baerror-exchange。禁用此算法可以提高计算速度,但可能导致精度降低。缺省情况下,开启第二阶段优化。gydF4y2Ba

b = cfirpm(…gydF4y2Ba“调试”gydF4y2Ba)gydF4y2Ba允许在滤波器设计期间显示中间结果,其中gydF4y2Ba“调试”gydF4y2Ba可能是其中之一gydF4y2Ba“跟踪”gydF4y2Ba,gydF4y2Ba“阴谋”gydF4y2Ba,gydF4y2Ba“两个”gydF4y2Ba,或gydF4y2Ba'离开'gydF4y2Ba.缺省情况下,为gydF4y2Ba'离开'gydF4y2Ba.gydF4y2Ba

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

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

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

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

场gydF4y2Ba

描述gydF4y2Ba

opt.fgridgydF4y2Ba

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

opt.desgydF4y2Ba

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

opt.wtgydF4y2Ba

对每一点进行加权gydF4y2Baopt.fgridgydF4y2Ba

opt.HgydF4y2Ba

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

opt.Error.gydF4y2Ba

每个点的错误gydF4y2Baopt.fgridgydF4y2Ba

opt.iextr.gydF4y2Ba

指数向量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对应于Nyquist频率。gydF4y2Ba

  • 女朋友gydF4y2Ba是在每个指定的频带上线性插值的网格点的向量吗gydF4y2BacfirpmgydF4y2Ba.gydF4y2Ba女朋友gydF4y2Ba确定响应函数必须评估的频率网格。返回的数据与gydF4y2BacfirpmgydF4y2Ba在里面gydF4y2BafgridgydF4y2Ba场的gydF4y2Ba选择gydF4y2Ba结构。gydF4y2Ba

  • wgydF4y2Ba是一个实的,正权值的向量,每个频带一个,用于优化。gydF4y2BawgydF4y2Ba是可选的调用gydF4y2BacfirpmgydF4y2Ba;如果未指定,则将其设置为在传递到之前的Unity加权gydF4y2BafrespgydF4y2Ba.gydF4y2Ba

  • dhgydF4y2Ba和gydF4y2BadwgydF4y2Ba是否在网格中的每个频率上分别评估所需的复频率响应和频带权重向量gydF4y2Ba女朋友gydF4y2Ba.gydF4y2Ba

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

此外,还会对gydF4y2BafrespgydF4y2Ba以确定默认对称属性gydF4y2Ba“符号”gydF4y2Ba.这个调用使用语法:gydF4y2Ba

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

这些参数可以在必要时用于确定适当的对称默认值。你可以使用本地函数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],@低通);fvtool(b,1,gydF4y2Ba“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%优化权重gydF4y2Ba女朋友= linspace (1256);gydF4y2Ba%频率点网格gydF4y2Bad = exp(1 *π*广发* n / 2 + 1我*π*π*签署(gf)。*女朋友。*广发* (4 / pi));gydF4y2Ba期望频率响应gydF4y2Ba

使用gydF4y2BacfirpmgydF4y2Ba来计算FIR滤波器。用分贝表示实际的和近似的幅值响应,用度数表示相位响应。gydF4y2Ba

b = cfirpm(n,f,gydF4y2Ba“allpass”gydF4y2Ba,w,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)gydF4y2Ba在gydF4y2Ba绘图(PI *(GF + 1),打开(角度(FFTSPRIFT(D)))* 180 / PI,gydF4y2Ba“r——”gydF4y2Ba)传说(gydF4y2Ba“近似”gydF4y2Ba,gydF4y2Ba“想要的”gydF4y2Ba,gydF4y2Ba“位置”gydF4y2Ba,gydF4y2Ba“西南”gydF4y2Ba)gydF4y2Ba

算法gydF4y2Ba

为复杂情况实现了一个扩展版本的Remez交换方法。当滤波器的等纹波性质受到限制时,这种交换方法得到最优滤波器gydF4y2Ban + 2gydF4y2Ba极值。当它不收敛时,该算法切换到一个上升下降算法接手完成收敛到最优解。详情请参阅参考资料。gydF4y2Ba

参考gydF4y2Ba

Demjanjov V. F.和V. N. Malozemov。gydF4y2Ba介绍极大极小gydF4y2Ba.纽约:约翰·威利父子公司,1974年出版。gydF4y2Ba

[2] Karam,L.J.gydF4y2Ba切比雪夫意义下的复数字FIR滤波器设计gydF4y2Ba.1995年3月,佐治亚理工学院博士论文。gydF4y2Ba

卡拉姆,l.j.和j·h·麦克莱伦。“FIR滤波器设计的复杂切比雪夫近似”。gydF4y2BaIEEEgydF4y2Ba®gydF4y2Ba《电路与系统汇刊》2gydF4y2Ba, 1995年3月,第207-216页。gydF4y2Ba

扩展功能gydF4y2Ba

另请参阅gydF4y2Ba

|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba

之前介绍过的R2006agydF4y2Ba