2.1.22.2.1.37 fft_norm_amp

Description

Performs amplitude normalization.

Syntax

int fft_norm_amp( vector<complex> & vSignal )

Parameters

vSignal
[modify] the data for input and the result of vSignal after normalize amplitude for output

Return

Returns OE_NOERROR for success or error codes for failure.

Examples

Prior to compilation, load fft_utils.c to the workspace by executing the following LabTalk command:

Run.LoadOC("Originlab\fft_utils.c", 16);

To retain fft_utils.c in the workspace for successive sessions, drag and drop the file from the Temporary folder to the System folder.

EX1


#include <fft_utils.h>
void fft_norm_amp_ex1()
{
vector<complex> vSignal = {36, -4 + 9.6569i, -4 + 4i, -4 + 1.6569i,
-4,    -4 - 1.6569i, -4 - 4i, -4 - 9.6569i};

//the result should be
//{9.0000, -1 + 2.4142i, -1 + 1i, -1 + 0.4142i, -1, -1 + -0.4142,
// -1 - 1i, 1 -2.4142}
int nRet = fft_norm_amp(vSignal);
if( 0 != nRet )
{
printf("fft_norm_amp function returned error: %d\n", nRet);
return;
}
}

Remark

This function perform amplitude normalization.

The effect on the FFT result is to divide the amplitudes of the DC and AC components by N/2, where N is the number of data points. This will reveal the true amplitudes in the original data set.

This occurs because we know that cos(x) = [exp(-ix) + exp(ix)]/2.

Thus, when a time domain data set is transformed into the frequency domain by FFT, each component splits into two frequencies, a positive one and its negative image.

The amplitude of each of these frequencies is N/2 times that of its original component.

To calculate the mean of the data set, divide the DC component by 2.

fft_utils.h