2026a

# biorwavf


双正交样条小波滤波器

函数库: TyWavelet

# 语法

RF, DF = biorwavf(wname)

# 说明

RF, DF = biorwavf(wname) 返回与 wname 指定的双正交小波相关的重建(合成)和分解(分析)尺度滤波器,分别为 RF 和 DF。

# 示例

双正交样条小波滤波器

返回具有两个消失矩的双正交样条小波尺度滤波器。

using TyWavelet

wname = "bior2.2"
RF, DF = biorwavf(wname)
RF = 1×3 Matrix{Float64}:
 0.25  0.5  0.25

DF = 1×5 Matrix{Float64}:
 -0.125  0.25  0.75  0.25  -0.125
添加双正交小波滤波器

这个例子展示了如何使用与双正交小波相关的分析和合成滤波器,并使它们与小波工具箱兼容™。小波工具箱要求分析和合成低通滤波器和高通滤波器具有相等的偶数长度。该示例使用基于 Burt 和 Adelson 的拉普拉斯金字塔方案的近似正交双正交小波([1]中第 283 页的表 8.4)。这个例子还演示了如何检验双正交小波的性质。

定义双正交小波的分析和合成滤波器系数。

using TyWavelet
using TyPlot
Hd = [-1 5 12 5 -1]/20*sqrt(2)
Gd = [3 -15 -73 170 -73 -15 3]/280*sqrt(2)
Hr = [-3 -15 73 170 73 -15 -3]/280*sqrt(2)
Gr = [-1 -5 12 -5 -1]/20*sqrt(2)

Hd 和 Gd 分别是低通和高通分析滤波器。Hr 和 Gr 是低通和高通合成滤波器。它们都是有限脉冲响应(FIR)滤波器。确认低通滤波器系数之和为 sqrt(2),高通滤波器系数之总和为 0。

sum(Hd)/sqrt(2)
ans = 0.9999999999999999
sum(Hr)/sqrt(2)
ans = 1.0000000000000002
sum(Gd)
ans = -1.0061396160665481e-16
sum(Gr)
ans = -9.71445146547012e-17

FIR 滤波器 变换是 Laurent 多项式 ,由 式 给出。 Laurent 多项式的次数 定义为 。因此,滤波器的长度 。检验缩放滤波器和小波滤波器的 Laurent 展开。

PHd = laurentPolynomial(; Coefficients=Hd, MaxOrder=2)
PHd = laurentPolynomial - Property:
    Coefficients: [-0.07071067811865477, 0.3535533905932738, 0.848528137423857, 0.3535533905932738, -0.07071067811865477]
        MaxOrder: 2
PHr = laurentPolynomial(; Coefficients=Hr, MaxOrder=3)
PHr = laurentPolynomial - Property:
    Coefficients: [-0.015152288168283162, -0.07576144084141581, 0.36870567876155697, 0.8586296628693791, 0.36870567876155697, -0.07576144084141581, -0.015152288168283162]
        MaxOrder: 3
PGd = laurentPolynomial(; Coefficients=Gd, MaxOrder=3)
PGd = laurentPolynomial - Property:
    Coefficients: [0.015152288168283162, -0.07576144084141581, -0.36870567876155697, 0.8586296628693791, -0.36870567876155697, -0.07576144084141581, 0.015152288168283162]
        MaxOrder: 3
PGr = laurentPolynomial(; Coefficients=Gr, MaxOrder=2)
PGr = laurentPolynomial - Property:
    Coefficients: [-0.07071067811865477, -0.3535533905932738, 0.848528137423857, -0.3535533905932738, -0.07071067811865477]
        MaxOrder: 2

由于滤波器与双正交小波有关,因此确认

PHd*PHr + PGd*PGr
laurentPolynomial - Property:
    Coefficients: [2.0]
        MaxOrder: 0

小波工具箱™ 要求与小波相关联的滤波器具有甚至相等的长度。要使用工具箱中的拉普拉斯小波滤波器,必须将 Laurent 级数的缺失幂作为 0。

PHd 和 PHr 的度数分别为 4 和 6 。能够容纳四个滤波器的最小偶数长度滤波器具有长度 8 ,其对应于 7 次的洛朗多项式。策略是尽可能均匀地预加和附加 0,以便所有过滤器的长度为 8 。将 0 附加到所有过滤器,然后将两个 0 附加到 Hd 和 Gr 。

Hd = [0 Hd 0 0]
Gd = [0 Gd]
Hr = [0 Hr]
Gr = [0 Gr 0 0]

您可以通过创建 DWT 滤波器组来检查双正交小波的特性。使用过滤器创建两个自定义 DWT 过滤器组,一个用于分析,另一个用于合成。确认滤波器组是双正交的。

fb = dwtfilterbank(;
    Wavelet="Custom", 
    CustomScalingFilter=[Hd' Hr'],
    CustomWaveletFilter=[Gd' Gr'],
)
fb2 = dwtfilterbank(;
    Wavelet="Custom",
    CustomScalingFilter=[Hd' Hr'],
    CustomWaveletFilter=[Gd' Gr'],
    FilterType="Synthesis",
)

println("fb: isOrthogonal = $(isOrthogonal(fb))\tisBiorthogonal = $(isBiorthogonal(fb))",
)
fb: isOrthogonal = false        isBiorthogonal = true
println("fb2: isOrthogonal = $(isOrthogonal(fb2))\tisBiorthogonal = $(isBiorthogonal(fb2))",
)
fb2: isOrthogonal = false        isBiorthogonal = true

在最粗的尺度上绘制与滤波器组相关联的尺度和小波函数。

phi, t = scalingfunctions(fb)
psi, _ = wavelets(fb)
phi2, _ = scalingfunctions(fb2)
psi2, _ = wavelets(fb2)
subplot(2, 2, 1)
plot(t, phi[end, :])
grid("on")
title("Scaling Function - Analysis")
subplot(2, 2, 2)
plot(t, psi[end, :])
grid("on")
title("Wavelet - Analysis")
subplot(2, 2, 3)
plot(t, phi2[end, :])
grid("on")
title("Scaling Function - Synthesis")
subplot(2, 2, 4)
plot(t, psi2[end, :])
grid("on")
title("Wavelet - Synthesis")

计算滤波器组的帧边界。

analysisLowerBound, analysisUpperBound = framebounds(fb)
(0.9504578719864343, 1.021089685703236)
synthesisLowerBound, synthesisUpperBound = framebounds(fb2)
(0.979991308406567, 1.0528136410158158)

# 输入参数

wname - 双正交小波的名称
字符串标量

双正交小波的名称,指定为 "biorNr.Nd",其中 Nr 和 Nd 的可能值如下。

Nr Nd
1 1,3 或 5
2 2,4,6 或 8
3 1,3,5,7 或 9
4 4
5 5
6 8

Nr 和 Nd 分别是重建和分解滤波器的消失矩的数量。

# 输出参数

RF - 重建滤波器
实值向量

与双正交小波 wname 相关的重建滤波器,以实值向量形式返回。

DF - 分解滤波器
实值向量

与双正交小波 wname 相关的分解滤波器,以实值向量形式返回。

# 另请参阅

biorfilt