主要内容

正交和双正交滤波器组

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

$ \波浪号{G} $而且$ \波浪号{H} $表示低通和高通分析滤波器和G美元而且H美元表示相应的低通和高通合成滤波器。双通道临界采样滤波器组使用低通和高通滤波器对输入信号进行滤波。滤波器的子带输出被下采样两个以保持样本的总数。为了重建输入,上采样2,然后使用低通和高通合成滤波器插值结果。如果滤波器满足某些属性,就可以实现输入的完美重构。为了证明这一点,使用带有两个消失矩的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 = [flip(gtilde);g] wavetfilters = [flip(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'和'coifN',其中N是一个有效的过滤器数。

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

[lowpass,highpass] = dwt(dwg,“db2”);Xrec = idwt(low - pass,highpass,“db2”);

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

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

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

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

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

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

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

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

wavcoefs = deteccoef (C,L,“dcells”);a3 = appcoef(C,L,“sym4”);

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

Cfsmatrix = 0 (numel(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个样本的心电信号的情况下,这必须发生在$L = \log_2{2048}$

[C,L] = wavedec(wecg,log2(numel(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”);
Baidu
map