#define pi 3.1415926
#include <math.h>
#include <stdio.h>
#define M 41
#define N 301
#define L 341
void conv1(x,m,h,n,y,l)
float x[],h[],y[];
int m,n,l;
{
int k,i;
for(k=0;k<l;k++)
{
y[k]=0.0;
for(i=0;i<m;i++)
if(k-i>=0&&k-i<=n-1)y[k]=y[k]+x[i]*h[k-i];
}
}
main()
{
int i;
float t,q,fm=35.0,dt;
float x[M],h[N],y[L];
FILE *fp1,*fp2;
//Generate a Ricker wavelet
fp1=fopen("Ricker.xls","w");
fp2=fopen("yt.xls","w");
printf("Please input dt(s):\n");
scanf("%f",&dt);
for(i=-M/2;i<=M/2;i++)
{
t=i*dt;
q=pi*fm*t;
x[i+M/2]=(1-2*q*q)*exp(-q*q);
fprintf(fp1,"%4d \t %7.4f \t %10.4f\n",i,t,x[i+M/2]);
}
fclose(fp1);
for(i=0;i<N;i++)
h[i]=0.0;
h[50]=1.0;
h[100]=0.5;
h[200]=-1.0;
conv1(x,M,h,N,y,L);
for(i=(M-1)/2;i<L-(M-1)/2;i++)
{
t=i*dt;
fprintf(fp2,"%4d \t %7.4f \t %10.4f\n",i,t,y[i]);
}
fclose(fp2);
}