Engee 文档

第一阶段

使用Parks-McClellan方法设计最优FIR滤波器。

库::`工程师`

语法

函数调用

争论

输入参数

# n — 过滤顺序

+ 通过:[正整数]

Details

滤波器顺序设置为正整数。

数据类型

Int64</无翻译>

# f — 归一化频率值

+ 传递:[向量] | 通过:[矩阵]

Details

指定为维度向量或矩阵的归一化频率值 1. 值必须在范围内 [0, 1],在哪里 1 对应于奈奎斯特频率。 向量的元素数始终是倍数 2. 频率应按升序排列。

数据类型

复杂的f64</无翻译>

# *a*是 期望的幅度响应

+ 传递:[向量] | 通过:[矩阵]

Details

适当点处的所需振幅 [参数:f],定义为维数的向量或矩阵 1. 尺寸 a[参数:f] 他们必须匹配。 维度必须是偶数。

  • 在具有奇数索引的段上 插值是线性的。

  • 在具有偶数索引的段上 行为未定义(过渡区域)。

数据类型

复杂的f64</无翻译>

# w — 权重系数

+ 传递:[向量] | 通过:[矩阵]

Details

用于调整每个频带中的近似值的加权系数被设置为维数的向量或矩阵 1. 矢量长度 w 它是长度的一半 [参数:f][参数:a] 因此,每个频带正好有一个加权因子值。

数据类型

复杂的f64</无翻译>

# ftype — 过滤器类型

+ 通行证:["希尔伯特"] | 通过:["微分器"] | 通行证:["多波段"] | 通行证:["低通"] | 通行证:["高通"] | 通行证:["带通"] | 通行证:["乐队"] | 通行证:["invsinc"]

Details

用于计算具有奇数对称性的线性相位滤波器的滤波器类型(III或IV型):

  • "希尔伯特" -希尔伯特滤波器: ;

    计算希尔伯特变压器的近似FIR的示例。 31:

    h = firpm(30,[0.1; 0.9],[1; 1],"hilbert")
  • "差异化" -权重与频率成反比的导数滤波器;

  • "多波段" -多波段滤波器;

  • "低通" -低通滤波器(low-pass filter);

  • "高通" -高通滤波器(高频滤波器);

  • "带通" -带通滤波器;

  • "乐队" -陷波(阻塞)滤波器;

  • "invsinc" -逆sinc滤波器。

数据类型

字符串</无翻译>

# lgrid — 频率网格密度

+ 通行证:[16] (默认情况下)| 通行证:[标量]

Details

频率网格的密度,其包含约 (lgrid*[参数:n])/(2*bw) 点在哪里 bw —这是总频率范围间隔的一小部分 [0, 1],由 [参数:f]. 增加 lgrid的 这通常会导致滤波器更准确地匹配具有均匀波纹水平的特性的滤波器,但需要更多的时间来计算。 默认值 16 —这是应指定的最小值 lgrid的.

数据类型

IntF64</无翻译>

# fresp — 频率响应

+ 通行证:[功能]

Details

它用于将所需幅度设置为函数,而不是作为一组值。

功能 firpm 原因 弗雷斯普 如下:

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

输入参数

  • n -过滤顺序;

  • f -带边界的矢量,值从 0 以前 1 (哪里 1 -这是奈奎斯特频率);

  • gf/gf -需要计算所需特性的频率网格;

  • w -加权系数的向量,每个车道一个(如果没有指定,则 w=一个(。..)).

输出参数

  • 卫生署署长 -在频率网格上计算的期望频率响应 gf/gf;

  • dw 是对应于加权系数的向量 gf/gf,通常重复 [参数:w] 在相关网站上。

函数示例 弗雷斯普:

function fresp(
    n::Int,
    f::AbstractArray{<:Real},
    gf::AbstractArray{<:Real},
    w::AbstractArray{<:Real}
)
    dh = Float64.((gf .>= f[1]) .& (gf .<= f[2]))	# The frequency response is equal to 1 in the band [f[1], f[2]]
    dw = ones(length(gf)) .* w[1] 					# The weight is the same across the band
    return dh, dw
end

输出参数

# b — 滤波器系数

+ 传递:[向量] | 通过:[矩阵]

Details

作为维数的向量或矩阵返回的滤波器系数 [参数:n]+11.

数据类型

复杂的f64</无翻译>

# 错误 — 幅度特性与期望的最大偏差 一+ 通行证:[真正的标量]

Details

