반응형
파이썬 NumPy fft 함수: 빠른 푸리에 변환으로 주파수 분석하기
파이썬의 NumPy 라이브러리는 과학적 계산을 위한 훌륭한 도구입니다. 그 중 numpy.fft.fft 함수는 신호 처리와 주파수 분석을 위한 강력한 도구 역할을 합니다. 이 포스팅에서는 numpy.fft.fft 함수의 활용법과 몇 가지 예제를 소개해 드리겠습니다.
numpy.fft.fft 함수 소개
numpy.fft.fft 함수는 시간 도메인에서 주어진 신호의 주파수 도메인 표현을 계산합니다. 이 함수는 입력 신호의 복소수 Fourier 변환을 수행하여, 신호의 주파수 성분을 알아내는 데 유용합니다. 다양한 분야에서 주파수 분석에 자주 사용됩니다.
함수 시그니처
numpy.fft.fft(a, n=None, axis=-1, norm=None)
매개변수:
- a: 변환할 입력 신호입니다. 리스트 또는 NumPy 배열 형태이어야 합니다.
- n: 변환할 신호의 길이. 기본적으로는 입력 신호의 길이가 사용됩니다.
- axis: 변환을 적용할 축. 기본값은 마지막 축입니다.
- norm: 정규화 방법을 지정합니다. 기본값은 None입니다.
반환 값:
- 입력 신호의 주파수 도메인 표현을 나타내는 복소수 배열을 반환합니다.
사용 예제
기본 예제
이 예제에서는 numpy.fft.fft 함수를 사용하여 간단한 사인파 신호의 주파수 변환을 수행해 보겠습니다.
import numpy as np
import matplotlib.pyplot as plt
# 샘플링 주파수 및 시간 생성
fs = 1000
t = np.arange(0, 1, 1/fs)
# 사인파 신호 생성
frequency = 5 # 사인파 주파수
signal = np.sin(2 * np.pi * frequency * t)
# FFT 수행
fft_result = np.fft.fft(signal)
# 주파수 축 생성
frequencies = np.fft.fftfreq(len(signal), 1/fs)
# 결과 시각화
plt.subplot(2, 1, 1)
plt.plot(t, signal)
plt.title('Time Domain Signal')
plt.xlabel('Time [s]')
plt.ylabel('Amplitude')
plt.subplot(2, 1, 2)
plt.plot(frequencies, np.abs(fft_result))
plt.title('Frequency Domain Signal')
plt.xlabel('Frequency [Hz]')
plt.ylabel('Magnitude')
plt.tight_layout()
plt.show()
노이즈가 추가된 신호 예제
노이즈가 추가된 신호의 주파수 변환도 수행해 보겠습니다.
import numpy as np
import matplotlib.pyplot as plt
# 샘플링 주파수 및 시간 생성
fs = 1000
t = np.arange(0, 1, 1/fs)
# 사인파 신호 생성
frequency = 5 # 사인파 주파수
signal = np.sin(2 * np.pi * frequency * t)
# 노이즈 추가
noise = 0.5 * np.random.normal(size=t.shape)
noisy_signal = signal + noise
# FFT 수행
fft_result = np.fft.fft(noisy_signal)
# 주파수 축 생성
frequencies = np.fft.fftfreq(len(noisy_signal), 1/fs)
# 결과 시각화
plt.subplot(2, 1, 1)
plt.plot(t, noisy_signal)
plt.title('Noisy Time Domain Signal')
plt.xlabel('Time [s]')
plt.ylabel('Amplitude')
plt.subplot(2, 1, 2)
plt.plot(frequencies, np.abs(fft_result))
plt.title('Frequency Domain Signal')
plt.xlabel('Frequency [Hz]')
plt.ylabel('Magnitude')
plt.tight_layout()
plt.show()
결론
numpy.fft.fft 함수를 활용하면 복잡한 신호의 주파수 성분을 쉽게 분석할 수 있습니다. 이 기능을 통해 우리는 더 많은 통찰을 얻고, 신호 처리에 있어 혁신적인 접근을 꾀할 수 있습니다. 데이터 과학 및 신호 분석에 있어 numpy.fft.fft는 반드시 알고 있어야 할 함수입니다!
- 주파수 분석을 통해 신호의 패턴을 발견해 보세요, 그리고 새로운 인사이트를 창출하세요!
- 지금 바로 numpy.fft.fft 함수를 활용하여 여러분의 데이터를 다음 단계로 발전시켜 보세요!
반응형
'Python > numpy' 카테고리의 다른 글
파이썬 numpy.random.rand 함수 활용하기 (0) | 2024.10.04 |
---|---|
파이썬 numpy.fft.ifft 함수 활용하기 (0) | 2024.10.04 |
파이썬 numpy.linalg.eig 함수 활용하기 (0) | 2024.10.04 |
파이썬 numpy.linalg.det 함수 활용하기 (0) | 2024.10.04 |
파이썬 numpy.linalg.inv 함수 활용하기 (0) | 2024.10.04 |