해파 필터(Wave Filter)는 일반적으로 신호 처리 분야에서 특정 주파수 대역을 통과시키거나 차단하기 위해 설계된 전자 필터를 의미합니다. '해파'는 파동을 뜻하는 말로, 주로 오디오, 통신, 이미지 처리 등에서 원치 않는 노이즈를 제거하거나 특정 신호 성분을 추출하는 데 사용됩니다. 가장 일반적인 해파 필터의 종류는 로우패스 필터(Low-pass Filter), 하이패스 필터(High-pass Filter), 밴드패스 필터(Band-pass Filter), 밴드스톱 필터(Band-stop Filter) 등이 있으며, 각각 다른 주파수 특성을 가지고 있습니다.
해파 필터는 아날로그와 디지털 두 가지 방식으로 구현됩니다. 아날로그 필터는 저항(R), 인덕터(L), 커패시터(C) 등의 수동 소자를 사용하여 회로를 구성하는 방식이며, 연속적인 아날로그 신호를 처리합니다. 반면, 디지털 필터는 신호를 샘플링하여 수학적 알고리즘(예: FIR, IIR)으로 처리하는 방식으로, DSP(Digital Signal Processor)나 소프트웨어에서 구현됩니다. 디지털 필터는 설계의 유연성과 정밀도가 높아 현대 신호 처리 시스템의 핵심을 이루고 있습니다.
간단한 디지털 로우패스 필터를 구현하는 Python 코드 예제는 다음과 같습니다. 이 예제는 FIR(Finite Impulse Response) 필터의 일종인 이동평균 필터를 사용합니다.
python import numpy as np import matplotlib.pyplot as plt 샘플 데이터 생성: 고주파 노이즈가 포함된 신호 sampling_freq = 1000 샘플링 주파수 (Hz) t = np.arange(0, 1, 1/sampling_freq) 시간 축 signal_freq = 5 원하는 신호의 주파수 (Hz) noise_freq = 50 노이즈의 주파수 (Hz) 원본 신호 (5Hz)와 노이즈 (50Hz)를 합성 original_signal = np.sin(2 * np.pi * signal_freq * t) noise = 0.5 * np.sin(2 * np.pi * noise_freq * t) noisy_signal = original_signal + noise 해파 필터 적용: 이동평균 필터 (간단한 로우패스 필터) window_size = 10 filtered_signal = np.convolve(noisy_signal, np.ones(window_size)/window_size, mode='same') 결과 시각화 plt.figure(figsize=(12, 6)) plt.plot(t, noisy_signal, label="Noisy Signal", alpha=0.7) plt.plot(t, filtered_signal, label="Filtered Signal", linewidth=2, color='red') plt.plot(t, original_signal, label="Original Signal", linestyle='--', color='black') plt.xlabel("Time [s]") plt.ylabel("Amplitude") plt.title("Wave Filtering Example: Moving Average (Low-pass)") plt.legend() plt.grid(True) plt.show()이 코드는 고주파 노이즈(50Hz)가 포함된 원본 신호(5Hz)를 생성하고, 이동평균 필터를 적용하여 고주파 성분을 완화시킵니다. `window_size` 값을 조정하면 필터의 cutoff 주파수가 변경되어 더 aggressive하게 또는 더 부드럽게 필터링할 수 있습니다. 이는 해파 필터가 실제로 어떻게 동작하는지 이해하는 데 도움이 되는 기본적인 예시입니다.