## Abstract

Redundancy: it is a word heavy with connotations of lacking usefulness. I often hear that the rationale for not using the continuous wavelet transform (CWT)—even when it appears most appropriate for the problem at hand—is that it is ‘redundant’. Sometimes the conversation ends there, as if self-explanatory. However, in the context of the CWT, ‘redundant’ is not a pejorative term, it simply refers to a less compact form used to represent the information within the signal. The benefit of this new form—the CWT—is that it allows for intricate structural characteristics of the signal information to be made manifest within the transform space, where it can be more amenable to study: resolution over redundancy. Once the signal information is in CWT form, a range of powerful analysis methods can then be employed for its extraction, interpretation and/or manipulation. This theme issue is intended to provide the reader with an overview of the current state of the art of CWT analysis methods from across a wide range of numerate disciplines, including fluid dynamics, structural mechanics, geophysics, medicine, astronomy and finance.

This article is part of the theme issue ‘Redundancy rules: the continuous wavelet transform comes of age’.

## 1. The wavelet, the signal and the transform

The transform gets its name from the localized waveform function it uses to convert the signal: the wavelet. The wavelet function must satisfy certain mathematical criteria. The transform itself has an inverse—so we can return to the original signal—and the energy in the transform space can be equated to the signal energy. These and more properties of the wavelet and its transform, including how to compute it quickly in practice using fast algorithms, are contained in appendix A. Complex wavelets are often used for CWT analysis as they allow the separation of phase and amplitude components associated with the signal. The most commonly used complex wavelet, the Morlet wavelet, is shown in figure 1*a* and simply comprises a complex sinusoid within a Gaussian envelope. We can use this wavelet to represent signal information in the wavelet domain via the CWT. As an example, figure 1*b* contains a test signal with both a frequency modulation and a longer-term increasing frequency drift. Inspection of the signal in the time domain provides limited information, with perhaps a realization that the dominant frequency is generally increasing over time. The corresponding Fourier transform modulus plot (figure 1*c*) also provides limited detailed information apart from a general picture of the range of frequencies contained within the signal. However, if we view the corresponding wavelet transform modulus (figure 1*d*), we may observe a very obvious white band snaking across the transform plane. This band indicates where most of the energy of the original signal is contained in time and frequency and we can see that the characteristics of the signal are now displayed in highly resolved detail: the general frequency drift is evident, increasing over time and the frequency modulation is obvious from oscillatory nature of the band. In fact, the ridge of the band (shown as a black line superimposed on the band maxima) may be used to extract the instantaneous frequency of the signal component relatively easily by projecting this ridge vertically (figure 1*e*). This new signal is the non-stationary drift plus frequency modulation of the original signal (figure 1*b*). Figure 1*f* contains a three-dimensional view of the transform modulus highlighting the rich morphology of this signal representation. Contrasting the information readily apparent in figure 1*d*–*f* with that amenable to analysis through the time-only or frequency-only representations of figure 1*b*,*c*, illustrates the power of the wavelet method to extract useful temporally resolved frequency information. The frequency modulation contained in the ridge signal of figure 1*e* may be further analysed by performing a second wavelet transform of this new signal. This is shown in figure 1*g* in which the modulation frequency of around 0.3 Hz is manifest as a new band at this frequency in this subsequent transform. This secondary wavelet feature decoupling (SWFD) method is useful in extracting modulation information from non-stationary signals. In addition, it is worth noting that the ridge not only contains instantaneous frequency information, but also the height of the ridge from the transform plane contains information on the strength of the signal component. We may, therefore, also analyse amplitude modulations by projecting the ridge horizontally (not shown here). The case shown in figure 1 is relatively simple and does not contain noise for the sake of clarity in the example, however, the method is particularly useful in partitioning signal from noise as we will see below. Note also that the cover illustration to this theme issue has the transform of the same signal with some added Gaussian noise which can be seen manifesting as components spread all across the transform surface.

