이산 fft에 이상한 문제가 있습니다. 나는 가우스 함수 exp (-x^2/2)의 푸리에 변환이 다시 같은 가우스 함수 exp (-k^2/2)라는 것을 알고있다. 필자는 MatLab과 FFTW에서 간단한 코드로 테스트하려고했지만 이상한 결과를 얻었습니다.MatLab을 사용한 FFTW 및 fft
먼저 결과의 허수 부는 0이어야합니다 (MatLab에서).
둘째, 실수 부분의 절대 값은 가우스 곡선이지만 절대 값이없는 경우 절반의 음수 계수가 있습니다. 보다 정확하게, 모든 두 번째 모드는 그것이되어야하는 것의 음수 인 계수를가집니다.
셋째, (실제 부분의 절대 값을 취한 후) 결과 가우스 곡선의 피크는 하나가 아니라 훨씬 더 높습니다. 높이는 x 축의 점 수에 비례합니다. 그러나 비례 요소는 1이 아니라 거의 1/20입니다.
아무도 내가 잘못하고있는 것을 설명 할 수 있습니까? 여기
내가 사용하는 MATLAB 코드입니다 :function [nooutput,M] = fourier_test
Nx = 512; % number of points in x direction
Lx = 50; % width of the window containing the Gauss curve
x = linspace(-Lx/2,Lx/2,Nx); % creating an equidistant grid on the x-axis
input_1d = exp(-x.^2/2); % Gauss function as an input
input_1d_hat = fft(input_1d); % computing the discrete FFT
input_1d_hat = fftshift(input_1d_hat); % ordering the modes such that the peak is centred
plot(real(input_1d_hat), '-')
hold on
plot(imag(input_1d_hat), 'r-')
* 연속 * FT를 * 개별 * FT와 겹칠 수 있습니다.가우스의 연속적인 FT는 가우시안이지만, DFT (FFT)의 경우 확실하지 않습니다. –
물론 이산성은 일을 부정확하게 만들지 만 이산 FT는 연속 FT의 근사로 생성됩니다. 점의 수와 간격이 충분히 큰 경우 (여기의 경우) 근사값은 양호해야합니다. 편차가있을 수 있지만, 너무 크고 체계적이지 않아야합니다. 또한, Nx와 Lx를 증가 시키면 결과가 변하지 않으므로 수렴이 이루어집니다. –
나는 또한 거기에 주파수 도메인에서 위상 회전으로 변환 DFT의 경우 암시 적 시간 변화가있을 수 있습니다 - 나는 크기가 올바른 것으로 기대하고 위상이 직선 (modulo 2π 당신이 있다면 그것을 풀지 않는 것, 즉 톱니 모양). –