# dsp_IIRHalfbandDecimator
使用多相 IIR 按两倍的因数进行抽取
函数库: TyDSPSystem
# 说明
dsp_IIRHalfbandDecimator 系统对象对输入信号进行高效的多相抽取,抽取系数为 2。为了设计半带滤波器,你可以指定该对象使用椭圆设计或准线性相位设计。该对象使用这些设计方法来计算滤波器的系数。为了对输入进行滤波,该对象使用多相结构。多相结构中的全通滤波器采用最小乘法形式。
椭圆设计引入了非线性相位,并使用比准线性设计更少的系数创建滤波器。准线性相位设计以额外的系数为代价克服了相位非线性。
另外,你可以不使用设计方法来设计半带滤波器,而是直接指定滤波器的系数。当你选择这个选项时,多相实现的两个分支中的全通滤波器可以是最小乘法的形式,也可以是波数的形式。
你也可以使用 dsp_IIRHalfbandDecimator 对象来实现双频滤波器组的分析部分,将信号过滤成低通和高通子带。
过滤和降采样你的数据。
创建 dsp_IIRHalfbandDecimator 对象并设置其属性;
用 step 调用该对象。
# 构造
# 语法
iirhalfbanddecim = dsp_IIRHalfbandDecimator()
iirhalfbanddecim = dsp_IIRHalfbandDecimator(; Name = Value)
# 说明
iirhalfbanddecim = dsp_IIRHalfbandDecimator() 返回一个具有默认设置的半带抽取器 iirhalfbanddecim。在默认设置下,系统对象对输入数据进行过滤和降采样,半带频率为 22050 赫兹,过渡宽度为 4100 赫兹,停止带衰减为 80 分贝。
iirhalfbanddecim = dsp_IIRHalfbandDecimator(; Name = Value) 返回一个 IIR 半带分频器,其附加属性由一个或多个 Name = Value 参数对指定。
# 属性
除非另有说明,属性是不可调整的,这意味着你在调用对象后不能改变其值。
如果一个属性是可调整的,你可以在任何时候改变它的值。
Specification - 滤波器设计参数"Transition width and stopband attenuation"(默认) | "Filter order and stopband attenuation" | "Filter order and transition width" | "Coefficients"
滤波器设计参数,指定为字符向量。将 Specification 设置为滤波器设计选项之一时,可以使用相应的 FilterOrder 、StopbandAttenuation 和 TransitionWidth 属性指定滤波器设计参数。此外,您还可以使用 DesignMethod 指定设计方法。当你把 Specification 设置为 "Coefficients" 时,你可以直接指定系数。
FilterOrder - IIR 半带滤波器的阶数9 (默认)| 正整数标量
IIR 半带滤波器的阶数,指定为正整数标量。如果将 DesignMethod 设置为 "Elliptic" ,则 FilterOrder 必须是大于 1 的奇数整数。如果将 DesignMethod 设置为"Quasi-linear phase" ,则 FilterOrder 必须是 4 的倍数。
此属性仅在您将 Specification 设置为 "Filter order and stopband attenuation" 或 "Filter order and transition width" 时适用。
StopbandAttenuation - 阻带所需的最小衰减80 (默认)| 正实数标量
IIR 半带滤波器阻带所需的最小衰减,指定为正实数标量。单位为 dB。
此属性仅在您将 Specification 设置为 "Filter order and stopband attenuation" 或 "Transition width and stopband attenuation" 时适用。
TransitionWidth - 过渡宽度4100 (默认)| 正实数标量
IIR 半带滤波器的过渡宽度,指定为正实数标量。单位为 Hz。过渡宽度的值必须小于输入采样率的一半。
此属性仅在您将 Specification 设置为 "Transition width and stopband attenuation" 或 "Filter order and transition width" 时适用。
DesignMethod - 设计方法"Elliptic" (默认)| "Quasi-linear phase"
IIR 半带滤波器的设计方法,指定为 "Elliptic" 或 "Quasi-linear phase" 。当属性设置为 "Quasi-linear phase" 时,多相结构的第一个分支是纯延迟,从而产生近似线性的相位响应。
仅当您将 Specification 参数设置为除 "Coefficients" 之外的任何可接受的值时,此属性才适用。
SampleRate - 输入采样频率44100 (默认)| 正实数标量
输入采样率,指定为正实标量。单位为 HZ 。
仅当您将 Specification 参数设置为除 "Coefficients" 之外的任何可接受的值时,此属性才适用。
Structure - 内部全通滤波器的实现结构"Minimum multiplier" (默认)| "Wave Digital Filter"
内部全通滤波器实现结构,指定为 "Minimum multiplier" 或 "Wave Digital Filter"。
此属性仅在您将 Specification 设置为 "Coefficients" 时适用。每个结构使用不同的系数集,独立存储在相应的对象属性中。
AllpassCoefficients1 - 第一分支的全通多项式滤波器系数[0.1284563; 0.7906755](默认) | [0.1284563 0.1534; 0.7906755 0.6745]
第一分支的全通多项式滤波器系数,指定为 N×1 或 N×2 的矩阵。N 是 1 阶或 2 阶全通段的数量。
此属性仅在您将 Specification 设置为 "Coefficients" , Structure 设置为 "Minimum multiplier" 时适用。
AllpassCoefficients2 - 第二分支的全通多项式滤波器系数[0.4295667](默认) | [0.7906755 0.1534]
第二分支的全通多项式滤波器系数,指定为 N×1 或 N×2 的矩阵。N 是 1 阶或 2 阶全通段的数量。
此属性仅在您将 Specification 设置为 "Coefficients" , Structure 设置为 "Minimum multiplier" 时适用。
WDFCoefficients1 - 波形数字滤波器中第一分支的全通滤波器系数[0.1284563; 0.7906755](默认) | [0.1284563 0.1534; 0.7906755 0.6745]
波动数字滤波器形式的第一支路的全通滤波器系数,指定为 N×1 或 N×2 的矩阵。N 是 1 阶或 2 阶全通段的数量。每个元素的绝对值必须小于或等于 1。
此属性仅在您将 Specification 设置为 "Coefficients" , Structure 设置为 "Wave Digital Filter" 时适用。
WDFCoefficients2 - 波形数字滤波器中第二分支的全通滤波器系数[0.4295667](默认) | [0.7906755 0.1534]
波动数字滤波器形式的第二分支的全通滤波器系数,指定为 N×1 或 N×2 的矩阵。N 是 1 阶或 2 阶全通段的数量。每个元素的绝对值必须小于或等于 1。
此属性仅在您将 Specification 设置为 "Coefficients",Structure 设置为 "Wave Digital Filter" 时适用。
HasPureDelayBranch - 使第一个分支成为纯延迟false(默认) | true
使第一个全通分支成为延迟的标志,以 Bool 形式指定。
当此属性为 true 时,第一个分支被视为纯延迟,AllpassCoefficients1 和 WDFCoefficients1 属性不适用。
此属性仅在您将 Specification 设置为 "Coefficients" 时适用。
Delay - 延迟的长度1(默认) | 有限正标量
第一分支延迟的长度,指定为一个有限的正标量。这个属性的值指定了第一个分支的输入可以延迟的样本数。
此属性仅在您将 Specification 设置为 "Coefficients" ,HasPureDelayBranch 设置为 true 时适用。
HasTrailingFirstOrderSection - 将第二分支的最后一节视为 1 阶1(默认) | 有限正标量
当这个属性被设置为 0 时,第二分支的最后一节是 2 阶节。当第二分支的系数在一个 N×1 的矩阵中时,这个属性被忽略。
此属性仅在您将 Specification 设置为 "Coefficients" 时适用。
# 用法
# 语法
ylow, = step(iirhalfbanddecim, x)
ylow, yhigh = step(iirhalfbanddecim, x)
# 说明
ylow = step(iirhalfbanddecim, x) 使用 IIR 半带滤波器 iirhalfbanddecim 对输入信号 x 进行滤波,并对输出进行 2 倍的降采样。
ylow, yhigh = step(iirhalfbanddecim, x) 计算分析滤波器组的 ylow 和 yhigh,iirhalfbanddecim 为输入 x。一个 Ki×N 的输入矩阵被视为 N 个独立信道。系统对象通过加减两个多相支路的输出,分别产生两个功率互补的输出信号。ylow 和 yhigh 的大小(Ko×N)和数据类型相同。Ko = Ki/2,其中 2 是抽取因子。
# 输入参数
x - 输入数据列向量 | 矩阵
数据输入,指定为一个列向量或一个矩阵。输入信号中的行数必须是偶数,因为这个对象的抽取因子总是 2。如果输入是一个矩阵,每一列被视为一个独立的信道。
# 输出参数
ylow - 抽取滤波器输出的低通子带向量 | 矩阵
抽取滤波器输出的低通子带,以列向量或矩阵形式返回。输出,ylow 是输入 x 的低通半带滤波和下采样版本。由于滤波器的半带性质,下采样系数总是 2。
yhigh - 抽取滤波器输出的高通子带向量 | 矩阵
抽取滤波器输出的高通子带,以列向量或矩阵形式返回。输出,yhigh 是输入 x 的高通半带滤波和下采样版本。由于滤波器的半带性质,下采样系数总是 2。
# 对象函数
要使用对象函数,请将系统对象指定为第一个输入参数。
对系统对象通用的操作
| 函数 | 说明 |
|---|---|
| step | 运行系统对象算法 |
| reset | 重置系统对象的内部状态 |
| release | 释放资源并允许更改系统对象属性值和输入特征 |
# 示例
准线性相位 IIR 半带抽取器的频率响应
using TyDSPSystem
using TyPlot
IIRHalfbandDecim = dsp_IIRHalfbandDecimator(; DesignMethod="Quasi-linear phase")
c = coeffs(IIRHalfbandDecim)
h, w = freqz(IIRHalfbandDecim)
plot(w / pi, 20 * log10.(abs.(h)))
grid("on")

