2025年小波变换之离散小波变换

小波变换之离散小波变换离散小波变换 DWT DiscreteWave DWT 离散小波变换是一种近似的小波变换方法 将信号分解成不同尺度的近似系数和细节系数 DWT 使用离散的小波函数和离散的时间尺度 通过滤波和下采样操作来实现信号的分解 通常 DWT 将信号分解为一组高频 和低频 子信号

大家好,我是讯享网,很高兴认识大家。

离散小波变换(DWT)

(DiscreteWaveletTransform, DWT)离散小波变换是一种近似的小波变换方法,将信号分解成不同尺度的近似系数和细节系数。DWT使用离散的小波函数和离散的时间尺度,通过滤波和下采样操作来实现信号的分解。通常,DWT将信号分解为一组高频低频子信号。

关于dwt,matlab官方文档中,给出了wavedec小波分解函数使用图解,对于信号X,通过小波变换后(带通滤波器)分解为一个高通滤波器和一个低通滤波器串联,进而分解出相对高通系数cD1和近似系数cA1,再将近似系数分解为相对高通系数cD2和近似系数cA2,进一步分解为cD3和cA3,如下图所示,为3层小波分解
在这里插入图片描述
讯享网
离散小波变换的一级分解公式如下:
A 1 ( n ) = ∑ k f ( k ) ∗ h ( k − n ) D 1 ( n ) = ∑ k f ( k ) ∗ g ( k − n ) A_1(n)=\sum_k f(k) * h(k-n) \\ D_1(n)=\sum_k f(k) * g(k-n) A1(n)=kf(k)h(kn)D1(n)=kf(k)g(kn)
其中: A 1 ( n ) A_1(n) A1(n)是低频( 近 )系数。 D 1 ( n ) D_1(n) D1(n)是高频( 细节 )系数。 h ( k ) h(k) h(k) g ( k ) g(k) g(k)分别是小波分析滤波器的低通和高通滤波器系数。离散小波变换允许信号在不同尺度上的分解和重构,以便分析不同频率成分。
调用格式如下;

[c,l] = wavedec(signal,n,wavename) 

讯享网

其中c为输出的近似系数细节系数,l表示了各部分信号的长度,signal为待处理信号,n表示分解层数,wavename为使用的小波函数名称,其中c和l的排列顺序在图中已给出了说明。
该函数采用了离散正交化小波变换分解,所谓正交化即保证每一次分解后的数据长度不变。
示例代码

讯享网% 生成信号 Fs = 1000; % 采样频率 t = 0:1/Fs:1-1/Fs; % 时间向量 x = cos(2*pi*50*t) + cos(2*pi*120*t); % 原始信号 % 进行小波变换 wname = 'db4'; % 小波名称 level = 3; % 分解级数 [C,L] = wavedec(x,level,wname); % 小波分解 % 提取近似系数和细节系数 A = cell(1,level); D = cell(1,level); for i = 1:level A{ 
   i} = wrcoef('a',C,L,wname,i); % 近似系数 D{ 
   i} = wrcoef('d',C,L,wname,i); % 细节系数 end % 绘制结果 figure; subplot(level+1,1,1); plot(t,x); title('原始信号'); for i = 1:level subplot(level+1,1,i+1); plot(t,A{ 
   i},t,D{ 
   i}); title(['近似系数和细节系数(级别 ' num2str(i) ')']); legend('近似系数','细节系数') end 

结果图:在这里插入图片描述
另一种使用方法:

% 生成信号 Fs = 1000; % 采样频率 t = 0:1/Fs:1-1/Fs; % 时间向量 x = cos(2*pi*50*t) + cos(2*pi*120*t); % 原始信号 % 进行小波变换 wname = 'db4'; % 小波名称 level = 3; % 分解级数 [C,L] = wavedec(x,level,wname); % 小波分解 plotDetCoefHelpper(x,C,L);%借助绘图帮助函数 function plotDetCoefHelpper(signal,C,L) m = length(L); %记录近似系数和细节系数的个数,level+1 subplot(m,1,1) plot(signal); %绘制原始信号 title("original signal") sum = 0; for i = 1:m-1 subplot(m,1,i+1) if i == 1 plot(C(1:L(i)));%绘制近似系数 title('Approximation Coefficients') else sum=sum+L(i-1); plot(C(sum+1:L(i)+sum));%绘制细节系数 title(['Level ' num2str(i-1) ' Detail Coefficients']); end end end 

输出结果如下:
在这里插入图片描述

小讯
上一篇 2025-04-04 21:09
下一篇 2025-02-15 22:50

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/17473.html