为每个 cD1、cD2、cD3 和 cA3 信号重建 DWT

信息处理 fft 频谱 小波 重建
2022-01-30 09:43:24

DWT这个问题对于这个论坛来说必须是基本的,但我最近才开始使用,而且我以前也使用CWT过。
我想我可以将我的信号分解为 L 级,然后scalogram使用以下脚本获取。
我的问题是如何为每个细节{cD1,cD2,cD3}和近似值重建信号CA3
在此处输入图像描述
这是我到目前为止所尝试的!

t=0:0.1:300;
f=[0.4 0.6 1];
y=sin(2*pi*f(2)*t)+sin(2*pi*f(2)*t)+sin(2*pi*f(3)*t);
len=length(y);level=10;
[c,l]=wavedec(y,level,'coif5');
cfd=zeros(level,len);
for k=1:level
    d=detcoef(c,l,k);
    d=d(ones(1,2^k),:);
    cfd(k,:)=wkeep(d(:)',len);
end
image(flipud(wcodemat(cfd,255,'row')));

PS:实际上我想估计一个信号中的频率分量,所以我认为我必须将我的信号分解为几个级别,然后从细节中进行 FFT 估计所涉及的分量是主要信号。是对的吗?还是更好的主意?
对于 CWT 案例,我直接估计频率分量。

1个回答

好的,我将尝试向您解释 DWT 的情况。

所以在 CWT 中,基本上你所做的是通过将信号与母小波函数的每个尺度和移位进行卷积来生成小波系数。但是,这样做的问题在于,当您分析信号的低频分量时,您会进行过采样,或者过于频繁地执行小波分析。此外,时间和频率局部化之间的关系很像量子力学中速度和位置局部化之间的关系,当您执行 CWT 时,这种不等式在某些时间/频率尺度上被违反。本质上,关于 CWT,变换在低频范围内是多余的。

然而 DWT 没有这个问题,因为 DWT 有效地对每个级别的信号进行下采样。DWT 基本上只有两个滤波器,一个高通滤波器和一个低通滤波器。高通滤波器产生“细节”系数,低通滤波器产生“平均”系数。但是,请记住,计算信号的移动平均值是低通滤波的一种形式. 因此,当我们执行低通滤波器并获得“平均”DWT 系数时,这些系数基本上只是信号的低频分量。而且,由于我们知道它们的频率较低,我们知道在数字情况下,我们需要更少的数据点来表示较低频率的信号。然后对可以计算的 DWT 的每个级别重复低通和高通滤波。电平取决于信号的长度。如果一个信号有个数据点,其中 ,则可以将 DWT 计算为电平。

k
k=2N
N

我将尝试举一个现实生活中的例子。假设您有一个 1024 个样本的信号,以根据 Nyquist 标准,信号可以解析的最高频率是计算 DWT 的第一级将产生两个向量,每个向量的长度为 512。一个来自高通滤波器,另一个来自低通滤波器(这些向量有时称为高通/低通滤波器组)。高通系数是系数,代表一到两个 pi 范围内的频率,低通系数是

4π Hz.
2π Hz.
cD1cA1表示频率在 0 到 1 pi 范围内的系数。DWT 再次应用于低通系数,得到两个向量,每个向量的长度为 256,这次低通滤波器组代表 0 到 1/2 pi 范围内的频率。此过程重复 10 次(对于这种情况,2^10 = 1024),因为最后一次将导致每个长度为 1 的低通和高通滤波器组。

基本上,在 DWT 的更高尺度上,我们得到更好的频率分辨率,但时间分辨率更差。较低的尺度具有更好的时间分辨率但较差的频率分辨率。我还将为您提供 Polikar 关于这些内容的好教程的链接:http: //person.hst.aau.dk/enk/ST8/wavelet_tutotial.pdf

要重建信号,只需将逆 DWT 应用于要重建的级别数。

编辑:忘了提到不需要 FFT,您已经在根据频率进行过滤。