mr oli
mr oli

Reputation: 1

fft output show unexpected symmetry

I am running a cfft on a signal. The output seems to show symmetry. I know that an fft is symmetrical, but the code

arm_cfft_f32(&arm_cfft_sR_f32_len512, &FFTBuf[0], 0, 1);
arm_cmplx_mag_f32(&FFTBuf[0], &FFTMagBuf[0], FFT_LEN);

accounts for this as the FFTMagBuf is Half the length of the Input array. The output though, still appears to show symmetry

[1]https://i.sstatic.net/YwGVU.jpg

arrows point to my whistle, which shows nicely, surrounded by much noise. the middle one is probably a harmonic(my whistling is crap). but left right symmetry is noticeable.

I am using an stm32f4 disco board, and the samples are from the on-board mems microphone, and each block of samples(in this case 1024, to give an fft of 512 length) is passed through a hann window.

I am using a modified version of tony dicola's spectrogramui.py for visualization.

Upvotes: 0

Views: 195

Answers (1)

user10307643
user10307643

Reputation:

According to the documentation arm_cmplx_mag_f32 computes the magnitude of a complex signal. That's why FFTMagBuf has to be half the size of FFTBuf: both arrays hold real numbers but, the complex samples are made of two reals. It's unrelated to the simmetry of the FFT.

So, the output signal has exactly the same number of samples as the input.

That is, you compute the complex FFT of a real signal, which has some kind of symmetry (you need to account for complex conjugation too), and you take the magnitude, which is symmetric. Of course, the plot is then symmetric too.

Upvotes: 1

Related Questions