fft
- 출력의 역 FFT를 수동으로 계산하려고합니다. 나는 먼저 fft
을 사용하여 데이터 세트의 FFT를 계산하는 다음 스크립트를 사용하고 있습니다. 그런 다음 역 FFT를 수동으로 찾으려고 시도하지만 결과는 ifft
과 유사하지 않습니다.수동으로 역 fft를 계산하십시오.
오류가 있습니까? 나는 단지
data = [
-0.0005
-0.0004
-0.0003
-0.0002
-0.0001
-0.0000
0.0001
0.0001
0.0001
0.0002
0.0002
0.0002
0.0002
0.0002
0.0002
0.0002
0.0002
0.0002
0.0003
0.0004
0.0005
0.0006
0.0007
0.0009
0.0010
0.0011
0.0011
0.0012
0.0011
0.0011
0.0011
0.0010
0.0011];
delta = 0.0125;
fs = 1/delta;
x = (0:1:length(data)-1)/fs;
X=fft(data);
%find fft
N=length(data);
ws = 2*pi/N;
wnorm = -pi:ws:pi;
wnorm = wnorm(1:length(x));
w = wnorm*fs;
figure(2)
plot(w/(2*pi),abs(fftshift(X)))
%find inverse fft manually
for m=1:length(X)
for k=1:length(data)
X_real(m) = X(k)*exp(i*k*ws*(m-1));
end
end
figure(3)
plot(1:length(data), abs(X_real), 1:length(data), ifft(X))
우선,'m'마다 X_real (k)의'sum'을 놓치고 있습니다. 두 번째로,'exp '부분이 실제로 맞는지 확실하지 않습니다. – GameOfThrows
Per @GameOfThrows는'X_real (m) = X_real (m) = X (k) * exp (i * k * ws * (m-1)); ('X_real'을 미리 배열 된 0의 배열로 초기화해야 할 수도 있습니다). –