[python] 넘파이를 이용한 신호처리

이번 포스트에서는 파이썬의 넘파이(NumPy) 라이브러리를 이용하여 신호처리를 수행하는 방법에 대해 알아보겠습니다. 넘파이는 파이썬에서 과학적, 수학적 연산을 위한 핵심 라이브러리로, 다차원 배열과 이러한 배열을 다루기 위한 다양한 함수를 제공합니다.

1. 신호 생성

먼저, 다양한 형태의 신호를 생성해보겠습니다. 넘파이의 linspace 함수를 사용하여 시간축을 정의하고, 이를 이용하여 사인파나 복소 지수함수 등을 생성할 수 있습니다.

import numpy as np

# 시간축 정의
t = np.linspace(0, 1, 1000)

# 사인파 생성
frequency = 5  # 주파수 5Hz
signal = np.sin(2 * np.pi * frequency * t)

# 복소 지수함수 생성
complex_signal = np.exp(1j * 2 * np.pi * frequency * t)

2. 신호 변환

다음으로, 넘파이를 사용하여 주파수 영역에서의 신호 분석을 살펴보겠습니다. 푸리에 변환은 시간 영역의 신호를 주파수 영역으로 변환하는데 사용됩니다.

# 푸리에 변환
fft_result = np.fft.fft(signal)

# 주파수 영역 생성
frequencies = np.fft.fftfreq(t.shape[-1])

# 결과 출력
print(frequencies, fft_result)

3. 신호 필터링

또한, 넘파이를 사용하여 신호를 필터링하는 방법에 대해서도 알아보겠습니다. 예를 들어, 주파수 영역에서 원하는 주파수 대역을 제외하고 필터링하는 것이 가능합니다.

# 주파수 필터링
filtered_fft = fft_result.copy()
filtered_fft[(frequencies < 3) | (frequencies > 7)] = 0

# 시간 영역으로 변환
filtered_signal = np.fft.ifft(filtered_fft)

# 결과 출력
print(filtered_signal)

이렇게 넘파이를 사용하여 신호의 생성, 변환, 필터링 등 다양한 신호처리 작업을 수행할 수 있습니다. 넘파이를 이용하면 간편하게 고성능의 신호처리를 구현할 수 있으며, 다른 파이썬 패키지와의 통합 또한 용이합니다.

더 많은 신호처리 기술에 대한 정보는 NumPy 공식 문서를 참고하시기 바랍니다.