LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

convolution output scaling

I am using convolution (frequency domain) to convole a normalized gaussian function and a discrete, noisy signal.  However, the noisy signal has a magnitude of about 5 x 10^-19, and the output of the convolution has a magnitude of approximately 1 x 10^-17.  Does anyone know what the scaling of the FFT and IFFT algoriths are? Are they 1/sqrt(N), or something else. I have implemented this convolution sucessfully many times in Mathcad, but I suspect the algorithms are different. Thanks.

0 Kudos
Message 1 of 4
(3,532 Views)
How do you normalize the gaussian? Could it be your gaussian is truncated?
 
Is the sum of its array elements equal to one for the gaussian? If not, try to divide it by the sum of array elements before using it for convolution.
0 Kudos
Message 2 of 4
(3,526 Views)
Thank you for the reply. The gaussian needed to be normalized by the sum of the array elements prior to FFT'ing.   I am surprised that this was not included in the convolution, or that the algorithm used is not detailed by NI. I am guessing that the algorithm is optimized for speed, and is proprietary. Again, thank you for the help.

0 Kudos
Message 3 of 4
(3,522 Views)


@bassbuckeye wrote:
Thank you for the reply. The gaussian needed to be normalized by the sum of the array elements prior to FFT'ing.   I am surprised that this was not included in the convolution, or that the algorithm used is not detailed by NI. I am guessing that the algorithm is optimized for speed, and is proprietary. Again, thank you for the help.

Well, the convolution has two inputs and one output, and the inputs are symmetric, you can swap the inputs and should get the same result.

Convolution is a defined algorithm, it would be very bad if it would randomly normalize one of the inputs, just so it is more convenient for a plain smoothing operation. 😉

0 Kudos
Message 4 of 4
(3,519 Views)