Signal Decomposition Using Farge Wavelet Method

Wavelet analysis is becoming ever more popular in plasma and fusion research, though the methods have been known and applied in other fields (such as image processing and the monitoring of electrical power systems) for some time. In 2006 the following paper detailed a method for separating a time signal into its coherent and noise components,

Marie Farge, Kai Schneider, and Pascal Devynck. Extraction of coherent bursts from turbulent edge plasma in magnetic fusion devices using orthogonal wavelets. Physics of Plasmas, 13(4):042304, 2006.

Basically, if your experimental data is noisy and that noise contribution is Gaussian, then this method can remove that noise component and leave the rest of the signal for further analysis. This is more than simple filtering, however, because the method leaves the time behavior of the coherent signal intact. This routine separates out the Gaussian part of the signal from the rest.

There are a lot of wavelet resources out there and I am not expert enough to provide a tutorial on the subject. I have written a basic IDL function of the Farge Method. If you are interested in obtaining this routine, then you can download it as follows.

Download Information

Usage Example

This document describes the implementation of the routines included in the file for decomposing signals into their coherent and noise components. Two functions are provided:

  1. SIGS → generates test signals for immediate passing to the code
  2. WVINT → performs the wavelet decomposition to separate the input into coherent and noise components

This example uses the command line interface of IDL. The source code is commented to provide more information about the method and a description of any function arguments seen in this example. Compile the functions,

IDL> .r

Generate the test signals with a noise amplitude of 0.2 (no particular reason for choosing this amplitude),

IDL> q = sigs( 0.2 )

The test signals are shown in figures 1 and 2. The amplitude of the noise signal is controlled by the argument to SIGS. The signal that will be passed to the decomposition routine is shown in figure 3.

test signal coherent part

Figure 1: Test signal coherent part.


test signal noise

Figure 2: Test signal noise component.

The input signal is generated by adding the signals shown above.

input signal

Figure 3: Input signal generated by adding noise and coherent test signals.

Perform the decomposition on the test signal,

IDL> w = wvint( q.sig + q.noi )

Figure 4 displays the result. This plot can be generated by use of the following commands (the first line plots the coherent component),

IDL> plot, w.coh
IDL> oplot, w.noi
result from analysis

Figure 4: Result returned from analysis. The red trace is the coherent return and the black trace is the returned noise.

Comparisons between the input signal components and the wavelet result are shown in figures 5 and 6.

coherent signal comparison

Figure 5: Comparison of the input and result coherent components. The red trace is the result from the analysis.


noise comparison

Figure 6: Comparison between input and result noise. The red trace is the extracted, analysis result, signal.


This routine uses the basic wavelet functionality available in IDL. The options for wavelet basis are different from that used in the referenced paper. Furthermore, since I am still experimenting with different wavelet bases I have not finalized the frequency array calculation. The frequency array is important for people who are interested in the statistical analysis of the separate components and it is not necessary to make the rest of the routine work.

As always, this routine is not guaranteed and you use it at your own risk.

Leave a Reply