Files
2nd/10_Wiki/Topics/Computer_Science_and_Theory/Signal-Processing-Foundations.md
T
2026-05-10 22:08:15 +09:00

5.4 KiB
Raw Blame History

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score verification_status tags raw_sources last_reinforced github_commit tech_stack
wiki-2026-0508-signal-processing-foundations Signal Processing Foundations 10_Wiki/Topics verified self
DSP
Digital Signal Processing
Fourier Analysis
none A 0.92 applied
signal-processing
dsp
fourier
filter
sampling-theorem
2026-05-10 pending
language framework
python scipy / numpy / torchaudio

Signal Processing Foundations

매 한 줄

"매 signal processing 은 시간/공간 신호의 frequency / scale 분해와 그 위의 transform". Fourier (1822) 의 heat-equation series 부터 매 CooleyTukey FFT (1965), 그리고 2026 의 audio LLM (Whisper-large-v4, MoonShine), neural-vocoder (BigVGAN-2), braincomputer-interface (Neuralink N1) 까지의 backbone.

매 핵심

매 핵심 정리

  • Sampling theorem (Nyquist): bandwidth B 의 신호는 f_s ≥ 2B 면 perfect reconstruct.
  • Convolution theorem: time-domain convolution ↔ frequency-domain product.
  • Parseval: energy 는 time/freq 에서 동일.
  • Uncertainty: Δt · Δf ≥ 1/(4π) — 매 wavelet/STFT trade-off 의 근원.

매 Filters

  • FIR: stable, linear-phase 가능, 매 group-delay 일정.
  • IIR: 매 efficient 하지만 phase 비선형 + stability 주의.
  • Linear phase 의 필요: 매 audio crossover, ECG.
  • Adaptive (LMS, RLS, Kalman): 매 noise-cancelling, echo.

매 Transforms

  • DFT/FFT: 매 stationary 분석.
  • STFT: 매 short-time spectrum (mel-spec backbone).
  • Wavelet (DWT): 매 multiscale.
  • Hilbert: 매 instantaneous amplitude/phase.
  • Cepstrum: 매 pitch / formant.

매 응용

  1. Audio gen: BigVGAN-2 vocoder 의 multi-scale STFT loss.
  2. ASR: Whisper-large-v4 의 80-mel + log-magnitude.
  3. EEG/BCI: bandpower in θ/α/β/γ.
  4. Radar / lidar: matched filter, FMCW range-doppler.

💻 패턴

FFT-based PSD (Welch)

from scipy.signal import welch

def psd(x, fs):
    f, p = welch(x, fs=fs, nperseg=1024, noverlap=512, window="hann")
    return f, p

STFT + log-mel spectrogram

import torchaudio

mel = torchaudio.transforms.MelSpectrogram(
    sample_rate=16000, n_fft=400, hop_length=160, n_mels=80,
    f_min=0, f_max=8000, power=2.0,
)
log_mel = lambda wav: (mel(wav) + 1e-6).log()

FIR low-pass design (firwin)

from scipy.signal import firwin, filtfilt

def lpf(x, fs, cutoff_hz, taps=129):
    b = firwin(taps, cutoff_hz, fs=fs, window="hamming")
    return filtfilt(b, [1.0], x)

Butterworth IIR (zero-phase)

from scipy.signal import butter, sosfiltfilt

def bandpass(x, fs, lo, hi, order=4):
    sos = butter(order, [lo, hi], btype="band", fs=fs, output="sos")
    return sosfiltfilt(sos, x)

Wavelet denoise (PyWavelets)

import pywt, numpy as np

def wavelet_denoise(x, wavelet="db4", level=4):
    coeffs = pywt.wavedec(x, wavelet, level=level)
    sigma = np.median(np.abs(coeffs[-1])) / 0.6745
    thr = sigma * np.sqrt(2 * np.log(len(x)))
    coeffs[1:] = [pywt.threshold(c, thr, mode="soft") for c in coeffs[1:]]
    return pywt.waverec(coeffs, wavelet)[:len(x)]

Hilbert envelope

from scipy.signal import hilbert

def envelope(x):
    a = hilbert(x)
    return np.abs(a), np.unwrap(np.angle(a))

Resampling (polyphase)

from scipy.signal import resample_poly

def to_16k(x, fs):
    from math import gcd
    g = gcd(fs, 16000)
    return resample_poly(x, 16000 // g, fs // g)

CQT / chroma (music-domain)

import librosa  # 0.11.x
chroma = librosa.feature.chroma_cqt(y=wav, sr=sr, n_chroma=12, hop_length=512)

매 결정 기준

상황 Approach
Stationary spectrum FFT / Welch PSD
Time-varying STFT / Mel
Transient / multiscale Wavelet
Pitch / formant Cepstrum / autocorr
Linear-phase audio FIR (filtfilt)
Real-time low-latency IIR (biquad cascade)
Resampling Polyphase (resample_poly)

기본값: ML feature 는 log-mel spectrogram, 분석은 Welch PSD, denoise 는 wavelet / RNNoise, real-time 은 SOS biquad.

🔗 Graph

🤖 LLM 활용

언제: audio/EEG pipeline, vocoder loss design, sensor preprocessing, time-series feature engineering. 언제 X: pure tabular data, NLP token streams (use sequence models directly).

안티패턴

  • Aliasing 무시: anti-alias LPF 없이 downsample → 매 spectral fold-back.
  • Window 의 leakage 미고려: rectangular window → sidelobe 심함, Hann/Blackman 사용.
  • filtfilt 를 real-time 에 사용: 매 non-causal — production 은 단방향 IIR + group-delay 보정.
  • dB 의 reference 누락: dBFS / dBSPL / dBm 명시 필수.

🧪 검증 / 검토

  • Verified (Oppenheim & Schafer "Discrete-Time Signal Processing" 3rd ed.; Mallat "Wavelet Tour" 3rd ed.; torchaudio docs 2.5).
  • 신뢰도 A.

🕓 Changelog

날짜 변경
2026-05-08 Phase 1
2026-05-10 Manual cleanup — Nyquist/Parseval/uncertainty, FIR/IIR/wavelet/STFT patterns, 2026 audio-LLM context