<p>Amartya,</p>

<p>Maybe this will help clarify:</p>

<p>Convolution in the time domain is equivalent to multiplication in the frequency domain. This is how we build simple convolutional seismograms.</p>

<p>s(t)=w(t)*r(t) => S(f)=W(f).R(f)</p>

<p><a href="https://i.sstatic.net/gOhgw.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/gOhgw.png" alt="enter image description here"></a></p>

<p>However, what you are trying to do is pretty much the exact opposite. A sinusoid in the time domain is a spike in the frequency domain. And what you are trying to do is "convolve" a gaussian with this spike, all in the frequency domain. But the same rule applies the other way: convolution in the frequency domain is equivalent to multiplication in the time domain.</p>

<p>S(f)=W(f)*R(f) => s(t)=w(t).r(t)</p>

<p><a href="https://i.sstatic.net/mXu3O.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/mXu3O.png" alt="enter image description here"></a></p>

<p>In order to get a wavelet (in time) whose Fourier transform is a Gaussian centered at a certain frequency, you will need to multiply a sinusoid of that certain frequency by a Gaussian window (in time). This "Gaussian times a sinusoid" is called a Morlet wavelet (or Gabor wavelet in EE).</p>

<pre><code>nt=500; % Number of samples in your wavelet
dt=0.001; % Sample rate in time
t=dt*((1:nt)-ceil(nt/2))'; % Time vector for wavelet symmetric around zero
sinusoid=cos(2*pi*fdom.*t+phase); % Sinusoid of desired frequency and phase
win=exp(-(1*t*fdom).^2); % Gaussian window appropriate for dominant frequency
wav=win.*sinusoid; % Final Morlet wavelet
</code></pre>

<p>Hope this helps,<br>
Antonio </p>

CC BY-SA 3.0
2016-02-16T13:34:41.613Z
2016-02-16T13:34:41.613Z
Antonio
<p>If I understand the question, I don't think you can do what you want to do. The spectrum of a Gaussian time series must contain frequencies <a href="https://en.wikipedia.org/wiki/DC_bias" rel="nofollow noreferrer">down to DC</a>, i.e. very low frequencies (Python code <a href="http://docs.scipy.org/doc/scipy-0.16.1/reference/generated/scipy.signal.gaussian.html" rel="nofollow noreferrer">from scipy.org</a>):</p>

<p><a href="https://i.sstatic.net/5naUK.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/5naUK.png" alt="Spectrum of Gaussian"></a></p>

<p>A wavelet whose <em>spectrum</em> is a Gaussian is called a <a href="http://subsurfwiki.org/wiki/Ricker_wavelet" rel="nofollow noreferrer">Ricker wavelet</a>, or sometimes Mexican Hat wavelet. I often use this wavelet to model <a href="https://en.wikipedia.org/wiki/Reflection_seismology" rel="nofollow noreferrer">seismic reflection</a> data. It has a central frequency, and is bandlimited. As such, the wavelet oscillates around zero amplitude — it does not have a DC component:</p>

<p><a href="https://i.sstatic.net/ugW58.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/ugW58.png" alt="Ricker wavelet"></a></p>

