小波分析(wavelet analysis), 或小波转换(wavelet transform)是指用有限长或快速衰减的、称为母小波(mother wavelet)的振荡波形来表示信号。该波形被缩放和平移以匹配输入的信号。

小波变换的概念是由法国从事石油信号处理的工程师J.Morlet在1974年首先提出的,通过物理的直观和信号处理的实际经验的需要建立了反演公式,当时未能得到数学家的认可。正如1807年法国的热学工程师J.B.J.Fourier提出任一函数都能展开成三角函数的无穷级数的创新概念未能得到著名数学家J.L.Lagrange,P.S.Laplace以及A.M.Legendre的认可一样。幸运的是,早在七十年代,A.Calderon表示定理的发现、Hardy空间的原子分解和无条件基的深入研究为小波变换的诞生做了理论上的准备,而且J.O.Stromberg还构造了历史上非常类似于当前的小波基;1986年著名数学家Y.Meyer偶然构造出一个真正的小波基,并与S.Mallat合作建立了构造小波基的统一方法加多尺度分析之后,小波分析才开始蓬勃发展起来,其中比利时女数学家I.Daubechies撰写的《小波十讲(Ten Lectures on Wavelets)》对小波的普及起了重要的推动作用。它与Fourier变换、窗口Fourier变换(Gabor变换)相比,这是一个时间和频率的局域变换,因而能有效的从信号中提取信息,通过伸缩和平移等运算功能对函数或信号进行多尺度细化分析(MultiscaleAnalysis),解决了Fourier变换不能解决的许多困难问题,从而小波变化被誉为"数学显微镜",它是调和分析发展史上里程碑式的进展。

本文以《Wavelet transforms and their applications toturbulence》和《A practicalguide to wavelet analysis》两篇文章的研究为基础,利用MATLAB,结合西北地区ET0,研究分析了其周期变化。并给出具体代码:

%WAVETEST Example Matlab script for WAVELET, using NINO3 SST dataset

%

% See "http://paos.colorado.edu/research/wavelets/"

% Written January 1998 by C. Torrence

%

% Modified Oct 1999, changed Global Wavelet Spectrum (GWS) to be sideways,

%   changed all "log" to "log2", changed logarithmic axis on GWS to

%   a normal axis.

load 'sst.txt'   % input SST time series

sst = sst;

%------------------------------------------------------ Computation

