Comparing MATLAB ifft result to C FFTW result
조회 수: 9 (최근 30일)
이전 댓글 표시
I am converting a MATLAB script into C code, and I am having a trouble understanding why my C results dont match more accurately my MATLAB results.
Specifically, I have an iterative process that computes the IFFT of a 2D array for each step. The result of the IFFT is used to compute the values of the 2D array for the next step. My problem is that the C results are on the order of E-07 different from my MATLAB results. As you can imagine, this deviation only gets worse over iterations.
I dont understand the difference I am seeing. My C code is using doubles, and I believe they are in the same internal format as MATLAB doubles. I've also done stand alone tests on IFFT (using junk data) and compared the results to C using FFTW -- in these cases, the difference is only E-17.
My only suspect at the moment is the MATLAB IFFT call is like:
z2 = iff(z1, P, 1);
Where z1 is a 57x3648 matrix, and P is 256.
I know that MATLAB uses FFTW, but I am wondering if it formats the input data or internal call to FFTW differently than I do in C.
In C, I take the first 57 elements and put them into a tempory vector of size 256 whose elements 58 and higher are all zero. I then execute a plan that calls for a 256 point transform on that temporary vector. I then divide each element of the resulting vector by 256 (as required by FFTW documentation).
As mentioned, the C result differs from the MATLAB result by E-07 -- and I am at a loss to explain why.
댓글 수: 0
답변 (1개)
Brani Dzepina
2018년 5월 10일
Is it perhaps the scaling factor. You can read about it on the FFTW docs page http://www.fftw.org/fftw2_doc/fftw_2.html#SEC5
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Transforms에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!