## Wavelet Coherence

Wavelet transform coherence (WTC) is a method for analyzing the coherence and phase lag between two time series as a function of both time and frequency (Chang and Glover 2010). Here I played with it using the MatLab toolbox provided by Grinsted et al.

In the following examples, I created two time series, x (blue) and y (red) with different properties (phase shift, frequency and amplitude) and run wtc(x,y,’mcc’,0) command. Small white noise was added to the time series.

1. Phase shift and angle. A rightward arrow indicates 0 lag; a bottom-right arrow indicates a small lead of x; a leftward arrow indicates x and y is anti-correlated.

2. Frequency. At what frequency (or period) are x and y correlated?

3. Amplitude. It seems amplitude doesn’t matter much.

Toolbox can be found:

~~http://www.pol.ac.uk/home/research/waveletcoherence/~~

**Note: this link is dead**. To download the “Cross Wavelet and Wavelet Coherence Toolbox”, please enter

http://www.alivelearn.net/?p=1561

Source code:

t =[1:1000]/10; %% effect of phase x = sin(t) + randn(size(t))/5; y = [sin(t(1:250)) sin(t(251:500)-pi/4) sin(t(501:750)-pi/2) sin(t(751:end)-pi)] + randn(size(t))/5; figure('color','w'); subplot(2,1,1); wtc(x,y,'mcc',0) subplot(2,1,2); plot(x); hold on; plot(y,'r') %% effect of frequency x = [sin(2*t(1:250)) sin(2*t(251:500)) sin(4*t(501:750)) sin(8*t(751:end))] + randn(size(t))/5; y = [sin(2*t(1:250)) sin(2*t(251:500)) sin(4*t(501:750)) sin(8*t(751:end))] + randn(size(t))/5; figure('color','w'); subplot(2,1,1); wtc(x,y,'mcc',0) subplot(2,1,2); plot(x); hold on; plot(y,'r') %% effect of amplitude x = [sin(2*t(1:250)) sin(2*t(251:500)) sin(4*t(501:750)) sin(8*t(751:end))] + randn(size(t))/5; y = [sin(2*t(1:250)) sin(2*t(251:500))/2 sin(4*t(501:750))/3 sin(8*t(751:end))/4] + randn(size(t))/5; figure('color','w'); subplot(2,1,1); wtc(x,y,'mcc',0) subplot(2,1,2); plot(x); hold on; plot(y,'r')

Try Stork, a research tool we developed
Stork is a publication alert app developed by us at Stanford. As a researcher we often forget to follow up important publications - and it's practically impossible to search many keywords or researchers' names everyday. Stork can help us to search everyday and notifies us when there are new publications/grants. How Stork helped me? |

About the author: Xu Cui is a human brain research scientist in Stanford University. He lives in the Bay Area in the United States. He is also the founder of Stork (smart publication alert app), PaperBox and BizGenius. He was born in He'nan province, China. He received education in Beijing University(BS), University of Tennessee (Knoxville) (MS), Baylor College of Medicine (PhD) and Stanford University (PostDoc). Read more ... |

please help me about running wavelet coherence and cross wavelet programs

I have updated the toolbox, put it on github, and it is now hosted at: http://www.glaciology.net/wavelet-coherence

Dear Xu Cui,

Can we have wavelet coherence Matrix in Matlab?

Respected Sir,

I need an help from you.I have a doubt in wavelet coherence using matlab.i have two series of length 80.how should i write the code in matlab so that i will get the wavelet coherence of two time series is a single value?

HOW I UPDATED THE WAVELET TOOL BOX FOR PERFORMING THE CROSSWAVELET AND WAVELET COHERENCE

Your test is simulation experiment.How about truthful data

respected sir

I see that the arrows pointed up indicated the second series lag the first series 1/4 cycle on the site https://www.mathworks.com>examples

The ‘v6′ argument to COLORBAR is

deprecated, and will no longer be supported in a

future release.

@Liuxiaoyun

Thanks for the warning.

how do i solve the problem?

@Liiuxiaoyun

No need to solve for now. If future matlab does not support it, you might need to modify the source code.

Dr. Cui, many thanks for your great information,

How can I limit the period in y axis to 64 or 32?

How to compute cross wavelet or wavelet coherence for time series having same sampling rate but different lengths?

@pankaj jadhav

You will have to cut the longer series so their lengths are equal.

Respect Sir. I have some questions below and look forward to receive your answer:

1. [rsv,period] = wtc(x,y,’mcc’,0); In my experiment, x,y have a length of 90 seconds(sampling rate equals to 12). But the minimum frequency of 1/(period/sampling rate) I calculate is around 0.03Hz, instead of 1/90 Hz. Is the result wrong? Does this mean if i want to reach the minimum of 0.01Hz, I need a longer data(more than 90 seconds)?

2. [rsv,period] = wtc(x,y,’mcc’,0); The frequency sequence i got based on 1/(period/sampling rate) is not distributed uniformly. It’s not convenient to segment frequency range for further analysis. How to solve this problem?

why the number of surrogate data sets in the significance calculation is set to zero in your example?