0% found this document useful (0 votes)
172 views3 pages

Syntax Wavelet

This Matlab script analyzes sea surface temperature (SST) data from the Nino 3 region using a wavelet transform to decompose the time series into time-frequency space and identify periods of variability. It performs the wavelet transform on the SST data and plots the results, including the wavelet power spectrum, global wavelet spectrum, and significance testing against red noise. The goal is to identify El Nino periods between 2-8 years in the SST data.

Uploaded by

Azhar Muttaqin
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
172 views3 pages

Syntax Wavelet

This Matlab script analyzes sea surface temperature (SST) data from the Nino 3 region using a wavelet transform to decompose the time series into time-frequency space and identify periods of variability. It performs the wavelet transform on the SST data and plots the results, including the wavelet power spectrum, global wavelet spectrum, and significance testing against red noise. The goal is to identify El Nino periods between 2-8 years in the SST data.

Uploaded by

Azhar Muttaqin
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

%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_nino3.dat' % input SST time series %load data_uvts_point_series.mat load kelompok8.txt; y = kelompok8 (:,2); %------------------------------------------------------ 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(y)^2; y = (y - mean(y))/sqrt(variance) ; n = 700; dt = 1/365 ; time = [0:700-1]*dt + 2007 ; % construct time array xlim = [2007,2008]; % plotting range pad = 1; % pad the time series with zeroes (recommended) dj = 0.25; % this will do 4 sub-octaves per octave s0 = 10*dt; % this says start at a scale of 6 months j1 = 4/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(y,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 %--- Plot time series subplot('position',[0.1 0.75 0.65 0.2]) plot(time,y); grid on; set(gca,'XLim',xlim(:)) xlabel('Time (year)') ylabel('Normalized Time ( vel(m/s)') title('a) Time Series of Temperature') hold off %--- 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)))); contourf(time,log2(period),log2(power),log2(levels)); %*** or use 'contourfill' shading flat; %imagesc(time,log2(period),log2(power)); %*** uncomment for 'image' plot xlabel('Time (year)') ylabel('Periode (years)') title('b) Temperature 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),'b') hold off %--- Plot global wavelet spectrum subplot('position',[0.77 0.37 0.2 0.28]) plot(global_ws,log2(period)) hold on plot(global_signif,log2(period),'--') hold off xlabel('Power ([C]^2)') title('c) Global Wavelet Spectrum') set(gca,'YLim',log2([min(period),max(period)]), ... 'YDir','reverse', ... 'YTick',log2(Yticks(:)), ... 'YTickLabel','') set(gca,'XLim',[0,1.25*max(global_ws)])

%--- Plot 2--8 yr scale-average time series %subplot('position',[0.1 0.07 0.65 0.2]) %plot(time,scale_avg) %set(gca,'XLim',xlim(:)) %xlabel('Time (year)') %ylabel('Avg variance (vel (m/s)') %title('d) 2-8 yr Scale-average Time Series') %hold on %plot(xlim,scaleavg_signif+[0,0],'--') %hold off % end of code

You might also like