2026a

# dsp_IIRHalfbandDecimator


使用多相 IIR 按两倍的因数进行抽取

函数库: TyDSPSystem

# 说明

dsp_IIRHalfbandDecimator 系统对象对输入信号进行高效的多相抽取,抽取系数为 2。为了设计半带滤波器,你可以指定该对象使用椭圆设计或准线性相位设计。该对象使用这些设计方法来计算滤波器的系数。为了对输入进行滤波,该对象使用多相结构。多相结构中的全通滤波器采用最小乘法形式。

椭圆设计引入了非线性相位,并使用比准线性设计更少的系数创建滤波器。准线性相位设计以额外的系数为代价克服了相位非线性。

另外,你可以不使用设计方法来设计半带滤波器,而是直接指定滤波器的系数。当你选择这个选项时,多相实现的两个分支中的全通滤波器可以是最小乘法的形式,也可以是波数的形式。

你也可以使用 dsp_IIRHalfbandDecimator 对象来实现双频滤波器组的分析部分,将信号过滤成低通和高通子带。

过滤和降采样你的数据。

  1. 创建 dsp_IIRHalfbandDecimator 对象并设置其属性;

  2. 用 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(默认) | 有限正标量
将第二分支的最后一节作为 1 阶处理的选项,以 Bool 形式指定。当此属性为 1 且第二分支的系数在一个N×2 的矩阵中时,该对象会忽略矩阵最后一行的第二个元素。然后第二分支的最后一节就变成了 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.

# 另请参阅

freqz | dsp_IIRHalfbandInterpolator