主要内容

firpm

Parks-McClellan最优FIR滤波器设计

描述

例子

b= firpm (nf一个返回行向量b包含n + 1一阶系数-n冷杉过滤器。所得滤波器的频率和幅值特征与矢量给出的特征相匹配f而且一个

例子

b= firpm (nf一个w使用w称量频率箱。

b= firpm (nf一个ftype使用指定的筛选器类型“ftype”

b= firpm (nf一个lgrid使用整数lgrid控制频率网格的密度。

(b犯错= firpm(___返回的最大纹波高度犯错。您可以将它与前面的任何输入语法一起使用。

(b犯错res= firpm(___以结构形式返回频率响应特性res

b= firpm (nffrespw返回一个FIR滤波器,其频率-振幅特征最接近函数句柄返回的响应fresp

b= firpm (nffrespwftype设计反对称(奇数)滤波器,其中ftype指定滤波器为微分器或希尔伯特变压器。如果没有指定ftype时,呼叫到fresp来确定默认的对称属性。

例子

全部折叠

利用Parks-McClellan算法设计了一个17阶FIR带通滤波器。的归一化阻带频率 0 3. π 而且 0 7 π 的Rad /sample和归一化通带频率 0 4 π 而且 0 6 π rad /样品。画出理想和实际的幅值响应。

F = [0 0.3 0.4 0.6 0.7 1];A = [0 0 1 1 0 0];B = firpm(17,f,a);[h,w] = freqz(b,1,512);情节(f, w /π,abs (h))传说(“理想”“firpm设计”)包含弧度频率(\ ω /\pi), ylabel“级”

图中包含一个轴对象。axis对象包含2个line类型的对象。这些物件代表了理想、坚定的设计。

设计一个通带截止频率为1500hz,阻带截止频率为2000hz的低通滤波器。采样频率为8000hz。要求最大阻带振幅为0.01,最大通带误差(波纹)为0.001。得到所需的滤波器阶数、归一化的频带边、频带幅值和权值firpmord

[n, fo ao w] = firpmord (2000 [1500], [1 0], [0.001 - 0.01], 8000);B = firpm(n,fo,ao,w);fvtool (b, 1)

{

使用Parks-McClellan算法创建一个50阶等纹波FIR带通滤波器,用于1 kHz采样的信号。

N = 50;Fs = 1e3;

指定通带跨越200hz和300hz之间的频率,并且通带两侧的过渡区域宽度为50hz。

Fstop1 = 150;Fpass1 = 200;Fpass2 = 300;Fstop2 = 350;

设计滤波器,使优化拟合对低频阻带权重为3,通带权重为1,高频阻带权重为100。显示滤波器的幅值响应。

Wstop1 = 3;Wpass = 1;Wstop2 = 100;b = firpm(N,[0 Fstop1 Fpass1 Fpass2 Fstop2 Fs/2]/(Fs/2),...[0 0 1 1 0 0],[Wstop1 Wpass Wstop2]);fvtool (b, 1)

{

输入参数

全部折叠

过滤器顺序,指定为实正标量。

归一化的频率点,指定为实值向量。参数必须在[0,1]范围内,其中1对应奈奎斯特频率。向量中的元素数总是2的倍数。频率必须按递增顺序排列。

中指定的点的期望振幅f,指定为一个向量。f而且一个长度必须相同。长度必须为偶数。

  • 点对之间频率处的期望振幅(fk),fk+ 1)k奇数是连接这两个点(fk),一个k)及(fk+ 1),一个k+ 1)。

  • 点对之间频率处的期望振幅(fk),fk+ 1)k甚至没有具体说明。这些点之间的区域是过渡区域或对特定应用程序不重要的区域。

用于在每个频带中调整适合度的权重,指定为实值向量。的长度w长度的一半是f而且一个,所以每条带只有一个权重。

具有奇对称性的线性相位滤波器的滤波器类型(类型III和类型IV),指定为任意一种希尔伯特的“区别”

  • 希尔伯特的-输出系数b服从关系bk) = -bn+ 2 -k),k= 1,…n+ 1。这类滤波器包括希尔伯特变压器,它在整个频带上的期望振幅为1。

    例如,

    H = firpm(30,[0.1 0.9],[1 1],希尔伯特的);

    设计了一个长度为31的近似FIR希尔伯特变压器。

  • “区别”-对于非零振幅波段,滤波器将误差加权为1/f所以低频的误差要比高频小得多。对于具有与频率成比例的幅值特征的FIR微分器,这些滤波器使最大相对误差(误差与所需幅值之比的最大值)最小化。

控制频率网格的密度,其中大致有(lgrid * n) / (2 * bw)频率点,其中bw总频带间隔[0,1]的比例是否由f。增加lgrid通常会产生更精确匹配等纹波滤波器的滤波器,但需要更长的计算时间。的默认值16是应该指定的最小值吗lgrid

频率响应,指定为函数句柄。函数从内部调用firpm使用这种语法:

[dh,dw] = fresp(n,f,gf,w)

论点类似于firpm

  • n是过滤器的顺序。

  • f是单调出现在0到1之间的归一化频带边的向量,其中1是奈奎斯特频率。

  • 女朋友是网格点的向量,已线性插值在每个指定的频带由firpm女朋友确定响应函数必须在其上计算的频率网格,并包含由返回的相同数据cfirpmfgrid字段选择结构。

  • w是一个真实的正权重向量,每波段一个,在优化期间使用。w是可选的调用firpm;如果未指定,则在传递给之前将其设置为单位权重fresp

  • dh而且dw所期望的复频率响应和频带权重向量,分别在网格中的每个频率上进行评估吗女朋友

输出参数

全部折叠

过滤器系数,作为长度的行向量返回n+ 1。系数是递增的。

最大纹波高度,作为标量返回。

频率响应特性,作为结构返回。结构res具有以下字段:

res.fgrid

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

res.des

每个点的期望频率响应res.fgrid

res.wt

加权的每个点opt.fgrid

res.H

每个点的实际频率响应res.fgrid

res.error

每一点的误差res.fgridres.des-res.H

res.iextr

指数向量res.fgrid对于极值频率

res.fextr

极值频率的向量

提示

如果过滤器设计不能收敛,则过滤器设计可能不正确。通过检查频率响应来验证设计。

如果您的过滤器设计不能收敛,并且产生的过滤器设计不正确,请尝试以下一个或多个方法:

  • 增加过滤器的顺序。

  • 通过减小阻带中的衰减和/或扩大过渡区域来放松滤波器设计。

算法

firpm利用Parks-McClellan算法设计了一个线性相位FIR滤波器[2]。Parks-McClellan算法使用Remez交换算法和Chebyshev近似理论设计滤波器,使期望的频率响应与实际频率响应之间达到最佳匹配。该滤波器在期望频率响应与实际频率响应之间的最大误差最小化的意义上是最优的。以这种方式设计的滤波器在其频率响应中表现出等纹波行为,有时称为等纹波滤波器。firpm在其脉冲响应的头部和尾部显示出不连续,这是由于这种等纹波的性质。

这些是I类(n奇数)及第II类(n线性相位滤波器。向量f而且一个指定滤波器的频幅特性:

  • f是频率点对的向量,在0到1之间指定,其中1对应奈奎斯特频率。频率必须按递增顺序排列。

  • 一个向量是否包含在中指定的点上的期望振幅f

    点对之间频率处的期望振幅函数(fk),fk+ 1)k奇数是连接这两个点(fk),一个k)及(fk+ 1),一个k+ 1)。

    点对之间频率处的期望振幅函数(fk),fk+ 1)k甚至没有具体说明。这些是过渡区域或“不在乎”区域。

  • f而且一个长度相同。这个长度必须是偶数。

下面的图说明了f而且一个定义所需振幅响应的向量。

firpm对于具有偶对称性和奈奎斯特频率非零通带的配置,始终使用偶滤波器顺序。偶阶滤波器的原因是,对于偶对称性和奇阶的脉冲响应,奈奎斯特频率处的频率响应必然为0。如果你指定了一个奇值nfirpm加1。

firpm设计类型I, II, III,和IV线性相位滤波器。类型I和类型II是默认的n甚至和n,分别为奇数,而第三类(n甚至)和第IV类(n奇数)指定希尔伯特的“区别”,分别使用ftype论点。不同类型的滤波器具有不同的对称性和对其频率响应的一定约束。(见[3]有关详情。)

线性相位滤波器 过滤器订单 系数对称性 响应H (f)f0 响应H (f)f1(奈奎斯特)

I型

甚至

即使是:

b k b n + 2 k k 1 ... n + 1

没有限制

没有限制

II型

奇怪的

即使是:

b k b n + 2 k k 1 ... n + 1

没有限制

H(1)0

firpm如果您试图在奈奎斯特频率上构造带有非零通带的II型滤波器,则该滤波器的阶数将增加1。

类型III

甚至

奇怪的:

b k b n + 2 k k 1 ... n + 1

H(0)0

H(1)0

IV型 奇怪的

奇怪的:

b k b n + 2 k k 1 ... n + 1

H(0)0

没有限制

你也可以使用firpm写一个函数来定义所需的频率响应。的预定义频率响应函数句柄firpm@firpmfrf,设计了一个线性相位FIR滤波器。

请注意

B = firpm(n,f,a,w)等于B = firpm(n,f,{@firpmfrf,a},w),在那里,@firpmfrf是预定义的频率响应函数句柄firpm。如果需要,您可以编写自己的响应函数。使用帮助私人/ firpmfrf看看创建函数句柄获取更多信息。

参考文献

[1] IEEE声学、语音和信号处理学会数字信号处理委员会编者。数字信号处理论文选集“,。卷二世。纽约:IEEE出版社,1976年。

[2] IEEE声学、语音和信号处理学会数字信号处理委员会编者。数字信号处理程序。纽约:IEEE出版社,1979,算法5.1。

奥本海姆、艾伦五世、罗纳德·w·谢弗和约翰·r·巴克。离散时间信号处理。上马鞍河,新泽西州:普伦蒂斯大厅,1999,第486页。

[4]托马斯·W·帕克斯和c·西德尼·伯勒斯。数字滤波器设计。纽约:约翰·威利父子出版社,1987年,第83页。

拉宾纳、劳伦斯·R、詹姆斯·h·麦克莱伦和托马斯·w·帕克斯。使用加权切比雪夫近似的FIR数字滤波器设计技术。IEEE论文集®。第63卷,第4期,1975年,第595-610页。

扩展功能

版本历史

R2006a之前介绍