FFT란?
FFT란? 시간 영역(Time Domain)을 주파수 영역(Frequency Domain)으로 변환 하는 것 시간축으로 표현된 모든 데이터는 주파수가 다른 수많은 싸인(Sine)과 코싸인(Cosine)의 합으로 표현(근사)할 수 있다. 궁극적인 목적: 어떤 주파수(Fn)가 포함되어 있고 그 각각의 주파수의 크기(또는 기여도)An를 구하는 것.
FFT 식 (디지털)
FFT Matlab 코드 ex) Fs = 1000; #Sampling Rate 1000hz t = 0:1/fs:1-1/fs; #시간 구간 설정 x=cos(2*pi*25*t); #푸리에 함수 설정 X = fft(x) #FFT -> 복소수 형태로 값을 돌려준다. N=length(x) # 총길이지정 n=0:N-1; # 0~N-1 f=fs*n/N; # f : fs*(0/N) ~ fs*((N-1)/N)
FFT Matlab 코드 ex) cutoff(ceil(N/2); #양의 주파수, 음의주파수가 있기 때문에 반으로 나눔 X=X(1:cutoff); #파워가 0.5 0.5씩 나누어져있는데 #(Double sided FFT) f=f(1:cutoff); #반만 보기 때문에 1을 얻을 수 있게 된다. plot(f,abs(X)); #정확한 FFT 확인 가능.
FFT Matlab 코드 예제의 결과값
Wav fft [y, sr, b] = wavread(’음성파일'); dt = 1/sr; t = (1:length(y)) * dt; figure(1); plot(t, y); xlabel('t'); ylabel('x(t)'); ft = fft ( y ); sf=1/dt; fn=sf/2; N=length(y); f=sf/N*[0:fix(N/2), -fix((N-1)/2):-1]; figure(2); plot(f, ft); xlabel('w'); ylabel('x(t)');
Figure(1) 원본데이터
Figure(2) 변환데이터