HF.074 | “数学显微镜”——小波分析

[复制链接]


 小波(Wavelet),顾名思义,指“小的波形”。所谓“小”是指它具有衰减性;而称之为“波”则是指它的波动性,其振幅正负相间的震荡形式。与Fourier(傅里叶)变换相比,小波变换是时间(空间)和频率的局部化分析,它通过伸缩平移运算对信号(函数)逐步进行多尺度细化,最终达到高频处时间细分,低频处频率细分,能自动适应时频信号分析的要求,从而可聚焦到信号的任意细节,解决了Fourier变换的困难问题,成为继Fourier变换以来在科学方法上的重大突破,因此人们常把小波变换称为“数学显微镜”。

小波分析在水文学领域应用广泛,常用于水文多时间尺度分析,分解水文序列,如降水、流量、水位等,以提取其不同的时间尺度成分,如趋势、周期、突变等,揭示水文过程的内在规律和变化机制。小编将以济南市莱芜站点1951-2021年降水量数据为例,应用MATLAB 2020a Wavelet Analyzer工具箱对其进行小波分析。


01

分析逻辑


1658c0a9c0c70ce7f82fea8094131477.png


02

具体步骤


1.数据距平处理

数据距平是指数据与其长期平均值的差值,在对年降雨序列数据进行小波分析前,通常需要进行数据距平处理,以消除数据的季节性和周期性变化,使数据更加平滑和稳定。数据距平处理如下图所示:

8ac69e1612a98d0d81ca7784b4d2339d.png
96406a2ab2110f2b3aeab725d787a1f9.png

>> 滑动查看数据距平处理结果 >>


2.数据边界效应消除

小波分析是一种将信号在时域和频域上同时进行分析的方法,它可以提取信号的局部特征和周期性。但是,当信号是有限长度时,小波分析可能会受到边界效应的影响,导致信号的边缘部分的分析结果不准确或失真,为消除或减少边界效应,常常需要对信号进行延长,即在信号两端添加一些数据,使得信号看起来更加平滑或连续。延长的数据可以是信号本身的一部分,也可以是根据信号的性质生成的一些数据。

详细操作为:

①将距平后的年水量数据导入到MATLAB中,并保存为.mat格式。

983eaa05a4dcb1563df1657fb939077f.png
7f32eaecb616d22714030de5b6b1d1ec.png

>> 滑动查看详细步骤截图 >>


②采用wextend函数对降水数据进行对称延长,并绘制延长后的数据,代码如下:

[C] 纯文本查看 复制代码
% 周期延长的长度L = 36 ;% 计算延长后的序列x_extended = wextend('1D','sym',x1,L);% 绘制延长后的信号x = 1:length(x_extended)plot(x(1:36),x_extended(1:36),'r',x(36:107),x_extended(36:107),'b',x(107:143),x_extended(107:143),'r-')% 添加图例legend('Front Extended Singal','Orginal Data','Later Extended Singal')
c50ec828fe319c1c49dbbe025b7f0978.png

图 / 延长后的数据


3.计算小波系数(复数)

①在命令行输入waveAnalyzer,调出MATLAB中的小波分析工具箱;②选择one-Dimensional中的 Complex Continuous Wavelet 1-D,并通过File—Local Signal导入延长后的降水量数据;③Wavelet选择cmor,点击Analyze,计算复小波系数。

396c7d1dd76a7a1781b089f9d2f7a0bb.png
06c2826f8d948df3aadff6db4fd213e5.png
05a5adb5379d07181686dfc74b9c09e3.png

>> 滑动查看详细步骤截图 >>


4.计算小波系数的实部、模、模方和方差

小波分析计算结果为延长后降水数据的小波系数,需要删除延长数据对应的小波系数,删除前36列与后36列。计算小波系数的实部、模、模方与方差,代码如下:

[C] 纯文本查看 复制代码
% 计算小波系数实部coefs_real = real(coefs)% 计算小波系数的模coefs_abs = abs(coefs)% 计算复小波系数模的平方coefs_sq = coefs_abs.^2% 小波方差coefs_var = var(coefs_sq,0,2); % 按行计算

上述所得的小波系数为复数,其中:小波系数的实部是指小波系数在实数轴上的投影,它可以表示信号的对称性和偶性;小波系数的模是指小波系数的绝对值,它可以表示信号的振幅和能量;小波系数的模方是指小波系数的模的平方,它可以表示信号的能量密度和功率谱;小波系数的方差是指小波系数的模方的平均值,它可以表示信号的能量分散程度和平稳性。


5.绘制小波系数实部、模、模方等值线图

分别绘制小波系数实部、模、模方等值线图,代码如下:

[C] 纯文本查看 复制代码
% 绘制小波系数实部等值线图/模等值线图/模方等值线图% 定义横坐标和纵坐标x = 1951:2021; % 年份y = 1:64; % 周期尺度% 绘制等值线图contourf(x,y,coefs_real) % 设置色带的颜色方案,例如 'jet' 或 'parula' 或 'hot'/'cool'/'coolwarm'colormap('jet')% 添加色带的标注colorbar% 调整色带的范围,例如 [0 1] 或 'auto'caxis('auto')% 添加坐标轴标签xlabel('Year')ylabel('Scale')
ff755777f82db475565287dd70c36bef.png
3f55951f02e9dae251ac294e49839be5.png
905171f9b3422e6dbfc347e71136767e.png

>> 滑动查看小波系数实部/模/模方等值线图 >>


6.绘制小波方差图、主周期趋势图

使用散点图绘制小波系数方差图,使用折线图绘制小波系数主周期图,绘制如下:

80c3df22defcca5d8719726bfef9a717.png
169cfdff8b03abaebfd768116a69c482.png

>> 滑动查看小波系数方差图/主周期图 >>







03

替代步骤


● 绘制小波系数实部、模、模方等值线图

若对MATLAB语言不熟悉,推荐使用Surfer软件进行等值线图的绘制,下述操作主要利用Surfer 8.0进行,以小波系数实部等值线图为例。

1.数据网格化

将小波系数实部数据按照图中格式排列,以保证被软件识别,即列A为具体年份,列B为时间尺度,列C为不同年份和时间尺度下所对应的小波系数实部值。

在Surfer 8.0软件中,将排列后的数据进行网格化处理(网格—数据—打开),该步骤可根据需求选择多种网格化方法,将数据转化为.grd格式。

9371e1ce092fb7538fda13b165ed3676.png
7c2abf751819bda24117d1a539076c40.png

>> 滑动查看详细步骤截图 >>


2.等值线图绘制

在Surfer 8.0软件中,选择“地图—等值线图—新建等值线图”,打开上一步骤中生成的.grd文件,完成等值线图的绘制并保存,双击图层可对图片进行个性化调整,绘制结果如下:

4c5ff853b922d86c97aaabcef2aa96fa.jpeg

一图胜千言!水文图绘改版后致力于分享水文相关的精美图表,为读者提供作图思路和经验,帮助大家制作更漂亮丰富的图表。同时欢迎留言咨询绘图难点,我们会针对性地分享相关绘制经验。





回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
往事淡如云烟
活跃在4 天前
快速回复 返回顶部 返回列表