赞
踩
小波是一种具有零均值的快速衰减的波浪状振荡,与扩展到无穷远的正弦波不同,小波存在的时间有限,小波有不同的大小和形状。下面是一些常见的示例,需要根据不同的应用领域来选择合适的小波。
其中,缩放和平移是小波变换中的两个重要概念。
假如有一个信号f(t),缩放是指在时间上拉伸和收缩信号的过程,可以用下面的式子表示,其中s是尺度因子,他是一个正值,对应于信号在时间上的尺度,尺度因子与小波的频率成反比,尺度因子越大,小波就会被拉伸变长,那么小波的频率就会变小,反之,当尺度因子减小,小波就会被压缩,小波的频率就会变大;例如,将一个正弦波缩放2会导致其原始频率降低一半或一倍频程。所以对于小波,尺度和频率之间存在一个比例常数的倒数关系,其中这个比例常数被乘为小波的“中心频率”,小波的等效频率与中心频率之间存在下列关系:
其中,Feq为小波等效频率,Cf为中心频率,s为尺度因子,是采样间隔。
拉伸小波有助于捕获信号中缓慢变化的部分,而压缩小波有助于捕获信号中突变的部分。
平移是指沿着信号长度延迟或者提前小波的开始,可以表示为f(t-k),表示小波发生位移到t-k处,通常需要位移将小波与信号中寻找的特征对齐。
小波分析中两种主要的变换为连续小波变换和离散小波变换,这两种变换根据小波的缩放和位移有所不同。
时频域分析
时间局部化频率分量的过滤
可以使用此转换来获得信号的同步时频分析,而解析小波最适合于时频分析,因为这些小波(Morse Wavelets, Bump Wavelets, Analytic Morlet Wavelet)没有负的频率分量。连续小波变换输出的是系数,这些系数将用作对信号的尺度,频率和时间
对于连续小波变换,可以在每两个整数尺度内以中间尺度分析信号,如下图
在2的1次尺度和2的2次尺度之间还可以有更多的尺度去分析(精细尺度分析),也即对应于将应用更多个不同频率的小波对信号进行分析,这个参数称为每倍频程的尺度数,每倍频程的长度数越大,尺度离散化越精细,这个参数的典型值有10,12,16,32,(即上图中指数项的分母)。
分析过程:每个缩放的小波沿信号的整个长度进行时间偏移,并与原始信号进行比较,对所有的尺度重复此过程,从而生成作为小波尺度和移位参数函数的系数。例如,一个包含1000个样本的信号用20格尺度分析会产生20000个系数,这样,可以使用连续小波变换更好的表征信号中的震荡行为。
连续小波变换可以在Matlab中可以用cwt函数进行;
- No = 10;
- Nv = 32;
- figure
- cwt(f,Fs,'NumOctaves',No,'VoicesPerOctave',Nv);
- %f为信号,Fs为采样频率,No为倍频带数量,Nv为倍频带声音数量
去噪
压缩
离散小波变换有助于用较少的系数表示许多自然发生的信号和图像,这使得表示更为稀疏,离散小波变换的基本尺度设置为2,则尺度变换为2的指数形式,而位移发生在前面等式的整数倍处为,这个过程通常被称为二元缩放和移位,这种方法消除了系数的冗余,变换的输出会生成与输入信号长度相等数量的系数,因此他需要更少的内存。
离散小波变换过程相当于将信号通过一个带通滤波器,如下图(S为信号)
下面是离散小波变换的基本过程:
选择小波函数:首先需要选择适当的小波函数作为变换的基函数。常用的小波函数有Daubechies小波、Haar小波、Symlet小波等。选择合适的小波函数决定了变换的性能。
信号分解:将待处理的信号分解成低频部分(近似系数)和高频部分(细节系数)。分解可以使用滤波器组来实现,其中一个滤波器用于提取低频部分,另一个滤波器用于提取高频部分。低频部分表示信号的平滑部分,而高频部分表示信号的细节或边缘信息。
重复分解:对于得到的低频部分(近似系数),可以再次进行分解(分解得到的系数数量是上一级的一半)得到更低频和更高频的子带。这个过程可以迭代多次,直到达到所需的频带分解层数。
重构:在完成信号分解后,可以通过逆过程对子带进行重构,以还原原始信号。重构过程使用逆滤波器组来进行,其中一个逆滤波器用于恢复低频部分,另一个逆滤波器用于恢复高频部分。
值得注意的是,离散小波变换是一种多尺度分析方法,可以提取信号的时间和频率特征,并具有良好的局部特性。通过选择不同的小波函数和分解层数,可以根据需求对信号进行不同精度的变换和重构。
离散小波的去噪过程大概为以下几步:
1.获得近似系数和细节系数。
2.分析细节并确定合适的阈值技术。
3.对细节系数进行阈值处理并重构信号。
对于非平稳信号,高频成分里面一般会包含噪声,但是注意有用的信号突变也会是高频成分,那么就需要使用阈值去计算高频成分里面的有用信号和噪声信号,Matlab提供四种计算阈值的方法和两种应用阈值的方法(软阈值和硬阈值:幅值小于阈值的系数都设为0,不同的是软阈值将大于阈值的系数减去阈值,而硬阈值处理则对于大于阈值的系数不做操作)。下面可以给出小波降噪的一段代码
- level = 5;%小波分解级数
- wname = 'sym6'; %指定小波
- fd= wden(f,'rigrsure','s','sln',level,wname) ;
- figure:
- subplot(2,1,1);
- plot(f);axis tignt; grid on;title('Noisy Signal') ;
- subplot(2,1.2)
- plot(fd); axis tight; grid on;
- title(sprintf('Denoised Signal SNR: %0.2f dB',-20*1og10 (norm(abs(fO-fd) ) /norm(f0))));
- %函数wden对输入信号进行多级分解,计算阈值并将其应用于细节系数,使用新的细节系数重构信号
- %f是含噪信号
- %'rigrsure'指定阈值技术
- %'s'表示软阈值处理
- %'sln'表示使用第一级的单个噪声估计值进行阈值重缩放
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。