2026a

# ilwt


一维提升小波逆变换

函数库: TyWavelet

# 语法

xr = ilwt(ca, cd)
xr = ilwt(ca, cd; Name=Value)

# 说明

xr = ilwt(ca, cd) 返回基于近似系数 ca 和细节系数 cd 的 1-D 逆小波变换。默认情况下,ilwt 假定您使用了与 db1 小波相关的提升方案来获取 ca 和 cd。如果不修改系数,xr 就是信号的完美重构。


xr = ilwt(ca, cd; Name=Value) 使用一个或多个名称-值参数指定选项。例如,xr = ilwt(ca, cd; Wavelet="db2") 指定了正交小波 db2。

为实现完美重构,所有名称-值参数必须与 lwt 中用于获取 ca 和 cd 的参数一致。

# 示例

整数值信号的逆 LWT

创建与 db3 小波相关的提升方案。指定一个长度为 2 的幂的整数值信号。

using TyWavelet

lsc = liftingScheme(; Wavelet="db3")
n = 8
sig = 1:(2^n)

使用提升方案获取信号的整数值 LWT,直至最大分解层级。

ca, cd = lwt(sig; LiftingScheme=lsc, Int2Int=true)

确认细节系数 cd 长度等于 2 的幂。

length(cd)
8

获取逆 LWT,直至 0 级。确认完美重构:

xrec0 = ilwt(ca, cd; LiftingScheme=lsc, Int2Int=true, Level=0)
maximum(abs.(xrec0 - sig))
0

获取逆 LWT 直至第 1 级。

xrec1 = ilwt(ca, cd; LiftingScheme=lsc, Int2Int=true, Level=1)

获取信号的一级分解。确认近似系数等于 xrec1。

ca, cd = lwt(sig; LiftingScheme=lsc, Int2Int=true, Level=1)
maximum(abs.(vec(ca) - vec(xrec1)))
0
多通道信号的逆 LWT

加载 Espiga3 的 23 个脑电图通道数据。通道按列排列。

using TyBase
using TyWavelet

dir = pkgdir(TyWavelet) * "/examples/Resources/Espiga3.mat"
y = load(dir)
Espiga3 = y["Espiga3"]
size(Espiga3)
(995, 23)

使用 db4 小波获取多通道信号的 LWT,最小为默认的最大分解层级。

wv = "db4"
ca, cd = lwt(Espiga3; Wavelet=wv)

重构多通道信号。

xrec = ilwt(ca, cd; Wavelet=wv)

由于原始信号每个通道的采样数目为奇数,因此确认重建后的信号比原始信号多一行。

size(xrec)
(996, 23)

确认重建中的最后一行等于前一行。

maximum(abs.(xrec[end - 1, :] - xrec[end, :]))
5.684341886080802e-14

删除重建中的最后一行。确认结果等于原始信号。

xrec = xrec[1:(end - 1), :]
maximum(abs.(Espiga3 - xrec))
4.547473508864641e-13

# 输入参数

ca - 近似系数
向量 | 矩阵

最粗级的近似(低通)系数,以向量或矩阵形式指定。这些系数是 lwt 的输出结果。

如果 ca 和 cd 的元素都是矩阵,那么 xr 就是一个矩阵,其中每一列都是 ca 和 cd 中相应列的小波逆变换。

cd - 细节系数
存储数值向量/矩阵的向量

以存储数值向量/矩阵的向量形式指定的细节系数,其中 L 是变换的层级。cd 的元素按分辨率递减的顺序排列。这些系数是 lwt 的输出结果。

如果 ca 和 cd 的元素都是矩阵,xr 就是一个矩阵,其中每一列都是 ca 和 cd 中相应列的小波逆变换。

# 名称-值参数

以 Name1=Value1,...,NameN=ValueN 的形式指定可选的参数对,其中 Name 是参数名,Value 是相应的值。名称-值参数必须出现在其他参数之后,但参数对的顺序并不重要。

示例: xr = ilwt(ca, cd; LiftingScheme=lsc, Level=1) 使用 lsc 提升方案执行逆小波变换,直到第 1 级。

Wavelet - 小波
"db1"(默认) | String

在逆 LWT 中使用的正交或双峰小波,指定为 String。有关支持的小波列表,请参阅 liftingScheme 的小波属性。为实现完美重构,指定的小波必须与用于获取系数 ca 和 cd 的小波相同。

不能同时指定 "Wavelet" 和 "LiftingScheme" 名称-值参数。

示例: xr = ilwt(ca, cd; Wavelet="bior3.5") 使用 bior3.5 双正交小波。

数据类型: string

LiftingScheme - 提升方案
LiftingScheme 对象

在逆 LWT 中使用的提升方案,以 liftingScheme 对象的形式指定。为实现完美重构,指定的提升方案必须与用于获取系数 ca 和 cd 的提升方案相同。

不能同时指定 "Wavelet" 和 "LiftingScheme" 名称-值参数。

示例: xr = ilwt(ca, cd; LiftingScheme=lScheme) 使用 lScheme 提升方案。

Level - 重建层级
0(默认) | 正整数

重建级数,指定为小于或等于 length(cd)-1 的非负整数。如果未指定,则重构电平默认为 0,xr 是信号的完美重构。

示例: xr = ilwt(ca, cd; Level=1) 将信号重建到 1 级。

数据类型: Int

Extension - 扩展模式
"periodic"(默认) | "zeropad" | "symmetric"

在逆 LWT 中使用的扩展模式,指定为 "periodic"(默认)、"zeropad" 或 "symmetric"。"Extension" 的值指定了如何在边界扩展信号。

示例: xr = ilwt(ca, cd; Extension="symmetric") 指定对称扩展模式。

Int2Int - 整数值数据处理
false(默认) | true

整数值数据处理,指定为 true 或 false。

  • true - 保留整数值数据;

  • false - 不保留整数值数据。

只有当输入的所有元素都是整数时,才指定 "Int2Int" 名称-值参数。

示例: xr = ilwt(ca, cd; Int2Int=true) 保留整数值数据。

# 输入参数

xr - 逆小波变换
向量 | 矩阵

ca 和 cd 的小波逆变换,以向量或矩阵形式返回。如果 ca 是标量或向量,而 cd 的元素是向量,则 xr 是向量。如果 ca 和 cd 的元素都是矩阵,xr 就是一个矩阵,其中每一列都是 ca 和 cd 中相应列的小波逆变换。

# 另请参阅

haart | ihaart | lwt