May 25, 2011
C/C++ Ricker Wavelets Code
Ricker Wavelets are zero-phase wavelets with a central peak and two smaller side lobes. A Ricker Wavelets can be uniquely specified with only a single parameter “f”. It’s peak frequency as seen on the wavelet spectrum. Ricker Wavelets Equation is :
After searching in internet, I get Matlab code for this Ricker Wavelets and convert that Ricker Wavelets to C code. This is my C/C++ Ricker Wavelets Code (save code as rickerwavelets.c) :
/*
* rickerwavelet.c
*
* Created on: May 25, 2011
* Author: toto
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float *rickerwavelet(float fpeak, float dt, int *nwricker);
int main(int argc, char **argv)
{
int i;
float dt;
float fpeak;
float *wricker=NULL;
int nwricker;
fpeak = atof(argv[1]);
dt = atof(argv[2]);
wricker = rickerwavelet(fpeak, dt, &nwricker);
/* show value of ricker wavelets */
for (i=0; i<nwricker; i++)
printf("%i. %3.5f \n", i, wricker[i]);
free(wricker);
return(1);
}
/* ricker wavelet function, return an array ricker wavelets */
float *rickerwavelet(float fpeak, float dt, int *nwricker)
{
int i, k;
int nw;
int nc;
float pi;
float nw1, alpha, beta;
float *wricker=NULL;
pi = 3.141592653589793;
nw1 = 2.2/fpeak/dt;
nw = 2*floor(nw1/2)+1;
nc = floor(nw/2);
wricker = (float*) calloc (nw, sizeof(float));
for (i=0; i<nw; i++)
{
k = i+1;
alpha = (nc-k+1)*fpeak*dt*pi;
beta = pow(alpha, 2.0);
wricker[i] = (1 - (beta*2)) * exp(-beta);
}
(*nwricker) = nw;
return(wricker);
}
Compile this C/C++ Ricker Wavelets code with command :
gcc rickerwavelets.c -lm -o rickerwavelets
Running this program with command :
rickerwavelets fpeak_value dt_value –> example : rickerwavelets 1.0 0.05
This is sample output data from Ricker Wavelet Code and plot data in Matlab:
2 Comments

Hi,very nice job!!!!
But I really want to know the phase spectrum of ricker wavelets.
Truly appreciate your well-written posts. I have certainly picked up valuable insights from your page. Here is mine UQ4 about Cosmetics. Feel free to visit soon.