CWT (Continuous Wavelet Transform)
1. 개념
시간에 따라 변하는 주파수 pattern을 보기 위한 변환
Ex) 시계열(signal)은 보통 시간이 지나면서 주파수 특성이 변함.
- 사람이 걸음 → 규칙적인 저주파
- 갑자기 뛰기 시작 → 더 빠른 고주파
- ECG에서 sudden spike → 고주파 성분 잠깐 등장
즉, 어떤 주파수가 언제 나타났는지 를 알려주는 변환.
STFT와의 차별성?
- 자유로운 time–frequency resolution
- 다양한 스케일(scale)로 확대/축소하여 분석
2. 핵심 아이디어
입력 신호 \(x(t)\)을 “wavelet(작은 파형)”과 계속 비교!
Wavelet \(ψ(t)\)는 다음 성질을 가진 짧고 국소적인 파형:
-
위치를 옮기면서(convolution)
-
크기를 늘리거나 줄이면서(scale) \(\rightarrow\) (STFT와의 차별점)
비교함으로써 신호 속의 다양한 스케일 pattern을 찾음
3. 용어 정리
- Time series: \(x(t)\)
- 우리가 분석하고 싶은 실제 신호
- 예: ECG, accelerometer, audio, stock price …
-
Wavelet: \(\psi(t)\)
-
미리 정의된 작은 패턴(템플릿 신호)
-
이걸 이리저리 옮기고(scale, translation) 하면서
“여기서 이 모양이 얼마나 나타나지?”를 측정하는 도구.
-
- Wavelet을 변형하는 두 파라미터: scale(a), shift(b)
- 참고) Wavelet \(\psi(t)\)를 바로 쓰지 않고, 크기와 위치를 바꾼 버전을 사용
4. 수식
a) 변형된 wavelet
\(\psi_{a,b}(t) = \frac{1}{\sqrt{\mid a\mid }} \,\psi\left(\frac{t - b}{a}\right)\).
- a (scale)
- \(a > 0\) 이라고 생각하면 편함
- \(\mid a\mid > 1\): wavelet이 “늘어나서” 저주파(느린 패턴) 위주
- \(\mid a\mid < 1\): wavelet이 “줄어들어서” 고주파(빠른 패턴) 위주
- b (translation)
- wavelet이 시간축에서 어디에 위치하는지
- \(b\)를 바꿔가며 신호 전체를 “슬라이딩”
- \(1/\sqrt{\mid a\mid }\).
- scale이 바뀌어도 energy가 유지되도록 normalization
b) 수식의 직관
\(\frac{t-b}{a}\): 먼저 \(b\)만큼 shift 한 뒤, \(a\)로 scale
→ wavelet을 늘리고/줄이고, 왼쪽/오른쪽으로 이동한 함수가 됨.
c) CWT의 정의: inner product
“신호 \(x(t)\)와 wavelet을 곱해서 적분한 값”
\(W_x(a, b) = \text{CWT}\{x\}(a,b) = \int_{-\infty}^{\infty} x(t)\, \psi_{a,b}^*(t)\, dt\).
- \(\psi_{a,b}^*(t)\): complex wavelet일 경우 complex conjugate
- 실수 wavelet이면 그냥 \(\psi_{a,b}(t))\)
- 결과 \(W_x(a,b)\)는 복소수(또는 실수) 값
- magnitude → “얼마나 비슷한가”
- phase → alignment 정보 등
수식 한 줄 요약:
“시간축 전체에서, 현재 scale = a, 현재 위치 = b 인 wavelet와 신호 \(x(t)\)가 얼마나 잘 맞는지를 측정한 값”
5. CWT as “매칭 스코어”
비유적 표현
- \(\psi_{a,b}(t)\) : 특정 모양의 “패턴 필터”
- \(x(t)\psi_{a,b}(t)\) : 같은 위치에서 두 신호를 곱한 값
- 적분 \(\int x(t)\psi_{a,b}(t) dt\)
- 두 신호의 similarity(유사도) or inner product
결론: \(W_x(a,b)\)가 ..
-
크면 → scale=a, 위치=b에서 wavelet 모양과 매우 비슷한 패턴이 있음
-
작으면 → 그 위치/scale에서는 그런 패턴이 없음
6. Time–Frequency / Time–Scale 관점
CWT의 결과: \(W_x(a,b)\)라는 2D 함수
- 가로축 (\(b\)): time (언제)
- 세로축 (\(a\)): scale (어떤 크기/주파수 대역)
- 값: wavelet와의 유사도 (coefficient)
Time–frequency plot
-
보통은 scale a 를 frequency와 1:1로 mapping 해서 봄
-
2D 이미지 (scalogram)
→ “어떤 주파수(또는 scale) 성분이 언제 강하게 나타나는지” 한눈에 보임.
6. Morlet Wavelet
TSCMamba에서 사용
\(\psi(t) = \pi^{-1/4}\left(1 - \frac{t^2}{\sigma^2}\right)\exp\left(-\frac{t^2}{2\sigma^2}\right) \cos(2\pi f t)\).
- \(\exp(-t^2 / (2\sigma^2))\) : Gaussian envelope → localization
- \(\cos(2\pi f t)\) : 특정 frequency f를 가진 cosine
- \((1 - t^2/\sigma^2)\): 약간 shape을 보정하는 polynomial term
이걸 \(\psi_{a,b}(t)\)로 scale/shift 해서 CWT에 넣으면:
\(W_x(a,b) = \int x(t)\, \psi_{a,b}(t)\, dt\).
→ 결국 “다양한 frequency 대역(= scale), 다양한 시간 위치”에서
Morlet 모양 패턴이 신호에 얼마나 들어있는지를 전체적으로 측정.