1、概括
小波变换是信号时频分析中浓墨重彩的一笔。关于小波变换怎么简单、易懂向大家介绍,我也看了相关博文。目前,我根据公众号出发的理念,带大家浅浅入门一下小波变换,会用即可,深入挖掘理论,请参考专业的论文。
这次给大家带来的是连续小波变换(Continuous Wavelet Transform,CWT),对比短时傅里叶变换(STFT),CWT有更多的优势、更加灵活。区别于短时傅里叶变换的正弦基函数,连续小波变换采用小波基函数,通过调整小波基函数的尺度因子和时间平移因子,能分析信号在不同频率尺度和时间位置上特性。
本文的流程如下图所示,模拟了一个啁啾信号(一个线性调频信号),并借助matlab的连续小波变换函数cwt,分析了其时频特性,绘制了时频图,对比了短时傅里叶变换的结果,来表明两个方法之间的优劣。
同时,使用matlab的mesh函数、surf函数、imagesc函数、image函数、pcolor函数和imshow函数分别绘制了连续小波变换的时频图,说明不同函数之间的差异,方便大家日后作图时选择合理的绘图函数。
该内容主要参考了一些资料:
https://ww2.mathworks.cn/help/wavelet/ref/cwt.html?searchHighlight=cwt&s_tid=srchtitle_support_results_1_cwt
此外还有MATLAB关于mesh函数、surf函数、imagesc函数、image函数、pcolor函数和imshow函数的说明文档!
代码采用了Matlab 2024a进行运行,欢迎大家测试和提出问题!
2、具体案例
采用短时傅里叶变换中的啁啾信号为例,啁啾(zhōu jiū,英文中为chirp)信号一般是指调频信号,即随着时间的变化,信号的主频在不断发生变化(或增加、或减少)。当这种信号当做音频输出时,听起来会像鸟的唧唧声,所以叫啁啾。
利用matlab的chirp函数生成了一个1s内从100Hz到5000Hz的线性调频信号(啁啾信号),采样频率为24000Hz,具体如下:
从啁啾信号的局部细节图能发现,随着时间的增长,信号波形越来越密集,即信号的频率逐渐增大。在啁啾信号频谱中,低频占据信号的主频,无法发现信号频率的时变特征。
采用连续小波变换(MATLAB中cwt函数,本文采用的morse小波,其他参数均采用cwt的默认设置),获得啁啾信号的时频分析结果,如下图所示:
从上图中能发现,啁啾信号的频率从100Hz到5000Hz线性增长,这表明CWT能较好地分析该啁啾信号,对比FFT的结果,表明了CWT在信号时频分析方面的优势。
此外,在上图中CWT所表征的啁啾信号随着时间的增长,其频域的主频带宽越来越大,这似乎与啁啾信号的真实频域状态(主频的带宽不变,主频随时间线性增加)不符,这主要是因为CWT选择的小波尺度并不是最佳的。在CWT中