[파이썬][numpy] numpy에서 이산 푸리에 변환

이산 푸리에 변환 (DFT)은 시간 도메인 신호를 주파수 도메인으로 변환하는 기술입니다. 이 변환이 가능하면 신호에 포함된 주파수 성분을 식별하고 추출할 수 있습니다. 이산 푸리에 변환은 많은 분야에서 사용되며, 이미지 처리, 음성 처리, 통신 등 다양한 응용 분야에서 유용하게 활용됩니다.

Python에서는 이산 푸리에 변환을 수행하기 위해 numpy 라이브러리를 사용할 수 있습니다. numpy는 다차원 배열을 다루는데 효과적인 도구를 제공하며, 이산 푸리에 변환을 계산하는 함수인 numpy.fft.fft를 제공합니다.

예시 코드

import numpy as np

# 입력 신호 생성
N = 100  # 신호의 길이
t = np.linspace(0, 2*np.pi, N)  # 시간 범위
x = np.sin(10*t) + np.sin(5*t)  # 입력 신호 (10Hz와 5Hz의 주파수 성분을 가진 신호)

# 이산 푸리에 변환 수행
X = np.fft.fft(x)

# 주파수 영역에서 파워 스펙트럼 계산
power_spectrum = np.abs(X)**2

# 주파수 범위 추출
frequencies = np.fft.fftfreq(N, t[1]-t[0])

# 결과 출력
print(power_spectrum)
print(frequencies)

위 예시 코드에서는 길이가 100인 신호를 생성한 뒤, 이산 푸리에 변환을 수행하여 주파수 영역에서의 파워 스펙트럼을 계산합니다. np.fft.fft 함수는 주어진 신호에 대한 이산 푸리에 변환을 계산합니다.

계산된 파워 스펙트럼은 np.abs(X)**2를 통해 구하고, 주파수 범위는 np.fft.fftfreq 함수를 사용하여 추출합니다.

결론

numpyfft 함수를 사용하면 Python에서 이산 푸리에 변환을 손쉽게 계산할 수 있습니다. 이를 활용하여 시간 도메인의 신호를 주파수 도메인으로 변환하여 다양한 신호 처리 및 분석 작업에 활용할 수 있습니다. 이산 푸리에 변환은 신호 처리 분야에서 매우 중요한 기술이며, numpy를 통해 간단하게 적용할 수 있습니다.