C/C++ : Convolution Source Code
C/C++ : Convolution Source Code
In mathematics and, in particular, functional analysis, convolution is a mathematical operation on two functions f and g, producing a third function that is typically viewed as a modified version of one of the original functions (from wikipedia.com).
I get this picture convolution ilustration from wikipedia. We can ilustrated the convolution process with number. Please check the picture below, I try to create a convolution ilustration. So, we can create C/C++ : Convolution Source Code from this convolution ilustration :
This is a simple convolution ilustration with input two vector. From this ilustration, we can create a C/C++ : Convolution Source Code. This is a function to compute convolution 1D with C/C++ :
//convolution algorithm float *conv(float *A, float *B, int lenA, int lenB, int *lenC) { int nconv; int i, j, i1; float tmp; float *C; //allocated convolution array nconv = lenA+lenB-1; C = (float*) calloc(nconv, sizeof(float)); //convolution process for (i=0; i<nconv; i++) { i1 = i; tmp = 0.0; for (j=0; j<lenB; j++) { if(i1>=0 && i1<lenA) tmp = tmp + (A[i1]*B[j]); i1 = i1-1; C[i] = tmp; } } //get length of convolution array (*lenC) = nconv; //return convolution array return(C); }
we can running this code with command :
./convolution length_vect_1 length_vect_2
example :
./convolution 4 6
This is sample output from C/C++ : Convolution Source Code:
toto@toto-laptop:~/Documents$ ./convolution 4 6 Vector 'A' , Size=4 1.000 2.000 3.000 4.000 Vector 'B' , Size=6 5.000 6.000 7.000 8.000 9.000 10.000 Vector 'C' , Size=9 5.000 16.000 34.000 60.000 70.000 80.000 79.000 66.000 40.000
You can download the complete C/C++ : Convolution Source Code with testing program at here.
Source : http://en.wikipedia.org/wiki/Convolution
thanks for this great function in matlab 😀
Hello,
I’m working with the ambiguity function, this is used in signals…. I have to implement the ambiguity function in C language, but is very difficult to me. I have some implementations in Matlab but I need it in C.
I see that you have a C code of convolution, that is more or less that I have to implement, I would like if you can share your C source code, I will be very gratefull with you.
My email eticoa@hotmail.com
pd. Sorry for my english…
Hi, Please check the below from my post. I am attach a complete source code for this convolution problem.
Thank you