主要内容

提升过滤器组

这个例子展示了如何使用提升来逐步改变一个完美重构滤波器组的属性。下图显示了提升中的三个规范步骤:分割、预测和更新。

提升的第一步只是将信号分割为偶数和奇数索引样本。这些被称为多相组件,在提升过程中的这一步通常被称为“懒惰”提升步骤,因为你真的没有做那么多的工作。您可以在MATLAB™中通过使用创建一个“惰性”提升方案来实现这一点liftingScheme使用默认设置。

LS =升降方案;

利用提升法对随机信号进行一级小波分解。

X = randn(8,1);[ALazy,DLazy] = lwt(x,“LiftingScheme”LS,“水平”1);

MATLAB索引由1所以ALazy包含x和的奇数索引样本DLazy包含偶数索引样本。大多数关于提升的解释都假设信号从样本0开始,所以ALazy是偶数索引样本和DLazy奇数索引样本。本例遵循后一种约定。“惰性”小波变换将信号的一半作为小波系数,DLazy,另一半为标度系数,ALazy.这在提升的上下文中是完全一致的,但是简单的数据分割确实会分散或捕获任何相关的细节。

提升方案的下一步是根据偶数样本预测奇数样本。这样做的理论基础是,大多数自然信号和图像在相邻样本之间表现出相关性。相应地,您可以使用偶数索引样本“预测”奇数索引样本。你的预测值和实际值之间的差异是预测器遗漏的数据中的“细节”。缺失的细节包括小波系数。

在方程形式中,您可以将预测步骤写成 d j n d j - 1 n - P 一个 j - 1 在哪里 d j - 1 n 小波系数是否在更细的尺度上 一个 j - 1 是一些更精细的比例系数。 P 是预测运算符。

添加一个简单的(Haar)预测步骤,从奇数(细节)系数中减去偶数(近似)系数。在这种情况下,预测操作符很简单 - 1 一个 j - 1 n .换句话说,它是基于之前的偶数样本来预测奇数样本。

ElemLiftStep = liftingStep(“类型”“预测”“系数”, 1“MaxOrder”, 0);

上面的代码说“使用多项式创建一个基本预测提升步骤。 z 拥有最高的权力 z 0 .系数是-1。更新延迟提升方案。

LSN = addlift(LS,ElemLiftStep);

将新的提升方案应用于信号。

[A,D] = lwt(x,“LiftingScheme”LSN,“水平”1);

注意的元素一个和里面的一样吗ALazy.这是意料之中的,因为你没有修改近似系数。

(ALazy)
ans =4×20.5377 0.5377 -2.2588 -2.2588 0.3188 0.3188 -0.4336 -0.4336

如果你看一下元素D {1},你会发现它们是相等的DLazy {1} -ALazy

Dnew = DLazy{1}-ALazy;(Dnew D {1})
ans =4×21.2962 1.2962 3.1210 3.1210 -1.6265 -1.6265 0.7762 0.7762

比较DnewD.假设有这样一个例子信号在每两个样本上是分段常数。

V = [1 -1 1 -1 1 -1];U = repelem(v,2)
u =1×121 1 1 -1 -1 1 1 -1 1 1 -1 -1

将新的提升方案应用于u

[Au,Du] = lwt(u,“LiftingScheme”LSN,“水平”1);杜{1}
ans =6×10 0 0 0 0 0

你可以看到为零。这个信号已经被压缩了,因为所有的信息现在都包含在6个样本中,而不是12个样本。你可以很容易地重建原始信号

urecon = ilwt(Au,Du,“LiftingScheme”, LSN);马克斯(abs (u (:) -urecon (:)))
Ans = 0

在您的预测步骤中,您预测信号中相邻的奇数样本与紧邻的偶数样本具有相同的值。显然,这只适用于微不足道的信号。小波系数捕捉了预测值和实际值之间的差异(在奇数样本上)。最后,使用update步骤根据预测步骤中得到的差异对偶数样本进行更新。在这种情况下,使用以下方法进行更新 一个 j n 一个 j - 1 n + d j - 1 n / 2 .这将每个偶数指数系数替换为偶数和奇数系数的算术平均值。

elsUpdate = lift step (“类型”“更新”“系数”1/2,“MaxOrder”, 0);lsupdate = addlift(LSN,elsUpdate);

利用改进后的提升方案对信号进行小波变换。

[A,D] = lwt(x,“LiftingScheme”LSupdated,“水平”1);

如果你比较一下一个对原始信号,x,你可以看到信号均值被捕捉在近似系数中。

(意思是(A)的意思是(x))
ans =1×2-0.0131 - -0.0131

事实上,元素一个是很容易得到的x通过以下方法。

N = 1;2 = 1:2:元素个数(x) meanz (n) =意味着([x (ii) x (2 + 1)]);N = N +1;结束

比较meanz而且一个.与往常一样,您可以反转提升方案以获得数据的完美重建。

xrec = ilwt(A,D,“LiftingScheme”, LSupdated);马克斯(abs (x-xrec))
Ans = 2.2204e-16

通常在最后添加一个归一化步骤,以便信号中的能量( 2 范数)保留为标度系数和小波系数中能量的和。没有这个归一化步骤,能量就不会被保存。

规范(x, 2) ^ 2
Ans = 11.6150
规范(2)^ 2 +规范(D {1}, 2) ^ 2
Ans = 16.8091

添加必要的规范化步骤。

LSsteps = lsupdate . liftingsteps;LSscaled =升降方案(“LiftingSteps”LSsteps,“NormalizationFactors”, (sqrt (2)));[A,D] = lwt(x,“LiftingScheme”LSscaled,“水平”1);规范(2)^ 2 +规范(D {1}, 2) ^ 2
Ans = 11.6150

现在, 2 信号的范数等于标度系数和小波系数中的能量之和。您在本例中开发的提升方案是Haar提升方案。

小波工具箱™支持许多常用的提升方案金宝appliftingScheme具有预定义的预测和更新步骤,和标准化因素。以Haar吊装方案为例。

lshaar = lift scheme (“小波”“哈雾”);

并不是所有的提升方案都是由单个预测和更新的提升步骤组成的,请检查对应的提升方案bior3.1小波。

lsbior3_1 = lift scheme (“小波”“bior3.1”
lsbior3_1 =小波:'bior3.1' LiftingSteps: [3 × 1] liftingStep NormalizationFactors: [2.1213 0.4714] CustomLowpassFilter: [] LiftingSteps: Type: 'update' Coefficients: -0.3333 MaxOrder: -1 Type: 'predict' Coefficients: [-0.3750 -1.1250] MaxOrder: 1 Type: 'update' Coefficients: 0.4444 MaxOrder: 0