본문 바로가기
Python/numpy

파이썬 numpy.fft.fftfreq 함수 활용하기

by PySun 2024. 11. 1.
반응형

파이썬 Numpy의 `numpy.fft.fftfreq` 함수 소개

`numpy.fft.fftfreq` 함수는 이산 푸리에 변환(FFT)을 수행할 때 주파수 축을 계산하는 데 사용됩니다. 푸리에 변환을 통해 얻어진 주파수 성분의 인덱스를 실제 주파수 값으로 변환할 수 있으며, 신호 처리 및 분석에 필수적인 역할을 합니다.

`numpy.fft.fftfreq` 함수란?

`numpy.fft.fftfreq` 함수는 푸리에 변환 결과에서 각 주파수 성분이 해당하는 실제 주파수 값을 반환합니다. 입력 배열의 길이와 샘플 간격을 인자로 받아 주파수 값을 계산하며, 주로 FFT와 함께 사용됩니다.

함수 문법

numpy.fft.fftfreq(n, d=1.0)
  • n: 샘플 개수 (배열의 길이)
  • d: 샘플 간격 (기본값은 1.0)

예제 1: 1D 배열의 주파수 성분 계산

다음 예제는 1D 신호 배열에 대해 FFT를 수행한 후, `fftfreq` 함수를 이용해 각 주파수 성분이 나타내는 실제 주파수 값을 계산합니다.

import numpy as np

# 1D 배열 생성
n = 8  # 샘플 개수
d = 0.1  # 샘플 간격

# 주파수 계산
frequencies = np.fft.fftfreq(n, d)

print("주파수 값: ", frequencies)

이 예제에서는 샘플 개수 `n`이 8이고, 샘플 간격 `d`가 0.1인 경우 각 주파수 성분이 나타내는 실제 주파수 값을 계산합니다.

예제 2: 1D 사인파 신호의 FFT 주파수 계산 및 시각화

이 예제에서는 1D 사인파 신호에 대해 FFT를 수행한 후, `fftfreq`를 사용해 주파수 성분을 시각화합니다.

import numpy as np
import matplotlib.pyplot as plt

# 샘플링 파라미터
N = 500  # 샘플 개수
T = 1.0 / 800.0  # 샘플 간격

# 시간 및 사인파 신호 생성
x = np.linspace(0.0, N * T, N, endpoint=False)
y = np.sin(50.0 * 2.0 * np.pi * x) + 0.5 * np.sin(80.0 * 2.0 * np.pi * x)

# FFT 수행
yf = np.fft.fft(y)

# 주파수 계산
xf = np.fft.fftfreq(N, T)[:N // 2]

# FFT 결과 시각화
plt.plot(xf, 2.0 / N * np.abs(yf[:N // 2]))
plt.grid()
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.title('FFT of 1D Sine Wave')
plt.show()

이 예제는 두 가지 주파수를 가진 사인파 신호에 대해 FFT를 수행한 후, `fftfreq`로 각 주파수 성분을 계산하고, 이를 시각화한 예제입니다. 주파수 성분이 정확히 시각화되는 것을 확인할 수 있습니다.

`numpy.fft.fftfreq` 함수의 활용

`fftfreq` 함수는 주로 신호 처리 및 분석에서 사용되며, FFT 결과로부터 주파수 성분을 해석할 때 필수적인 도구입니다. 예를 들어, 주파수 도메인에서의 데이터를 분석하거나 필터링을 수행할 때 유용합니다.

예제: FFT와 주파수 성분의 연관성

import numpy as np

# 신호 생성
N = 1000  # 샘플 개수
T = 1.0 / 1000.0  # 샘플 간격
x = np.linspace(0.0, N * T, N, endpoint=False)
y = np.sin(50.0 * 2.0 * np.pi * x)

# FFT 수행
yf = np.fft.fft(y)
xf = np.fft.fftfreq(N, T)

print("주파수 성분:", xf[:10])  # 상위 10개의 주파수 성분 출력

이 예제에서는 샘플 개수가 1000개인 사인파 신호에 대해 FFT를 수행하고, 주파수 성분을 계산하여 상위 10개의 주파수 값을 출력합니다.

결론

`numpy.fft.fftfreq` 함수는 이산 푸리에 변환(FFT) 결과에서 각 주파수 성분에 해당하는 실제 주파수를 계산하는데 매우 유용한 함수입니다. 이 함수를 사용하여 FFT 결과를 해석하고 주파수 도메인에서 데이터를 분석할 수 있습니다. 신호 처리와 데이터 분석에서 필수적인 도구로, 주파수 기반 분석 및 필터링 작업에 자주 사용됩니다.

더 많은 정보는 Numpy 공식 문서를 참고하세요.

반응형