将输入滤波到低通和高通子带
using TyDSPSystem
using TyMath
IIRHalfbanddecim = dsp_IIRHalfbandDecimator(;
Specification="Transition width and stopband attenuation",
TransitionWidth=2000,
StopbandAttenuation=60,
SampleRate=44.1e3,
)
rng = MT19937ar(1234)
x = randn(rng, 1024, 2)
ylow, yhigh = step(IIRHalfbanddecim, x)
ylow = 512×2 Matrix{Float64}:
-0.0203651 0.0150746
-0.206275 0.13913
0.00522624 0.207689
0.920389 0.053694
0.278822 -0.165135
0.312423 -0.773234
0.93208 -0.142025
-0.331802 -0.241272
0.759423 -0.631012
⋮
-0.876771 -1.24195
-2.24727 0.430282
-1.85052 1.36292
0.826805 0.195239
0.277743 0.457777
0.678447 -0.478923
0.403355 0.460562
-0.266953 0.479659
yhigh = 512×2 Matrix{Float64}:
-0.0203651 0.0150746
-0.326063 0.295347
-0.696221 0.842642
-0.0110023 0.0966904
0.343107 -0.993026
-0.659748 0.35177
-0.0282885 0.312997
0.071912 -0.782022
-0.427645 -0.637245
⋮
-0.007714 0.880222
-0.22655 -0.598347
0.718445 -0.0852461
0.350716 0.323617
1.07713 0.418611
0.751513 1.45751
-0.852627 0.212032
0.534331 0.556418
# 参考文献
[1] Lang, M. Allpass Filter Design and Applications. IEEE Transactions on Signal Processing. Vol. 46, No. 9, Sept 1998, pp. 2505–2514.
[2] Harris, F.J. Multirate Signal Processing for Communication Systems. Prentice Hall. 2004, pp. 208–209.
[3] Regalia, Phillip A., Sanjit K. Mitra, and P. P. Vaidyanathan. "The Digital All-Pass Filter: A Versatile Signal Processing Building Block." Proceedings of the IEEE. Vol. 76, Number 1, 1988, pp. 19-37.