A wide range of innovative methods are now available for manipulating the signal information contained within the CWT representation, including modulus maxima methods for identifying singularities, ridge following for modal analysis, reassignment and synchrosqueezing to further resolve signal components in the wavelet domain, running wavelet archetyping (RWA) to seek out repetitive signal components within noisy signals and SWFD to allow non-stationary analysis of non-stationary signal components. Examples of two of these—synchrosqueezing and archetyping—are provided in figure 2. Figure 2*a* shows a simple signal composed of two superimposed sinusoidal components which, in wavelet space, manifests as two distinct bands (figure 2*b*). As a complex wavelet was used here, the transform phase may also be displayed (figure 2*c*). Through the technique of synchrosqueezing, which uses the phase information, we may sharpen the bands as shown in figure 2*d*. Figure 2*e* shows another example of a test signal. This signal comprises a main repeating component at around 0.4 Hz with large-scale frequency modulations. It also has a segment missing, is contaminated with high-frequency noise and contains a large amplitude artefact feature. The wavelet transform of the signal is shown in figure 2*f*, where a rough, broken band may be observed. Through the technique of wavelet archetyping—a form of ensemble averaging in the wavelet domain which does not require fiducial points—this noisy band may be made more distinct in wavelet space (figure 2*g*). The examples of figures 1 and 2 are relatively basic and serve to entice the reader to learn more about the continuous wavelet transform (CWT) through this theme issue of the *Philosophical Transactions of the Royal Society A*. Further mathematical detail of these methods is provided in appendix A, which also includes techniques for the comparison between two signals, including transform ratios, modulus difference, the cross-wavelet transform, wavelet cross-correlation, wavelet coherence and cross-bicoherence and the phase comparison measures: circular mean phase and phase synchronization index. Detailed illustrated examples of the all the techniques contained in appendix A can be found in [1].

The CWT has increased significantly in popularity for resolving signals of great complexities due to its improved time-frequency localization properties compared with its near cousin, the very poorly resolved (in both time and frequency) discrete wavelet transform with its lack of translational invariance and even the commonly used, more traditional short-time Fourier transform (STFT), with its fixed temporal window. These methods are not considered in this volume and, again, the reader is referred to [1] for more details.

## 2. Who is using the continuous wavelet transform?

The CWT is now employed across practically all numerate disciplines: from astronomy to zoology. I have come across papers in areas as diverse as quantum mechanics and meat processing, driver reaction monitoring and river sedimentation, geophysical well logging and star X-ray emissions, cochlear acoustic response, the scaling of multifractals, etc. The list is long and could fill many pages of this issue. I have conducted research using the CWT to probe vortex shedding in open channel flows, study fractal fracture in cementitious materials, elucidate non-destructive sonic echo waveforms in structural elements and, over recent years, used it to examine a myriad of biosignals including the ECG, EEG, EMG, PPG, various blood pressure signals, video biosignals and more. In all this work, the CWT has provided tremendous insight into the underlying characteristics of the signals involved.

This theme issue is aimed both at the novice to the CWT and the seasoned practitioner alike. It is hoped that those not familiar with the method, may go on to develop innovative ways to use the CWT to solve their own analysis problems. For those already familiar with the subject, the desire is to provide a glimpse of the cross-disciplinary opportunities and spark ideas for other avenues of analysis. Reading the literature from across many branches of science, engineering, medicine and finance, I see that often a particular CWT method is favoured by researchers within a specific sub-discipline; perhaps due to a particularly strong advocate initiating the work in that area. However, sometimes it would appear that considering other CWT techniques might prove more beneficial. It is hoped that the theme issue should provide a wide range of thought provoking examples in this regard.

The issue begins with a comprehensive review of wavelet methods used in cavitating fluid flows by Brandner *et al*. [2], including wavelet transform and cross-wavelet transform plots to provide new insights into the complex phenomena associated with this kind of flow. This is followed by an analysis of vortex shedding-induced vibrations of elements placed in fluid flows by Zhao *et al*. [3], where the CWT is used to reveal temporally resolved intermittency and mode competition in the acquired signals. The next paper describes the analysis of the dynamics of time varying adaptive structures using wavelet-based frequency response functions and wavelet-based coherence by Dziedziech *et al*. [4]. The following paper by Jurado & Lopez [5] describes the development of a recurrent Morlet wavelet neural network for control of a quadrotor unmanned aerial vehicle, where performance is verified by both simulation and experimental results. Three papers concerning medical applications of the CWT are then presented. These are breath sound analysis and pain characterization using higher order spectral techniques, including the instantaneous wavelet bispectrum, biamplitude, biphase and bicoherence by Hadjileontiadis [6]; the analysis of ECG and EMG biosignals using wavelet ridge analysis and wavelet-based dispersion measures by Wachowiak *et al*. [7]; and a study of intracranial pressure during lumbar infusion tests by Garcia *et al*. [8] using wavelet entropy, Jensen divergence and spectral flux. CWT applications are not restricted to time series: this is wonderfully illustrated in the analysis of the intricate spatial properties of the radial ring structure of Saturn in this issue by Tiscareno & Hedman [9]. This astronomical vein is followed by Lopez-Santiago's paper concerning oscillatory patterns in stellar flare emissions using a Morlet wavelet-based analysis of light curves [10]. Analysis of three geophysical signals—earthquakes, fanquakes and volcanic tremors—using CWT synchrosqueezing is detailed in the next contribution by Tary *et al*. [11], where the advantages and disadvantages of the wavelet method relative to others are described. Wavelet-based multifractal analysis of the spatial structure of natural geological fold systems is then covered in the contribution by Ord *et al*. [12], including a lucid description of the wavelet transform modulus maxima method employed for this kind of fractal analysis. The theme issue ends in an area that has perhaps seen the most rapid growth in the use of wavelet analysis over recent years: finance. There is now a vast range of papers covering stock market indices, commodity pricing, option values and so on. The paper by Aguiar-Conraria *et al*. [13] is an excellent description of the financial interaction between carbon prices and final energy prices in California's carbon market using univariate, bivariate and multivariate wavelet coherency tools.