幅度特性与期望的最大偏差,作为标量返回。

# res — 频率响应

+ 通行证:[结构]

Details

返回的频率响应作为结构。 结构 资源,资源 它具有以下字段:

  • [医]fgrid -用于优化滤波器设计的频率网格矢量;

  • 资源,资源 -每个点所需的频率响应 [医]fgrid;

  • 总重量 -每点的权重系数 [医]fgrid;

  • res.H -每个点获得的频率响应 [医]fgrid;

  • 错误 -每个点的错误 [医]fgrid (res.des-res.H);

  • 地址: -极端频率指数的向量 [医]fgrid;

  • 费克斯特 -极端频率的矢量。

建议

如果滤波器不收敛,则有可能设计错误。 通过检查频率响应来验证计算的正确性。

如果筛选器不收敛且结果不正确,请尝试以下一个或多个操作:

  • 增加过滤顺序。

  • 通过减少延迟带中的衰减和/或扩展过渡区域来软化滤波器计算。

算法

功能 firpm 使用Parks-McClellan算法[2]设计具有线性相位特性的FIR滤波器。 Parks-McClellan算法使用Remez替换算法和Chebyshev近似理论来设计期望和实际频率特性之间具有最佳匹配的滤波器。 滤波器在期望和实际频率特性之间的最大误差最小化的意义上是最优的。 以这种方式设计的滤波器表现出具有均匀纹波水平的频率响应。 功能 firpm 由于单一的脉动水平,它在脉冲响应的开始和结束时表现出不连续性。

这些是具有i型(n奇数)和II型(n偶数)线性相位特性的滤波器。 向量资料 [参数:f][参数:a] 滤波器的频率-幅度特性进行设定:

  • [参数:f] 是在从范围内设置的成对频率点的向量 0 以前 1,在哪里 1 对应于奈奎斯特频率。 频率应按升序排列。

  • [参数:a] -包含在所示点处的期望幅度的矢量 [参数:f].

    点对之间的频率处的期望幅度函数 对于奇数 —这是连接点的直线段 .

    点对之间的频率处的期望幅度函数 用偶数 没有定义。 这些是过渡或不相关的区域。

  • [参数:f][参数:a] 它们具有相同的长度。 此长度必须是偶数。

功能 firpm 对于在奈奎斯特频率具有偶数对称性和非零带宽的配置,始终使用偶数滤波器顺序。 偶数滤波器阶数的原因是,对于具有偶数对称性和奇数阶数的脉冲特性,奈奎斯特频率处的频率响应必然等于 0. 如果指定了奇数值 [参数:n] 然后 firpm 增加它 1.

功能 firpm 设计具有i型、II型、III型和IV型线性相位特性的滤波器。i型和II型默认用于偶数和奇数 [参数:n] 因此,而类型III([参数:n] 偶数)和IV([参数:n] 奇数)使用参数设置 [参数:ftype] 使用 "希尔伯特""差异化" 相应地。 不同类型的滤波器对其频率特性有不同的对称性和一定的限制。 (有关更多信息,请参阅[3])。

具有线性相位响应的滤波器类型 过滤顺序 系数的对称性 (奈奎斯特)

第一类

偶数

偶数:

没有任何限制

没有任何限制

第二类

奇怪

偶数:

没有任何限制

功能 firpm 通过以下方式增加筛选顺序 1 如果您试图在奈奎斯特频率上构建具有非零带宽的II型滤波器。

第三类

偶数

奇数:

第四类

奇怪

奇数:

没有任何限制

文学作品

  1. IEEE声学、语音和信号处理学会数字信号处理委员会,eds. _数字信号处理精选论文._卷。 II.纽约:IEEE出版社,1976年。

  2. Ieee声学,语音和信号处理学会的数字信号处理委员会,eds。 _用于数字信号处理的程序。_纽约:IEEE出版社,1979年,算法5.1。

  3. Oppenheim,Alan V.,Ronald W.Schafer和John R.Buck。 _实时信号处理。_Upper Saddle River,NJ:Prentice Hall,1999,p.486.

  4. Parks,Thomas W.和C.Sidney Burrus。 数字滤波器设计。_纽约:John Wiley&Sons,1987,p.83。

  5. Rabiner,Lawrence R.,James H.McClellan和Thomas W.Parks。 "使用加权切比雪夫近似的FIR数字滤波器设计技术。"_PROCEEDINGS OF THE IEEE®._卷。 63,编号4,1975,第595-610页。