# Difference between revisions of "Ricker wavelet"

The Ricker wavelet is a model seismic wavelet, sometimes called a Mexican hat wavelet.

## Analytic expression

The amplitude A of the Ricker wavelet with peak frequency f at time t is computed like so:

${\displaystyle A=(1-2\pi ^{2}f^{2}t^{2})e^{-\pi ^{2}f^{2}t^{2}}}$
Example Ricker wavelet, as plotted by WolframAlpha.[1]

Sometimes the period (somewhat erroneously referred to occasionally as the wavelength) is given as 1/f, but since it has mixed frequencies, this is not quite correct, and for some wavelets is not even a good approximation. In fact, the Ricker wavelet has its sidelobe minima at

${\displaystyle \pm {\frac {\sqrt {3/2}}{\pi f}}}$

These minima have the value

${\displaystyle A_{\mathrm {min} }=-{\frac {2}{e^{3/2}}}}$

## Apparent vs dominant frequency

We can use the trough-to-trough width of the Ricker to estimate the dominant frequency (i.e. the central frequency of the Ricker) from the apparent frequency (which will be driven by this trough-to-trough width). If 't' is the width in time:

${\displaystyle t_{\mathrm {app} }=2{\frac {\sqrt {3/2}}{\pi f_{\mathrm {dom} }}}={\frac {\sqrt {6}}{\pi f_{\mathrm {dom} }}}}$

and

${\displaystyle f_{\mathrm {app} }={\frac {1}{t_{\mathrm {app} }}}={\frac {\pi f_{\mathrm {dom} }}{\sqrt {6}}}}$

then

${\displaystyle f_{\mathrm {dom} }=f_{\mathrm {app} }{\frac {\sqrt {6}}{\pi }}}$

## Make one in Python

Here's a snippet from an IPython Notebook by Evan:[2][3]

import numpy as np
import matplotlib.pyplot as plt

def ricker(f, length=0.128, dt=0.001):
t = np.arange(-length/2, (length-dt)/2, dt)
y = (1.0 - 2.0*(np.pi**2)*(f**2)*(t**2)) * np.exp(-(np.pi**2)*(f**2)*(t**2))
return t, y

f = 25 # A low wavelength of 25 Hz
t, w = ricker(f)