# 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 中相应列的小波逆变换。