This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Differences between Matlab ifft and arm_cfft_f32

Hello, I'm writing an application where I get the output of the IFFT operation, using the arm_cfft_f32 function from CMSIS-DSP library like this:

arm_cfft_f32(&arm_cfft_sR_f32_len128, out_ifft, 1, 1); 

where out_ifft is a 128*2 element vector with Hermitian symmetry because I need a real output.

I prepare the same vector and I use it again in Matlab to check the results:

salidamod=ifft(ifftshift(vector,2),NFFT);

The ifftshift function swaps the left and right halves of the vector,and it's necessary due to the requirements of the Matlab ifft function. I get this results:

real from arm_cfftreal from Matlabimag from arm_cfftimag from Matlab
-0.0731-0.073100
0.0779-0.077900
0.06720.067200
0.0124-0.012400
0.00660.006600
-0.19640.196400
0.06610.066100
0.0976-0.097600
-0.0497-0.049700
0.0457-0.045700

Only the even samples are wrong, and only reversed...It's strange and I don't know why it happens. Could someone explain me the reason, please?

Thank you in advance.

Parents
  • My guess would be that something isn't quite right with your Matlab code.  In particular, if you are incorrectly using ifftshift then it will end up modulating your time domain signal by (-1)^n which corresponds precisely to the sign differences that you are seeing.

Reply
  • My guess would be that something isn't quite right with your Matlab code.  In particular, if you are incorrectly using ifftshift then it will end up modulating your time domain signal by (-1)^n which corresponds precisely to the sign differences that you are seeing.

Children
No data