CC BY-SA 3.0
2016-02-07T06:51:26.853Z
Thanks for your reply @kwinkunks. My purpose for was to use it for the estimation of attenuation (https://www.eoas.ubc.ca/research/cdsst/Tad_home/GPY001542.pdf ; eqn. 18,19). I am inclined towards using Gaussian since I have synthetics with a Gaussian source, second the analysis window selection is somewhat easier.

Is there any open source code for Q estimation from seismic?
Amartya
CC BY-SA 3.0
2016-02-07T12:12:19.603Z
Those authors are referring to the Ricker wavelet, which has a Gaussian spectrum. I don't know of any software with that function built in, I'm afraid.
Matt Hall
CC BY-SA 3.0
2016-02-05T11:05:17.597Z
2016-02-05T11:05:17.597Z
Matt Hall
<p>(Sorry for the double post, got an image limit)</p>

<p>Also, as you make that Gaussian window (in time) skinnier and skinnier (by changing that "1" in the window function), you will make the Gaussian in the frequency domain wider and wider, as per the Fourier uncertainty principle.</p>

<p><a href="https://i.sstatic.net/iJDaf.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/iJDaf.png" alt="enter image description here"></a></p>

<p>Finally, I just wanted to point out that a Ricker wavelet does not have a Gaussian amplitude spectrum. It's close but not quite. The Ricker amplitude spectrum is slightly skewed. And they do seem to be using Ricker wavelets in the paper you cited.</p>

<p><a href="https://i.sstatic.net/OtfCp.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/OtfCp.png" alt="enter image description here"></a></p>

<p>Ok now I'm done. Good luck!<br>
Antonio </p>

CC BY-SA 3.0
2016-02-16T13:38:06.393Z
2016-02-16T13:38:06.393Z
Antonio
<p>How can I generate a Gaussian wavelet (time domain) with a given central frequency. </p>

<p>I mean if I take the Fourier Transform then its spectrum should be around that given central frequency instead of zero. For example the peak of spectrum is 20Hz and its side lobes becomes nearly zero around  $20\pm 10$.</p>

<p>I carried out a few coding exercise which I tried are here.
<a href="https://stackoverflow.com/questions/35211841/gaussian-wave-generation-with-a-given-central-frequency">Link</a></p>

CC BY-SA 3.0
2016-02-05T07:56:57.187Z
Wavelets are certainly relevant to Earth Science, but I suspect you might get better answers to this particular question at http://dsp.stackexchange.com/ .
Pont
<seismic>
Gaussian wavelet generation with a given frequency
Amartya
# Gaussian wavelet generation with a given frequency

(Asked by: username_0 on 2016-02-05)

How can I generate a Gaussian wavelet (time domain) with a given central frequency.

I mean if I take the Fourier Transform then its spectrum should be around that given central frequency instead of zero. For example the peak of spectrum is 20Hz and its side lobes becomes nearly zero around $20\pm 10$.

I carried out a few coding exercise which I tried are here.
[Link](https://stackoverflow.com/questions/35211841/gaussian-wave-generation-with-a-given-central-frequency)

**Tags:** seismic

> **Comments:**
> **username_1**: Wavelets are certainly relevant to Earth Science, but I suspect you might get better answers to this particular question at http://dsp.stackexchange.com/ .  

---

## 3 answers

### Answer by username_2 on 2016-02-16. Score: 2 | Accepted answer

username_0,

Maybe this will help clarify:

Convolution in the time domain is equivalent to multiplication in the frequency domain. This is how we build simple convolutional seismograms.

s(t)=w(t)\*r(t) => S(f)=W(f).R(f)

[![enter image description here](https://i.sstatic.net/gOhgw.png)](https://i.sstatic.net/gOhgw.png)

However, what you are trying to do is pretty much the exact opposite. A sinusoid in the time domain is a spike in the frequency domain. And what you are trying to do is "convolve" a gaussian with this spike, all in the frequency domain. But the same rule applies the other way: convolution in the frequency domain is equivalent to multiplication in the time domain.

S(f)=W(f)\*R(f) => s(t)=w(t).r(t)

[![enter image description here](https://i.sstatic.net/mXu3O.png)](https://i.sstatic.net/mXu3O.png)

In order to get a wavelet (in time) whose Fourier transform is a Gaussian centered at a certain frequency, you will need to multiply a sinusoid of that certain frequency by a Gaussian window (in time). This "Gaussian times a sinusoid" is called a Morlet wavelet (or Gabor wavelet in EE).

```
nt=500; % Number of samples in your wavelet
dt=0.001; % Sample rate in time
t=dt*((1:nt)-ceil(nt/2))'; % Time vector for wavelet symmetric around zero
sinusoid=cos(2*pi*fdom.*t+phase); % Sinusoid of desired frequency and phase
win=exp(-(1*t*fdom).^2); % Gaussian window appropriate for dominant frequency
wav=win.*sinusoid; % Final Morlet wavelet

```

Hope this helps,  
username_2


---

### Answer by username_3 on 2016-02-05. Score: 2

If I understand the question, I don't think you can do what you want to do. The spectrum of a Gaussian time series must contain frequencies [down to DC](https://en.wikipedia.org/wiki/DC_bias), i.e. very low frequencies (Python code [from scipy.org](http://docs.scipy.org/doc/scipy-0.16.1/reference/generated/scipy.signal.gaussian.html)):

[![Spectrum of Gaussian](https://i.sstatic.net/5naUK.png)](https://i.sstatic.net/5naUK.png)

A wavelet whose *spectrum* is a Gaussian is called a [Ricker wavelet](http://subsurfwiki.org/wiki/Ricker_wavelet), or sometimes Mexican Hat wavelet. I often use this wavelet to model [seismic reflection](https://en.wikipedia.org/wiki/Reflection_seismology) data. It has a central frequency, and is bandlimited. As such, the wavelet oscillates around zero amplitude — it does not have a DC component:

[![Ricker wavelet](https://i.sstatic.net/ugW58.png)](https://i.sstatic.net/ugW58.png)

> **Comments:**
> **username_0**: Thanks for your reply @kwinkunks. My purpose for was to use it for the estimation of attenuation (https://www.eoas.ubc.ca/research/cdsst/Tad_home/GPY001542.pdf ; eqn. 18,19). I am inclined towards using Gaussian since I have synthetics with a Gaussian source, second the analysis window selection is somewhat easier.  Is there any open source code for Q estimation from seismic?  
> **username_3**: Those authors are referring to the Ricker wavelet, which has a Gaussian spectrum. I don't know of any software with that function built in, I'm afraid.  

---

### Answer by username_2 on 2016-02-16. Score: 1

(Sorry for the double post, got an image limit)

Also, as you make that Gaussian window (in time) skinnier and skinnier (by changing that "1" in the window function), you will make the Gaussian in the frequency domain wider and wider, as per the Fourier uncertainty principle.

[![enter image description here](https://i.sstatic.net/iJDaf.png)](https://i.sstatic.net/iJDaf.png)

Finally, I just wanted to point out that a Ricker wavelet does not have a Gaussian amplitude spectrum. It's close but not quite. The Ricker amplitude spectrum is slightly skewed. And they do seem to be using Ricker wavelets in the paper you cited.

[![enter image description here](https://i.sstatic.net/OtfCp.png)](https://i.sstatic.net/OtfCp.png)

Ok now I'm done. Good luck!  
username_2


---

