Convolution C
Convolution C
// calculates z= x convolve y
// Written by Clay S. Turner
//
// inputs:
// X array of data comprising vector #1
// Y array of data comprising vector #2
// Z pointer to place to save resulting data - needs to be lenx
// leny-1 long
// lenx # of items in vector 1
// leny # of items in vector 2
#include<stdio.h>
int main()
{
double X[6]={ 1.2,2.1,1.3,3.4,6.8,9.2};
double Y[6]={ 1.2,2.1,1.3,3.4,6.8,9.2};
double Z;
LinearConvolution(X,Y,Z,6,6);
return 0;
lenz=lenx+leny-1;
zptr=Z;
for (i=0;i<lenz;i++) {
s=0.0;
n_lo=0>(i-leny+1)?0:i-leny+1;
n_hi=lenx-1<i?lenx-1:i;
xp=X+n_lo;
yp=Y+i-n_lo;
for (n=n_lo;n<=n_hi;n++) {
s+=*xp * *yp;
xp++;
yp--;
}
*zptr=s;
zptr++;
}
}