主要内容

firgr

Parks-McClellan冷杉过滤器

语法

b = firgr (n、f, w)
b = firgr (n、f,希尔伯特)
b = firgr (m f, r),
b = firgr ({m,倪},f, r)
b = firgr (n、f, w, e)
b = firgr (n、f、s)
b = firgr (n、f、s w e)
b = firgr(…,' 1 ')
b = firgr(…,“minphase”)
b = firgr(…, '检查')
b = firgr(…,{lgrid}),
[b,犯错]= firgr(…)
[b,呃,res] = firgr(…)
b = firgr (n、f、fresp w)
b = firgr (n、f, {fresp, p1, p2,…},w)
b = firgr (n、f, w)

描述

firgr是一个极小极大滤波器设计算法,你使用设计以下类型的真实FIR滤波器:

  • 类型1-4线性阶段:

    • 类型1是偶序,对称的

    • 类型2是奇阶对称的

    • 类型3是偶序,反对称的

    • 类型4是奇阶的,反对称的

  • 最小相位

  • 最大的阶段

  • 最小次(偶数或奇数)

  • 额外的涟漪

  • 最大纹波

  • 约束波纹

  • 单点频带(缺口和峰值)

  • 强迫获得

  • 任意形状的频率响应曲线滤波器

b = firgr (n、f, w)返回一个长度n+1线性相位FIR滤波器,它具有对所描述的所需频率响应的最佳逼近f一个在极大极小的意义上。w是一个权向量,每条带一个权向量。当你忽略w,所有波段的权重相等。有关输入参数的更多信息,请参阅firpm信号处理工具箱™用户指南

b = firgr (n、f,希尔伯特)bfirgr (n、f,“区别”)设计FIR希尔伯特变压器和微分器。有关设计这些过滤器的更多信息,请参阅firpm信号处理工具箱用户指南

b = firgr (m f, r),在哪里是其中之一minorder”、“mineven”或“minodd,重复设计滤波器,直到最小阶滤波器,如,满足规格要求的。r是包含每频带纹波峰值的矢量。您必须指定r.当你指定'mineven”或“minodd的最小偶、奇阶滤波器。

b = firgr ({m,倪},f, r)在哪里是其中之一minorder”、“mineven”或“minodd”,使用为滤波器阶数的初始估计。是可选的普通过滤器设计,但它必须指定的设计在其中firpmord不能使用,例如在设计微分器或希尔伯特变压器时。

b = firgr (n、f, w, e)指定不同波段的独立近似误差。使用此语法设计额外纹波或最大纹波滤波器。这些过滤器有一些有趣的特性,比如具有最小过渡宽度。e指定要使用的近似误差的字符向量单元格数组。它的长度必须等于频带的数目。条目的e必须在表格里e #”,指示对相应频带使用哪个近似误差。例如,当e = {e1, e2, e1的},第一和第三波段使用相同的近似误差“e1”第二个波段用的是另一个“e2”.注意,当所有波段使用相同的近似误差,例如{e1, e1, e1,…},等于省略e,如b = firgr (n、f, w)

b = firgr (n、f、s)用于设计在某些频率点具有特殊性质的滤波器。年代字符向量的单元格数组和必须是相同的长度f一个.条目的年代必须是其中之一:

  • “n”-正常频率点。

  • “年代”——单点乐队。频率“频带”是由一个点给出的。在此频率点的相应增益必须在一个

  • “f”-强制频率点。强制在指定频带的增益为指定的值。

  • “我”-频率点不确定。当相邻带彼此毗连(没有过渡区域)时使用此参数。

例如,下面的命令设计了一个带阻滤波器,其零值单点阻带(陷波)为0.25和0.55。

B = firgr(42,[0 0.2 0.25 0.3 0.5 0.55 0.6 1],…[1 1 0 1 1 0 1 1], {' n ' ' n ' s ' n ' ' n ' s ' n ' ' n '})

B = firgr(82,[0 0.055 0.06 0.1 0.15 1],[0 0 0 1 1],…{n' i' f' 'n' 'n' 'n' 'n' '})设计一个高通滤波器,在0.06处的增益强制为零。在0.055处的频带边缘是不确定的,因为前两个频带实际上是接触的。其他带边是正常的。

b = firgr (n、f、s w e)为具有特殊属性的滤波器指定权重和独立近似误差。权重和属性包含在向量中we.有时,您可能需要使用独立近似误差来获得具有强制值的收敛设计。例如,

B = firgr(82,[0 0.055 0.06 0.1 0.15 1],[0 0 0 1 1],…{' n ' '我' ' f ' ' n ' ' n ' ' n '}, (10 1 1) {e1的e2的e3的});

b = firgr(…,' 1 ')设计一类滤波器(偶序对称)。您还可以指定类型2(奇阶对称)、类型3(偶阶反对称)和类型4(奇阶反对称)过滤器。注意,限制适用于一个在f = 0或f = 1的FIR滤波器类型2,3,和4。