Finally, I would encourage the reader, from any discipline, engaged in the analysis of signals to try running them through a CWT. By doing so, perhaps a useful new ‘view’ of the signal content may be gained. I have often found that the CWT often provides a particularly valuable technique for initiating and driving the development of algorithmic solutions by providing rapid visualization of the underlying components of the signal. Regardless of whether it forms part of the final algorithm, the CWT can aid comprehension of signal characteristics, provide insight into the feasibility of the underlying task, and facilitate the development of signal processing strategies for attacking the problem to be solved. I am a strong advocate for the use of the CWT in this way—as a ‘visual preprocessing tool’—and, to this end, I have added some computer code for the fast generation of the Morlet wavelet transform at the end of appendix A.

## Data accessibility

This article has no additional data.

## Competing interests

I declare I have no competing interests.

## Funding

I received no funding for this study.

## Acknowledgements

I gratefully acknowledge the help of Bailey Fallon, Commissioning Editor for *Philosophical Transactions A* at the Royal Society for his patient assistance during the editorial process. I also thank Wayne King, lead software developer of the Matlab Wavelet Toolbox™ at Mathworks® for checking over, and suggesting edits to, the Morlet CWT code I have put in appendix A. Finally, I express my gratitude to my colleague Andre Antunes for proofreading this article.

## Appendix A. Wavelet methods

This appendix contains a short primer on CWT theory. A fully illustrated, more comprehensive version is available in [1].

**(a) The wavelet and transform**

