2026a

# dsp_IIRHalfbandInterpolator


使用多相 IIR 按两倍的因数进行插值

函数库: TyDSPSystem

# 说明

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

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

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

你也可以使用 dsp_IIRHalfbandInterpolator 对象来实现双频滤波器组的合成部分,从低通和高通子带合成一个信号。

对数据进行上采样和插值:

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

  2. 用 step 调用该对象。

# 构造

# 语法

iirhalfbandinterp = dsp_IIRHalfbandInterpolator()
iirhalfbandinterp = dsp_IIRHalfbandInterpolator(; Name = Value)

# 说明


iirhalfbandinterp = dsp_IIRHalfbandInterpolator() 返回一个 IIR 半带插值滤波器 iirhalfbandinterp 默认设置。在默认设置下,系统对象使用 22050 Hz 的半带频率、4100 Hz 的过渡宽度和 80 dB 的停止带衰减对输入数据进行上采样和插值。


iirhalfbandinterp = dsp_IIRHalfbandInterpolator(; 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 - 输入采样频率
22050 (默认)| 正实数标量

输入采样率,指定为正实标量。单位为 HZ 。

仅当您将 Specification 参数设置为除 "Coefficients" 之外的任何可接受的值时,此属性才适用。

FilterBankInputPort - 选择使用对象作为合成滤波器组
false (默认)| true

使用对象作为合成滤波器组的选项,指定为逻辑值。如果此属性为 false,则 dsp_IIRHalfbandInterpolator 将充当插值器。如果此属性为 true,则 dsp_IIRHalfbandInterpolator 将充当合成滤波器组,并且算法接受两个输入:低通和高通子带。

仅当您将 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" 时适用。

# 用法

# 语法

y = step(iirhalfbandinterp, x1)
y = step(iirhalfbandinterp, x1,x2)

# 说明

y = step(iirhalfbandinterp, x1) 2 倍上采样,并使用 IIR 半带插值器 iirhalfbandinterp 对输入信号 x1 进行插值。


y = step(iirhalfbandinterp, x1, x2) 为输入 x1 和 x2 实现半带合成滤波器组。x1 是半带分析滤波器组的低通输出,x2 是半带分析滤波器组的高通输出。仅当 FilterBankInputPort 属性为 true 时,dsp.IIRHalfbandInterpolator 才实现合成滤波器组。

# 输入参数

x1 - 输入数据
列向量 | 矩阵

输入到 IIR 半带插值器的数据,指定为一个列向量或矩阵。这个信号是一个半带分析滤波器组的低通输出。如果输入信号是一个矩阵,矩阵的每一列被视为一个独立的信道。

x1 - 输入数据
列向量 | 矩阵

合成滤波器组的第二个数据输入,指定为列向量或矩阵。此信号是半带分析滤波器组的高通输出。如果输入信号是矩阵,则矩阵的每一列都被视为独立通道。

两个输入的大小、数据类型和复杂度必须相同。

# 输出参数

y - 插值器的输出
列向量 | 矩阵

插值器的输出,以列向量或矩阵形式返回。插值器输出中的行数是输入信号中行数的两倍。

# 对象函数

要使用对象函数,请将系统对象指定为第一个输入参数。

对系统对象通用的操作
函数 说明
step 运行系统对象算法
reset 重置系统对象的内部状态
release 释放资源并允许更改系统对象属性值和输入特征

# 示例

准线性相位 IIR 半带插值器的频率响应
using TyDSPSystem
using TyPlot

IIRHalfbandInterp = dsp_IIRHalfbandInterpolator(; DesignMethod="Quasi-linear phase")

c = coeffs(IIRHalfbandInterp)
h, w = freqz(IIRHalfbandInterp)
plot(w / pi, 20 * log10.(abs.(h)))
使用 IIR 半带插值器对多通道输入进行上采样和插值
using TyDSPSystem
using TyMath
Fs = 44.1e3
filterspec = "Filter order and transition width"
Order = 51
TW = 4.1e3
iirhalfbandinterp = dsp_IIRHalfbandInterpolator(;
    Specification=filterspec, FilterOrder=Order, TransitionWidth=TW, SampleRate=Fs
)
rng = MT19937ar(1234)
x = randn(rng, 1024, 4)
y = step(iirhalfbandinterp, x)
y = 2048×4 Matrix{Float64}:
 -3.21316e-8    2.37843e-8    8.08877e-9   -2.78059e-8
 -7.73898e-7    5.72852e-7    1.9482e-7    -6.69712e-7
 -9.2298e-6     6.82171e-6    2.33093e-6   -7.99724e-6
 -7.24091e-5    5.33495e-5    1.84072e-5   -6.2902e-5
 -0.000418685   0.000306976   0.000107521  -0.000365238
 -0.00189467    0.00137981    0.000493386  -0.00166319
 -0.00695285    0.00501949    0.00184332   -0.00615965
 -0.0211457     0.0151027     0.00573235   -0.0189875
 -0.053967      0.0380611     0.0150345    -0.0494457
  ⋮
  0.879071     -1.21371       1.47935      -0.184997
  1.75433      -0.152742      1.02734       0.638864
  1.87848       0.722452     -1.15954       1.10767
  0.936059      0.0149628    -1.91943       0.736344
 -0.308079     -0.845909     -0.141609     -0.0827741
 -0.674894     -0.161835      1.55171      -0.416319
 -0.075967      1.07839       0.940943     -0.0147252
  0.475276      0.986889     -0.733069      0.504295

# 参考文献

[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_IIRHalfbandDecimator