Community
cancel
Showing results for
Did you mean:
Beginner
96 Views

Packed vs extended complex format?

Hello, I have a quick question regarding the RCPack2D format and extended complex format. I'd like to normalize the result of an FFT by dividing it by its magnitude. Here's what I'm doing:

1) Compute forward FFT via "ippiFFTFwd_RToPack_32f_C1R". Store in "Result1_complexPacked".

2) Compute magnitude of above result via "ippiMagnitudePack_32f_C1R". Store in "Result2_real".

3) Normalize "Result1_complexPacked" by computing (Result1_complexPacked / Result2_real). To do this:

3a) Unpack "Result1_complexPacked" via "ippiPackToCplxExtend_32f32fc_C1R". Store in "Result1_unpacked".

3b) Loop through and normalize in-place:

for(int a = 0; a < Height; a++)

{

int denominatorRowOffset = (a * Width);

int numeratorRowOffset = (a * 2) * Width;

for(b = 0; b < Width; b++)

{

float denominator = *(Result2_real + denominatorRowOffset + b);

*(Result1_unpacked + numeratorRowOffset + (b * 2)) =*(Result1_unpacked + numeratorRowOffset + (b * 2)) / denominator; // Real component.

*(Result1_unpacked + numeratorRowOffset + (b * 2) + 1) =*(Result1_unpacked + numeratorRowOffset + (b * 2) + 1) / denominator; // Imaginary component.

}

}

3c) Repack "Result1_unpacked" for inverse FFT via "ippiCplxExtendToPack_32fc32f_C1R".

Is my understanding/usage of the Packed->Unpacked->Packed operations as illustrated above correct? It's the output ordering I'm unclear on.

-L