To perform a CWT, we need a *wavelet* which, as the name suggests, is a localized waveform (an example of which is shown in figure 1*a* of the main text). The wavelet function *ψ*(*t*) is then used to perform the CWT of a signal *x*(*t*) as follows:
A 1
where the conjugate of the dilated and translated wavelet *ψ*((*t* − *b*)/*a*) is employed and *a* and *b* are the scale (or dilation) and translation parameters, respectively.

In order to be classified as a wavelet, a function *ψ*(*t*) must satisfy certain mathematical criteria. These are

(1) A wavelet must have finite energy:
A 2
where the vertical brackets ‘| |’ represent the *modulus operator* which gives the magnitude of *ψ*(*t*).

(2) If is the *Fourier transform* of *ψ*(*t*), then the following condition must hold:
A 3
This implies that the wavelet has no zero-frequency component, . Equation (A 3) is known as the *admissibility condition* and *C*_{g} is called the *admissibility constant*. The value of *C*_{g} depends on the chosen wavelet.

(3) An additional criterion that must hold for complex wavelets is that the Fourier Transform must both be real and vanish for negative frequencies. We shall consider a complex wavelet below in the form of the Morlet wavelet.

The inverse wavelet transform is defined as
A 4
This allows the original signal to be recovered from its wavelet transform by integrating over all scales and locations, *a* and *b*. Note that for the inverse transform, the original wavelet function is used, rather than its conjugate which is employed in the forward transformation of equation (A 1).

The total energy contained in a signal, *x*(*t*), is defined as its integrated squared magnitude
A 5
For this equation to be useful the signal must contain finite energy. The relative contribution of the signal energy contained at a specific *a* scale and *b* location is given by the two-dimensional wavelet energy density function:
A 6
A plot of *E*(*a*,*b*) is known as a *scalogram* (analogous to the *spectrogram*—the energy density surface of the STFT). In practice, all functions which differ from |*T*(*a*, *b*)|^{2} by only a constant multiplicative factor are also called scalograms, e.g.|*T*(*a*, *b*)|^{2}/*C*_{g}. The scalogram can be integrated across *a* and *b* to recover the total energy in the signal using the admissibility constant, *C*_{g}, as follows:
A 7
We can employ the convolution theorem to express the wavelet transform in terms of products of the Fourier transforms of the signal, , and wavelet, , as follows:
A 8
where note that the conjugate of the wavelet function is used. Equation (A 8) can be written in expanded form as
A 9
which we can see has the form of an inverse Fourier transform in the translation parameter, *b*, for a fixed scale value, *a*, (full derivation in [1]). This is a particularly useful result as the fast Fourier transform (FFT) algorithm may be employed to facilitate rapid computation of the CWT. In addition, the Fourier transform of the wavelet function, , is often known in analytic form and hence need not be computed using an FFT, in which case the original signal, , is required. There is example computer code at the end of this appendix for the fast generation of the CWT using the above method.

**(b) The Morlet wavelet: an example of a complex continuous wavelet**

Complex or *analytic wavelets* have Fourier transforms which are zero for negative frequencies (requirement (3) above). By using such complex wavelets, we can separate the phase and amplitude components of the signal. The most commonly used complex wavelet, the *Morlet wavelet*, is defined as
A 10
where *f*_{0} is the central frequency of the mother wavelet. The second term in the brackets is known as the correction term, as it corrects for the non-zero mean of the complex sinusoid multiplied by the Gaussian term (corresponding to the first term in the bracket). In practice, it becomes negligible for values of and can be ignored, in which case, the Morlet wavelet can be written in a simpler form as
A 11
This wavelet is simply a complex sinusoid, , within a Gaussian envelope, . We can see this by looking at equation (A 11) in conjunction with figure 1*a* of the main text. The *π*^{1/4} term is a normalization factor which ensures that the wavelet has unit energy. Note that the function given by equation (A 11) is not really a wavelet as it has a non-zero mean, i.e. the zero-frequency term of its corresponding energy spectrum is non-zero and hence it is inadmissible. However, it can be used, in practice, with minimal error when . The author advocates the complex Morlet wavelet for continuous wavelet analysis over other options, especially for those new to CWT analysis. Its simple structure leads to a decluttering of information in the wavelet domain (complex morphology wavelets lead to additional components in wavelet space) and it leads to a simple relationship between the transform ridge and instantaneous frequency.

The Fourier transform of the Morlet wavelet is given by
A 12
which has the form of a Gaussian function displaced along the frequency axis by *f*_{0}. Note that the central frequency of the Gaussian spectrum is generally chosen to be the characteristic frequency of the analytic Morlet wavelet. The characteristic frequency is set for the mother wavelet and changes according to the wavelet scale (*a*) as follows:
The energy spectrum (the squared magnitude of the Fourier transform) is given by
A 13
The integral of this gives the energy of the Morlet wavelet which is equal to unity according to our definition given by equation (A 11).

**(c) Ridge following and secondary wavelet feature decoupling**

We saw the ridge of the wavelet transform in figure 1*d,e* of the main text. This ridge comprises the maxima across the top of the band. If we use the rescaled transform modulus , then the ridge amplitude remains constant regardless of the frequency of a sinusoidal signal as long as signal amplitude remains the same. We can show that for a Morlet wavelet the rescaled transform ridge height, *A*_{TR}, is related to the amplitude of the sinusoid *A*_{S} by
A 14
Interrogation of the wavelet transform ridges corresponding to dominant signal components may be a relatively simple and effective way of extracting signal information in terms of frequency or amplitude modulation. Projecting a ridge horizontally we derive amplitude modulation information for the signal and projecting vertically (as was carried out in figure 1*e* of the main text) we may see the frequency modulation of the signal. We may further examine the nature of transform ridge modulations by performing a second wavelet transform on the ridge itself in a method called SWFD method (as was done in figure 1*g* in the main text).

**(d) Running wavelet archetyping**

One of the main problems for traditional methods in performing ensemble averaging in the time domain is in the identification of the characteristic, or fiducial, points for each beat. Their location is required in order to align the averaging of the same points along each beat. Many schemes for deriving these fiducial points are available. However, an error in the temporal position of one beat relative to the others will lead to morphological errors occurring in the archetype. This is particularly so for highly non-stationary signals such as, for example, a heartbeat signal where the heart rate may vary naturally and hence the beat lengths change as well as the beat morphology. Performing the archetyping in wavelet space makes the problem simpler as the natural periodicity of the wavelet may be used at each scale to guide the cyclical averaging process. Thus, we may generate an RWA using a simple infinite impulse response weighted averaging scheme as follows:
A 15
Each time a wavelet transform value, *T*(*a*, *b*), is computed, it is weighted by *w* and used with the previous archetype transform value *T*_{RWA}(*a,b-P*(*a*)) separated from the current value by a period *P*(*a*) to form a new value of the archetype transform *T*_{RWA}(*a*, *b*). Hence, at each time step in the process, an archetype wavelet transform value is computed for each wavelet scale. The question is: what period to use for *P*(*a*)? The wavelet already separates out the signal information into natural scales, hence we may use the characteristic periodicity of the wavelet at the scale considered. In this way, a running weighted average may be computed at each scale in the scalogram. This method was illustrated schematically in figure 2*e–g* of the main text. Note that equation (A 15) may also be employed using only the modulus of the transform if phase information is not required. This modulus version was used in the figures.

**(e) Reassignment and synchrosqueezing**

We have already seen in many previous examples of sinusoidal signals that the wavelet transform produces a band with components smeared out across scales. This is unlike the Fourier transform, which for a sinusoid produces a localized component present only at the frequency of the signal. Reassignment and synchrosqueezing are two popular techniques for ‘sharpening’ the wavelet representation of a signal by localizing the components. Reassignment uses two operators. The first is the group delay time defined as
A 16
where *ϕ*(*a*, *b*) is the transform phase in radians and the 2*π* term in the denominator converts from radians/s to hertz. The second component is the instantaneous frequency, defined as
A 17
This is the derivative of phase with respect to time and so gives the frequency of phase cycling corresponding to the transform component at that point in the transform domain. Once we compute *b*_{g} and *f _{i}* for a given location in the transform plane we move the transform component to the new location given by these ‘coordinates'. An example of the synchrosqueezing method, which reassigns according to phase only, was given in figure 2

*a*–

*d*of the main text.

**(f) Comparing two signals using wavelet transforms**

Often, we want to compare two signals to determine whether there is some kind of relationship between them. There are many instances of this in the literature including the analysis of cerebral dynamics, cardio-respiratory coupling, geophysical flow processes, wind–wave interactions, fluid–structure interactions, economic index time series, astronomical signals, etc.—many of which are cited in later chapters. This section describes a number of methods for comparing signals in wavelet space, but first we consider some simple definitions.

As we have seen, the wavelet transform produces complex numbers for a real signal when a complex mother wavelet function is used, such as the Morlet wavelet. Thus it may be written as
A 18
In terms of its real and imaginary components, Re(*T*(*a*, *b*)) and Im(*T*(*a*, *b*)), the modulus of the transform may be written as
A 19
and the phase of the transform by
A 20

**(g) Transform differences and ratios**

Consider the transforms of two signals *g*(*t*) and *h*(*t*): *T*_{g}(*a*, *b*) and *T*_{h}(*a*, *b*). There are simple ratio and difference metrics we can construct to examine the relationship between the transform components on the transform plane (*a*, *b*). The difference between the moduli of the two transforms is given by
A 21
This gives the difference in the strength of the local signal component regardless of phase. The modulus ratio is given by
A 22
and measures the local ratio of strengths of components in the two transforms. This might be useful for local regions in the time-scale plane, but can blow up if near zero values occur in the transform of signal, *g*(*t*)—so use with care. (Such near zero values may be due to a lack of signal components at a particular location (*a*, *b*) or could be caused by localized noise in the signal driving some transform value down to near zero.)

In addition to modulus differences, we may also compare the relative phases of the two transforms through their local phase differences, given by A 23

**(i) The cross-wavelet transform**

The cross-wavelet transform, CrWT, is useful for highlighting regions of coincidental energy between signals in the transform domain as well as determining relative phase. It is defined as
A 24
The squared absolute value is given by
A 25
The modulus, or cross scalogram, |CrWT_{g,h}(*a*, *b*)| is often plotted in the literature for visualization purposes and is analogous to the wavelet energy density function, or scalogram (*E*(*a*, *b*)), for a single signal.

We may write the cross-wavelet transform out in complex exponential form as
A 26
from which we can see that the phase angle of CrWT_{f,g}(*a*, *b*) is given by the expression
A 27
Note that this is the phase difference between the transforms of the individual signals as given above in equation (A 23), i.e.
A 28
From this, we see that the local phase angle of the cross-wavelet transform is equal to the local difference in phase of the individual signal transforms. Thus by computing the cross-wavelet transform, we can extract a map of the phase differences between the signal components in wavelet space.

**(ii) Wavelet cross-correlation**

We may integrate the cross-wavelet transform over time to get a scale-dependent wavelet cross-correlation measure as follows:
A 29
This includes a normalization using the individual transform values. This form of WCC is often seen in the literature expressed as a plot of WCC against scale, *a*, or corresponding characteristic frequency, *f*. The measure lies in the range between 0 and 1.

We may extend the WCC given above to consider the effect of shifting the signals relative to each other by a time delay (*τ*) as follows:
A 30
This produces a range of correlation values with respect to scale and time delay. (Note that either ‘+*τ*’ or ‘–*τ*’ may be used in the equation depending on the direction of the shift in the transforms relative to each other.)

**(iii) Phase comparison measures**

The measure of the global mean phase difference between two signals with respect to transform scale may be given by the *circular mean phase*
A 31
A corresponding *phase synchronization index* may be defined as
A 32
here 〈〉 indicates a temporal averaging over *b* only. The index lies in the range between 0 and 1. A uniformly distributed distribution of phase differences indicative of no coupling or random coupling, leads to a value of zero. A value of 1 indicates that the phase angle is invariant with time (i.e. that the phase difference is constant and equal to the CMP) and corresponds to a perfect level of coupling between the two transforms at that scale. On the other hand, decorrelated random signals exhibit an erratic CMP across scales and low values of PSI.

**(iv) Wavelet coherence**

In order to probe the relationship between signal components more locally in the transform plane, we may define a squared wavelet coherence estimator as follows:
A 33
where, here, 〈〉 represents a localized smoothing operation in both time and wavelet scale performed on the constituent transform components. Typically, a smoothing function in time equal to the scale-dependent size of the Gaussian envelope of the Morlet wavelet is employed in practice, i.e. , together with a smoothing in scale using a boxcar filter of 0.6*a* in extent.

**(v) Bicoherence and cross-bicoherence**

The wavelet transform-based bispectrum, and related bicoherence, measure the quadratic phase coupling of signal components due to nonlinear interactions. Considering first the interactions of components within a single signal, the wavelet bispectrum is defined as
A 34
where the summation of the transform components takes place over a time period *τ* as and at three wavelet scales *a*_{1,} *a*_{2} and *a*_{3} which are related as follows:
A 35
or in terms of wavelet frequencies: *f*_{1} + *f*_{2} = *f*_{3}.

The normalized squared wavelet bicoherence is defined as A 36

The magnitude of WBC varies between 0 and 1 and indicates the degree of quadratic phase coupling between wavelet components at scales *a*_{1,} *a*_{2} and *a*_{3}. As with the WBS, the wavelet bicoherence may be mapped onto the (*a*_{1}, *a*_{2})-plane or the (*f*_{1}, *f*_{2})-plane, where *f*_{1} and *f*_{2} are the characteristic frequencies relating to the wavelet transform of the signal at scales *a*_{1} and *a*_{2}.

Probing nonlinear interactions between two different signals *g* and *h* can also be performed using the wavelet cross-bispectrum
A 37
and normalized squared wavelet cross-bicoherence:
A 38
which measures the amount of phase coupling between components at scales *a*_{1} and *a*_{2} in signal *g* and scale *a*_{3} in signal *h*.

**(h) Computer code for the Morlet continuous wavelet transform**

The following short Matlab® code performs the CWT of a signal using the Morlet wavelet. It is based on the computationally efficient FFT method of computing the CWT described in detail in [1].

The following Matlab® code will generate a Morlet-based CWT of an input signal:

As an example the above code may be called to perform the CWT of a simple sinusoid and produce a plot of the signal, wavelet modulus (two- and three-dimensional), phase, real part and a comparative Fourier transform using the following code:

## Footnotes

One contribution of 13 to a theme issue ‘Redundancy rules: the continuous wavelet transform comes of age’.

- Accepted May 29, 2018.

- © 2018 The Author(s)

Published by the Royal Society. All rights reserved.