[파이썬] scipy에서 Fourier 변환 (scipy.fftpack)

Fourier 변환은 주어진 시간 도메인 데이터를 주파수 도메인으로 변환하는데 사용되는 중요한 신호 처리 기술입니다. 이를 통해 시간 도메인에서 발생하는 신호의 주파수 성분을 분석하고 이해할 수 있습니다. 파이썬의 scipy 라이브러리에는 Fourier 변환을 수행하는데 사용되는 scipy.fftpack 모듈이 있습니다.

scipy.fftpack 모듈

scipy.fftpack 모듈은 고속 푸리에 변환(Fast Fourier Transform, FFT)을 수행하기 위한 함수들을 제공합니다. 이 모듈은 NumPy의 배열을 입력으로 사용하고 주파수 도메인의 결과를 반환합니다. 다음은 scipy.fftpack에서 주로 사용되는 함수들입니다:

예제 코드

다음은 scipy.fftpack을 사용하여 주어진 신호의 Fourier 변환을 계산하는 예제 코드입니다:

import numpy as np
from scipy.fftpack import fft
import matplotlib.pyplot as plt

# 입력 신호 생성
t = np.linspace(0, 1, 1000)  # 0부터 1까지 1000개의 시간 데이터
signal = np.sin(2*np.pi*50*t) + 0.5*np.sin(2*np.pi*120*t)  # 50Hz와 120Hz의 신호 결합

# Fourier 변환 계산
transformed = fft(signal)

# 주파수 도메인에서의 결과 플로팅
freq = np.linspace(0, 1/(2*(t[1]-t[0])), len(t)//2)
plt.plot(freq, 2.0/len(t) * np.abs(transformed[0:len(t)//2]))
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.show()

위 코드에서는 np.linspace 함수를 사용하여 0부터 1까지 1000개의 시간 데이터를 생성합니다. 이후 해당 시간 데이터에 50Hz와 120Hz의 신호를 결합하여 입력 신호를 생성합니다. FFT 함수인 fft를 사용하여 입력 신호의 Fourier 변환을 계산하고, 결과를 주파수 도메인에서 플로팅합니다.

결론

scipy.fftpack 모듈을 사용하면 파이썬에서 간편하게 Fourier 변환을 수행할 수 있습니다. 이를 활용하여 신호 처리와 주파수 분석 등의 다양한 응용을 할 수 있습니다.