% normalize by standard deviation (not necessary, but makes it easier

% to compare with plot on Interactive Wavelet page, at

% "http://paos.colorado.edu/research/wavelets/plot/"

variance = std(sst)^2;

sst = (sst - mean(sst))/sqrt(variance) ;

n = length(sst);

dt = 1 ;

time = [0:length(sst)-1]*dt + 1956.0 ;  % construct time array

xlim = [1956,2011];  % plotting range

pad = 1;      % pad the time series with zeroes (recommended)

dj = 0.25;    % this will do 4 sub-octaves per octave

s0 = 2*dt;    % this says start at a scale of 6 months

j1 = 7/dj;    % this says do 7 powers-of-two with dj sub-octaves each

lag1 = 0.72;  % lag-1 autocorrelation for red noise background

mother = 'Morlet';

% Wavelet transform:

[wave,period,scale,coi] = wavelet(sst,dt,pad,dj,s0,j1,mother);

power = (abs(wave)).^2 ;        % compute wavelet power spectrum

% Significance levels: (variance=1 for the normalized SST)

[signif,fft_theor] = wave_signif(1.0,dt,scale,0,lag1,-1,-1,mother);

sig95 = (signif')*(ones(1,n));  % expand signif --> (J+1)x(N) array

sig95 = power ./ sig95;         % where ratio > 1, power is significant

% Global wavelet spectrum & significance levels:

global_ws = variance*(sum(power')/n);   % time-average over all times

dof = n - scale;  % the -scale corrects for padding at edges

global_signif = wave_signif(variance,dt,scale,1,lag1,-1,dof,mother);

% Scale-average between El Nino periods of 2--8 years

avg = find((scale >= 2) & (scale < 8));

Cdelta = 0.776;   % this is for the MORLET wavelet

scale_avg = (scale')*(ones(1,n));  % expand scale --> (J+1)x(N) array

scale_avg = power ./ scale_avg;   % [Eqn(24)]

scale_avg = variance*dj*dt/Cdelta*sum(scale_avg(avg,:));   % [Eqn(24)]

scaleavg_signif = wave_signif(variance,dt,scale,2,lag1,-1,[2,7.9],mother);

whos

%------------------------------------------------------ Plotting

%--- Contour plot wavelet power spectrum

subplot('position',[0.1 0.37 0.65 0.28])

levels = [0.0625,0.125,0.25,0.5,1,2,4,8,16] ;

Yticks = 2.^(fix(log2(min(period))):fix(log2(max(period))));

contour(time,log2(period),log2(power),log2(levels));  %*** or use 'contourfill'

%imagesc(time,log2(period),log2(power));  %*** uncomment for 'image' plot

xlabel('Time (year)')

ylabel('Period (years)')

title('Wavelet Power Spectrum')

set(gca,'XLim',xlim(:))

set(gca,'YLim',log2([min(period),max(period)]), ...

'YDir','reverse', ...

'YTick',log2(Yticks(:)), ...

'YTickLabel',Yticks)

% 95% significance contour, levels at -99 (fake) and 1 (95% signif)

hold on

contour(time,log2(period),sig95,[-99,1],'k');

hold on

% cone-of-influence, anything "below" is dubious

plot(time,log2(coi),'k')

hold off

具体分析:西北地区的年均ET0存在2-3a的显著性震荡周期和6a的准周期震荡。对于2-3a的显著周期震荡,分别在20世纪60年代初期到60年代末期和20世纪80年代末期到21世纪初期较为显著,并且处于低值期,2005年以后进入减小期;对于6a的准周期震荡而言,分别在20世纪60年代后期到20世纪70年代前期、20世纪70年代后期到20世纪80年代初期和20世纪80年代中期到21世纪初期,并且目前处于自2006年以来ET0的低值区。值得注意的是,在超过28年的分析中,等值线几乎全为红色,且没有闭合的中心,这主要是由于ET0的时间序列仅为56年,超过28年的周期不能明显地表示出来。

参考文献

[1] Marie Farge. Wavelet transforms and their applications to turbulence[J]. Annual Review of Fluid Mechanics, 1992,24: 395-457.

[2] Christopher Torrence, Gilbert P. Compo. A practical guide to wavelet analysis[J]. Bulletin of the American Meteorological Society, 1998,79: 61-78.

matlab std函数_如何利用Matlab进行小波分析相关推荐

  1. matlab 高斯函数_光学与matlab:高斯光的模拟

    光学与matlab:高斯光的模拟 高斯光束,自然何为高斯光束?百度了一下,如下所示,"通常情形,激光谐振腔发出的基模辐射场,其横截面的振幅分布遵守高斯函数,故称高斯光束."如果您对 ...

  2. matlab hist函数_算法工匠MATLAB专训营:Matlab绘图,小试牛刀

    作者 | 蔡老师 仿真秀专栏作者 首发 | 仿真秀平台 导读:正文之前,我在此详细说明一下,因为本文包含的程序太难得,网上肯定找不到这样的程序.随着讲课的越来越深入,我给出的程序会越来越实用,接近于实 ...

  3. matlab cat函数_如何用Matlab编写贪吃蛇游戏?(持续更新)

    今后我们实验室的研究重点将会聚焦在"基于游戏的测评"和"教育游戏化"这两个主题上,因此很有必要研究实现"爆款"游戏的一些基本的技术方法.这篇 ...

  4. matlab seed函数_如何用matlab生成随机数函数_matlab随机数生成函数

    如何用matlab生成随机数函数 1. MATLAB 函数 rand 产生在区间 (0, 1)的均匀随机数,它是平均分布在 (0,1)之间.一个称为seed的值则是用来控制产生随机数的次数.均匀随机数 ...

  5. matlab hist函数_超全Matlab绘图方法整理(建议收藏!)

    你好,我是goldsunC 让我们一起进步吧! 使用Matlab绘图 图像是结果的一种可视化表现,它能直观的体现你的结果,并且能体现你获得结果的准确性,在当前的大数据时代,在做数据分析的时候,将其可视 ...

  6. matlab meshgrid函数_从零开始的matlab学习笔记——(28)立体图切面与三视图

    matlab应用--求极限,求导,求积分,解方程,概率统计,函数绘图,三维图像,拟合函数,动态图....更多内容尽在个人专栏:matlab学习 这一节我们说一说立体图的切面问题 slice函数 sli ...

  7. matlab max函数_从零开始的matlab学习笔记——(14)一些有用的函数(上):最值,平均数,中位数...

    matlab应用--求极限,求导,求积分,解方程....更多内容尽在个人专栏:matlab学习 上一节说了说符号运算中的多项式,这一节我们来看看几个非常有用的函数 最值: 最大值max(),最小值mi ...

  8. matlab disp函数_从零开始的matlab学习笔记——(13)符号计算中的多项式

    matlab应用--求极限,求导,求积分,解方程....更多内容尽在个人专栏:matlab学习 上一节我们算是简单了解了一下怎么用matlab解方程,这一节我么再回到多项式与符号计算. 符号计算中的多 ...

  9. matlab figure函数_如何在Matlab中使用GUI做一个简易音乐播放器? ---- (六)控件间的数据传递...

    我纠结了两个星期是否要写这一章-最后决定还是要写一章收尾,来解释其中的控件间的数据传递问题. 在前五篇中,如果有童鞋跟上了我的思路或者做完了这样一个gui,会发现还有一个一直避开的遗留问题,就是将歌曲 ...

最新文章

  1. 板子ping不通PC怎么办——韦东山嵌入式Linux学习笔记07
  2. Unit01: AJAX 、 AJAX的使用
  3. Spring Boot——读取.properties配置文件解决方案
  4. .net api 和java平台对接技术总结
  5. Linux脚本利器sed
  6. unity中单位是米还是厘米_401场地清理是什么,由施工单位做还是甲方做?造价中如何体现?...
  7. 李兰娟院士等新冠病毒鸡尾酒疗法研究取得新进展
  8. 【对讲机的那点事】450MHz模拟无线列调的工作原理(连载四)
  9. vsync信号产生与分发
  10. js操作动态表格内元素
  11. 六年级下计算机课ppt课件ppt课件,小学信息技术浙摄影版六年级上册第1课 走进计算机说课ppt课件...
  12. Atitit.Atiposter 发帖机 信息发布器 v7 q516
  13. 下载新版火狐后无法同步书签_Ubuntu解决火狐浏览器无法同步书签的问题【推荐】...
  14. 【Pix4d精品教程】Pix4d空三后处理:点云分类与过滤、DSM精编生成DEM、生成等高线案例详解
  15. 高中计算机数据的基本特征,高一信息技术《信息与信息的基本特征》教案
  16. java对接企业微信
  17. 仿百度文库解决方案——利用FlexPaper显示Flash(SWF)
  18. 离线安装MySQL缺少libaio.so.1文件——并离线安装libaio.so.1
  19. maven--入门使用及环境变量配置
  20. C语言用字符串sex储存,《C语言》上机实验题及参考答案2

热门文章

  1. Dev控件GridControl 的使用
  2. javascript的Foreach语法
  3. mysqldump导出数据库视图_mysql中如何用mysqldump批量如何导出视图view啊?
  4. C语言课后习题(36)
  5. php file get contents 空,file_get_contents()函数为空
  6. 资源放送丨《Oracle存储过程性能分析案例》PPT视频
  7. 聊聊数仓中TPCD-DSTPC-H与查询性能的那些事儿
  8. 再获信通院权威认证,优等生华为云GaussDB数据库凭什么?
  9. 解读clickhouse存算分离在华为云实践
  10. 教你如何使用FusionInsight SqoopShell