b = firgr(…,“minphase”)设计一种最小相位FIR滤波器。你可以使用这个论点“maxphase”设计最大相位FIR滤波器。

b = firgr(…, '检查')当存在潜在的转换区域异常时返回警告。

b = firgr(…,{lgrid}),在哪里{lgrid}是标量单元格数组。标量的值通过设置沿频率轴使用的样本数量来控制频率网格的密度。

[b,犯错]= firgr(…)返回未加权近似误差幅度。犯错包含函数返回的每个独立近似误差的一个元素。

[b,呃,res] = firgr(…)返回的结构res由计算得到的可选结果firgrres包含以下字段。

结构域

内容

res.fgrid

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

res.des

期望的反应fgrid

res.wt

重量在fgrid

res.h

频率网格上的实际频率响应

res.error

频率网格上每一点的误差(期望响应-实际响应)

res.iextr

指数向量fgrid外部频率

res.fextr

外频率矢量

res.order

过滤器订单

res.edgecheck

过渡区异常检查。每个带边一个元素。元素值的含义如下:1 = OK, 0 =可能的过渡区域异常,-1 =边缘未检查。指定时计算“检查”函数语法中的输入选项。

res.iterations

的数量年代优化迭代

res.evals

函数优化计算的次数

firgr也是一个“函数函数”,允许您编写一个函数来定义所需的频率响应。

b = firgr (n、f、fresp w)返回一个长度为N + 1的FIR滤波器,该滤波器具有与用户定义函数返回的期望频率响应的最佳近似fresp.使用下面的firgr语法来调用fresp

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

地点:

  • fresp标识用于定义所需滤波器频率响应的函数。

  • n为过滤顺序。

  • f为频带边的向量,该频带边必须单调地出现在0和1之间,其中1是采样频率的一半。频带跨度f (k)f (k + 1)k奇数。的时间间隔f (k + 1)f (k + 2)k奇数是优化过程中的“过渡带”或“不关心”区域。

  • 女朋友是在每个指定的频带上选择的网格点的向量吗firgr,并决定其频率firgr计算响应函数。

  • w是一个实的、正权值的向量,每个频带一个,用于优化期间。w是可选的调用firgr.如果没有指定w,它在被传递之前被设置为统一权重fresp

  • dhdw是否在网格中的每个频率上评估期望的频率响应和优化权重向量女朋友

firgr包括一个预定义的频率响应函数,命名为“firpmfrf2”.你可以在简单的基础上写自己的“firpmfrf”.参见帮助私人/ firpmfrf为更多的信息。

b = firgr (n、f, {fresp, p1, p2,…},w)指定可选参数p1p2、……pn传递给响应函数fresp

b = firgr (n、f, w)是的同义词b = firgr (n、f {firpmfrf2,}, w),在那里一个在每个频带边缘是否有一个包含指定响应振幅的矢量f.默认情况下,firgr设计对称(偶数)FIR滤波器。“firpmfrf2”为预定义的频响函数。如果你不指定你自己的频响函数(fresp变量),firgr使用的firpmfrf2”

b = firgr(…,“h”)' d ' b = firgr(…)设计反对称(奇)滤波器。当你省略“h”' d '参数的firgr命令格式,各频响函数fresp可以告诉firgr设计一个偶或奇滤波器。使用命令语法信谊=fresp(“违约”,{n, f, [], w, p1, p2,…})

firgr预计fresp返回信谊= '甚至'信谊=“奇怪”.如果fresp不支持这通电话金宝appfirgr假定甚至对称。

的输入参数的更多信息firgr,请参考firpm

例子

全部折叠

设计一个带两个0.25和0.55陷波的FIR滤波器。

B1 = firgr(42,[0 0.2 0.25 0.3 0.5 0.55 0.6 1],[1 1 0 1 1 0 1],...“n”“n”“年代”“n”“n”“年代”“n”“n”});

设计一个高通滤波器,其增益在0.06时被迫为零。在0.055处的增益是不确定的,因为它应该与波段有关。

B2 = firgr(82,[0 0.055 0.06 0.1 0.15 1],[0 0 0 1 1],...“n”“我”“f”“n”“n”“n”});

设计具有强制值和独立逼近误差的第二高通滤波器。

B3 = firgr(82,[0 0.055 0.06 0.1 0.15 1], [0 0 0 1 1],...“n”“我”“f”“n”“n”“n”}, [10 1 1],{“e1”“e2”“e3”});

使用筛选器可视化工具查看筛选器的结果。

fvtool (b1, b2, b3, 1)传说(“过滤b1”“过滤b2”“过滤b3”);

图形过滤器可视化工具-幅度响应(dB)包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴对象包含3个类型为line的对象。这些对象代表滤镜b1,滤镜b2,滤镜b3。

参考文献

“用于FIR数字滤波器设计的广义雷米兹方法”,IEEE®反式。电路与系统,页161-174,1990年2月。

扩展功能

介绍了R2011a