主要内容

正交和双正交滤波器组

本例展示了用小波工具箱软件构造和使用正交和双正交滤波器组。经典的临界采样双通道滤波器组如下图所示。

$ \波浪号{G} $而且$ \波浪号{H} $表示低通和高通分析滤波器和G美元而且H美元表示相应的低通和高通合成滤波器。双通道严格采样滤波器组使用低通和高通滤波器对输入信号进行滤波。滤波器的子带输出被下采样两个,以保持样本的总数。要重建输入,上采样两个,然后使用低通和高通合成滤波器插值结果。如果过滤器满足某些属性,则可以实现输入的完美重构。为了证明这一点,使用Daubechies的带有两个消失矩的极值相位小波对心电信号进行滤波。该示例将在后面的部分解释消失矩的概念。

负载wecg;情节(wecg);标题(心电信号的

获得低通(缩放)和高通(小波)分析和合成滤波器。

[gtilde,htilde,g,h] = wfilters(“db2”);

对于本例,将DWT的填充模式设置为周期化。这并没有扩展信号。

Origmodestatus = dwtmode(“状态”,“nodisplay”);dwtmode (“每”,“nodisplay”);

得到心电信号的一级离散小波变换。这相当于图中双通道滤波器组的分析分支(带下采样)。

[lowpass,highpass] = dwt(wecg,gtilde,htilde);

用合成滤波器对低通(缩放系数)和高通(小波系数)子带进行上采样和插值,并演示了完美的重构。

Xrec = idwt(low - pass,highpass,g,h);Max (abs(wecg-xrec)) subplot(2,1,1) plot(wecg);标题(“原始心电图波形”) subplot(2,1,2) plot(xrec);标题(“重建心电波形”);
Ans = 1.3658e-12

'db2'小波的分析和合成滤波器只是彼此的时间反转。通过比较下面的内容,你可以看到这一点。

scalingFilters =[翻转(gtilde);g]小波滤波器=[翻转(htilde);h]
scalingFilters = 0.4830 0.8365 0.2241 -0.1294 0.4830 0.8365 0.2241 -0.1294 waveletFilters = -0.1294 -0.2241 0.8365 -0.4830 -0.1294 -0.2241 0.8365 -0.4830

这是所有正交小波滤波器组的情况。小波工具箱支持的正交小波族有'dbN'、'fkN'、'symN'金宝app和'coifN',其中N是一个有效的滤波器数。

而不是提供dwt使用前面示例中的过滤器,您可以使用字符串'db2'。使用小波族的短名称和滤波器号,您不必正确地指定分析和合成滤波器。

[low - pass,high - pass] = dwt(wecg,“db2”);Xrec = idwt(低通,高通,“db2”);

Daubechies's极值相位和最小不对称相位小波('db'和'sym')中的滤波器数是指消失矩的数量。基本上,一个有N个消失矩的小波在小波系数中除去一个N-1阶的多项式。为了说明这一点,构造一个由线性趋势和加性噪声组成的信号。

N = (0:511)/512;X = 2*n+0.2*randn(size(n));情节(n, x)

线性趋势是一次多项式。因此,带有两个消失矩的小波可以去除这个多项式。标度系数保持线性趋势,小波系数可认为仅由噪声组成。使用'db2'小波(两个消失矩)获得信号的一级DWT,并绘制系数。

[A,D] = dwt(x,“db2”);次要情节(2,1,1)图(一个);标题(的比例系数);次要情节(2,1,2)情节(D);标题(“小波系数”);

你可以使用dwt而且得到要实现一个两通道正交滤波器组,但往往更方便实现一个多层次的两通道滤波器组使用wavedec.多级DWT迭代低通(缩放)滤波器的输出。换句话说,滤波器组第二级的输入是低通滤波器在一级的输出。一个二级小波滤波器组如下图所示。

在每一个连续的级别上,缩放系数和小波系数的数量被下采样两个,因此系数的总数被保留。使用“sym4”正交滤波器组获得心电信号的三级DWT。

[C,L] = wavedec(wecg,3,“sym4”);

按级别划分的系数数量包含在向量L中。L的第一个元素等于256,它表示第3级(最后一级)的缩放系数的数量。L的第二个元素是第三级小波系数的个数。后续元素给出更高级别的小波系数的数量,直到到达L的最后一个元素。L的最后一个元素等于原始信号中的样本数量。标度系数和小波系数以相同的顺序存储在向量C中。要提取缩放系数或小波系数,使用appcoefdetcoef.提取单元阵列中的所有小波系数和最终级缩放系数。

wavcoefs =检测系数(C,L,“dcells”);a3 = appcoef(C,L,“sym4”);

您可以在它们的近似位置绘制小波和缩放系数。

Cfsmatrix = 0(数字(wecg),4);Cfsmatrix (1:2:end,1) = wavcoefs{1};Cfsmatrix (1:4:end,2) = wavcoefs{2};Cfsmatrix (1:8:end,3) = wavcoefs{3};Cfsmatrix (1:8:end,4) = a3;次要情节(5、1、1)的阴谋(wecg);标题(原始信号的);轴Kk = 2:4 subplot(5,1, Kk) stem(cfsmatrix(:, Kk -1),“标记”,“没有”,“ShowBaseLine”,“关闭”);ylabel ([' D 'num2str (kk-1)]);轴结束次要情节(5、1、5);茎(cfsmatrix(:,结束),“标记”,“没有”,“ShowBaseLine”,“关闭”);ylabel (“A3”);包含(“样本”);轴

因为严格采样的小波滤波器组在每个级别上都对数据进行了采样,所以当只剩下一个系数时,分析必须停止。在具有2048个样本的ECG信号的情况下,这必须发生在$L = \log_2{2048}$

[C,L] = wavedec(wecg,log2(数字(wecg)),“sym4”);流(最后一层的系数数是%d。\ n”L (1));
最后一层的系数数是1。

如果你想实现一个正交小波滤波器组而不需要下采样,你可以使用modwt

Ecgmodwt = modwt(wecg,“sym4”3);Ecgmra = modwtmra(ecgmodwt,“sym4”);次要情节(5、1、1);情节(wecg);标题(原始信号的);标题(基于modwt的多分辨率分析);Kk = 2:4 subplot(5,1, Kk) plot(ecgmra(Kk -1,:));ylabel ([' D 'num2str (kk-1)]);结束次要情节(5、1、5);情节(ecgmra(最终,:));ylabel (“A3”);包含(“样本”);

在双正交滤波器组中,合成滤波器不是简单的分析滤波器的时间反转版本。双正交样条小波滤波器家族就是这种滤波器组的一个例子。

[LoD,HiD,LoR,HiR] = wfilters(“bior3.5”);

如果您检查分析过滤器(LoD,HiD)和合成过滤器(LoR,HiR),您会发现它们非常不同。这些滤波器组仍然提供完美的重建。

[A,D] = dwt(wecg,LoD,HiD);xrec = idwt(A,D,LoR,HiR);马克斯(abs (wecg-xrec))
Ans = 4.4409e-16

当你的滤波器组需要线性相位时,双正交滤波器是有用的。除哈尔小波滤波器外,正交滤波器不能有线性相位。如果您有信号处理工具箱™,您可以查看正交和双正交对小波滤波器的相位响应。

[Lodb6,Hidb6] = wfilters(“db6”);[PHIdb6,W] = phasez(Hidb6,1,512);PHIbior35 = phasez(HiD,1,512);图;次要情节(2,1,1)情节(w /(2 *π)PHIdb6);标题(“db6小波的相位响应”);网格;包含(“周期/样本”);ylabel (“弧度”);次要情节(2,1,2)情节(w /(2 *π)PHIbior35);标题(“bior3.5小波的相位响应”);网格;包含(“周期/样本”);ylabel (“弧度”);

将dwtmode设置回初始设置。

dwtmode (origmodestatus“nodisplay”);