[python] SciPy를 사용하여 시간-주파수 변환하기

시간-주파수 변환이란 시간 도메인에서 주파수 도메인으로 신호를 변환하는 과정을 말합니다. 이는 신호 처리 분야에서 매우 중요한 작업 중 하나입니다. Python에서는 SciPy라는 라이브러리를 사용하여 시간-주파수 변환을 손쉽게 할 수 있습니다.

SciPy란?

SciPy는 Python을 기반으로 한 오픈 소스 과학 및 공학 컴퓨팅 라이브러리입니다. SciPy는 많은 과학 및 엔지니어링 응용프로그램에 필요한 다양한 기능을 제공합니다. 이러한 기능 중 하나는 FFT(Fast Fourier Transform)와 같은 시간-주파수 변환입니다.

SciPy를 사용한 시간-주파수 변환 예제

SciPy의 fft 함수를 사용하여 시간-주파수 변환을 수행할 수 있습니다. 아래는 간단한 예제 코드입니다.

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

# 입력 신호 생성
t = np.linspace(0, 1, 1000)
x = np.sin(2 * np.pi * 50 * t) + np.sin(2 * np.pi * 120 * t)

# FFT 수행
X = fft(x)

# 주파수 축 생성
freq = np.linspace(0.0, 1.0/(2.0*(t[1]-t[0])), len(t)//2)

# 시간-주파수 그래프 그리기
plt.plot(freq, 2.0/len(t) * np.abs(X[0:len(t)//2]))
plt.xlabel('주파수 (Hz)')
plt.ylabel('크기')
plt.show()

위 코드는 50Hz와 120Hz 주파수를 가지는 신호를 생성하고, 이를 FFT를 사용하여 주파수 영역으로 변환한 후 그래프를 그리는 예제입니다.

결론

이렇게 Python의 SciPy 라이브러리를 사용하여 시간-주파수 변환을 수행할 수 있습니다. SciPy는 다양한 신호 처리 작업에 유용한 기능을 제공하므로 신호 처리에 관심이 있는 사용자들에게 매우 유용한 도구입니다. 추가적인 정보는 SciPy 공식 문서를 참조하시기 바랍니다.

참고 자료: