파이썬 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 공식 문서를 참고하세요.
'Python > numpy' 카테고리의 다른 글
파이썬 numpy.fft.ihfft 함수 활용하기 (1) | 2024.11.03 |
---|---|
파이썬 numpy.fft.hfft 함수 활용하기 (0) | 2024.11.02 |
파이썬 numpy.fft.ifftshift 함수 활용하기 (0) | 2024.10.31 |
파이썬 numpy.fft.fftshift 함수 활용하기 (0) | 2024.10.30 |
파이썬 numpy.fft.ifftn 함수 활용하기 (0) | 2024.10.29 |