[파이썬][Numpy] FFT (Fast Fourier Transform) 예제

FFT(고속 푸리에 변환, Fast Fourier Transform)는 시간 도메인의 신호를 주파수 도메인으로 변환하는 데 사용되는 중요한 신호 처리 기술입니다. Numpy를 사용하여 FFT를 수행하는 간단한 예제를 제공하겠습니다.

먼저, Numpy를 설치하고 시작합니다. 필요한 패키지를 가져오겠습니다:

import numpy as np
import matplotlib.pyplot as plt

이제 FFT 예제를 다음과 같이 작성할 수 있습니다:

# 시간과 주파수 도메인에서의 샘플 데이터 생성
sampling_freq = 1000  # 샘플링 주파수 (Hz)
signal_freq = 5  # 원본 신호의 주파수 (Hz)
duration = 1  # 샘플링 기간 (1초)
t = np.linspace(0, duration, int(sampling_freq * duration), endpoint=False)  # 시간 배열
signal = np.sin(2 * np.pi * signal_freq * t)  # 주기 함수 생성

# FFT 수행
fft_result = np.fft.fft(signal)
frequencies = np.fft.fftfreq(len(fft_result), 1 / sampling_freq)  # 주파수 배열

# 결과 시각화
plt.figure(figsize=(12, 6))
plt.subplot(2, 1, 1)
plt.plot(t, signal)
plt.xlabel("Time (s)")
plt.ylabel("Amplitude")
plt.title("Time Domain Signal")

plt.subplot(2, 1, 2)
plt.plot(frequencies, np.abs(fft_result))
plt.xlabel("Frequency (Hz)")
plt.ylabel("Amplitude")
plt.title("Frequency Domain (FFT)")
plt.xlim(0, 10)  # 주파수 범위 제한
plt.tight_layout()

plt.show()

위의 코드는 다음을 수행합니다:

  1. 시간 도메인에서 샘플 데이터를 생성합니다. 이 예제에서는 5Hz 주파수의 사인파를 생성합니다.
  2. FFT를 사용하여 주파수 도메인으로 신호를 변환합니다.
  3. FFT 결과를 시각화하여 원본 신호와 주파수 도메인을 비교합니다.

실행 결과로 원본 신호와 해당 주파수 구성 요소를 볼 수 있습니다. FFT를 사용하면 주파수 도메인에서의 신호를 분석할 수 있으며, 신호 처리, 스펙트럼 분석, 필터링 등 다양한 응용 분야에서 유용하게 사용됩니다.