How to properly use the ifft function ?
이전 댓글 표시
Hello, I'm trying to apply the ifft function to the Fourier transform of a real signal S I know, so as to get S in the end. (basically ifft(ffft(S)) = S).
My fft was made with a number N of points ( fft(S,N) ) : N = 2^nextpow2(Ns), where Ns is the number of points in S ( Ns = length(S) ).
I don't know what operations (symmetry, normalization, scaling ...) I have to do before applying ifft but for the moment I don't get S. And the signal I get has a non-neglegtable imaginary part.
Thank you for your help, Léo.
답변 (4개)
Wayne King
2011년 10월 20일
x = randn(1000,1);
xdft = fft(x);
y = ifft(xdft,'symmetric');
max(abs(x-y))
The 'symmetric' option enforces that the imaginary part should be zero in the inverse DFT.
Daniel Shub
2011년 10월 20일
Working from Wayne's answer:
x = randn(1000,1);
xdft = fft(x, pow2(nextpow2(length(x))));
y = ifft(xdft);
isreal(y)
I don't need to use the symmetric option and I get a real y. I cannot do x-y, because y is not the same length as x.
Can you show your code Leonard?
Walter Roberson
2011년 10월 20일
0 개 추천
It is not uncommon for ifft(fft(S)) to have an imaginary part, due to round-off error.
댓글 수: 1
Daniel Shub
2011년 10월 20일
Really? Is it because the fft of a real signal results in a non-symmetric complex signal, the ifft of a symmetric signal results in a non-real signal, or both? I understand there is round-off error, I am surprised it is asymmetric and that the FFT algorithm doesn't prevent this. Can you provide an "x" that will demonstrate this?
Temur Dzigrashvili
2022년 3월 11일
0 개 추천
Is it possible to approximate a complex-valued function of real variable in Matlab.
Values of function (complex numbers) and arguments (real numbers) are given.
카테고리
도움말 센터 및 File Exchange에서 Transforms에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!