Tools + Simulatorsnanase.cc / tools

ウェーブレット変換

順番
信号 2 つの音
比べる波の形 正弦波は 1 s 全体・ウェーブレットは短い一部分
フーリエ変換(1 s 全体) 順番を入れ替えても同じ
スカログラム(1 s 全体) 鳴った時刻も残る

窓で短く区切る STFT なら、フーリエ変換でも時刻はわかります。ただし窓の長さは周波数によらず 1 つです(3 で比較)。

2 短い波を重ねて、掛けて足す

信号スカログラム
信号とウェーブレット 左右にドラッグして位置を移動
掛け算 形が合うと山 × 山・谷 × 谷で、積はどこも正(上側)
合計 形が合うほど大きな値。合わなければ正と負が打ち消し合って 0 近く
幅短い
長い
スカログラム 横は時間・縦は周波数・明るさは合計の大きさ
信号ウェーブレット積が正積が負端の影響波の山の位置: 最もよく合う所に調整

信号
周波数軸
STFT(参考) 同じ大きさの箱
ウェーブレット(DWT) 低いほど横長の箱

段 3 / 3
平均差復元した数棒は上下にドラッグして変更

信号フィルタ
近似(低域)詳細(高域)フィルタ
係数 0 組

動作原理と式

1 フーリエ変換と「いつ」

X[k]=∑n=0N−1x[n]e−i2πkn/Nx[n−m]⟶e−i2πkm/NX[k]⟹|X[k]| は同じ
  • 区間全体(図では 1 s)を一度に変換した場合
  • 正弦波は区間の端から端まで続き、係数が持つのは「どの周波数がどれだけ」だけ
  • 「いつ」は位相に散らばる
  • 図の 2 つの音の入れ替えは、半周(m=N/2)の回転。強さ |X| は 1 つも変わらない
  • 窓で短く区切ってから変換する STFT なら時刻もわかる
  • ただし窓の長さは周波数によらず 1 つで、時刻と周波数の細かさは窓で決まる(3)
  • DFT を速く求めるアルゴリズムは FFT

2 重ねて、掛けて、足す

W(u,s)=∑nxnδtsψ*0((n−u)δts)ψ0(η)=π−1/4eiω0ηe−η2/2,ω0=6|W|=maxφ∑nxngncos(ω0ηn−φ),gn=δtsπ−1/4e−ηn2/2λ=4πsω0+2+ω02=1.033s,sj=s02jδj
u
重ねる位置(時刻)
s
尺度(波の幅)。大きいほど長く低い波
ηn
(n−u)δt/s
  • 信号と、ずらして伸ばした短い波の内積
  • 形が合う所では山 × 山・谷 × 谷で積がどこも正になり、合計が大きい
  • 合わない所では正と負が打ち消し合って 0 に近い[1][9]
  • Morlet は複素正弦にガウスの包絡を掛けた波(式 (1))。ω0=6 で平均がほぼ 0 になる[1]
  • cos だけで掛けると、波の山の位置がずれた所で和が 0 になる
  • cos と sin(実部と虚部)の 2 つで足して大きさをとるのは、山の位置 φ を一番合う所へずらして掛けて足すのと同じ
  • 図の波はずらしたもの
  • 尺度 s はフーリエ周期 λ とほぼ同じ(表 1)[1]
  • すべての u と s で |W|2/s を求め、横を時間・縦を周波数にして明るさで塗ったものがスカログラム
  • s で割ると、同じ振幅の正弦波がどの周波数でも同じ明るさになる[10]
  • 端は 0 で埋めるので、端から 2s の内側(影響の円錐の外)は値が下がる(3g 節)[1]
  • 実際の計算は、1 つの尺度の全時刻を FFT で一度に求める(式 (4))。直接の和と同じ値になる[1]
Wn(s)=∑k=0N−1x^kψ^*(sωk)eiωknδtxn=δjδt1/2Cδψ0(0)∑j=0Jℜ{Wn(sj)}sj1/2,Cδ=0.776

尺度ごとの実部を足すと元に戻ります(式 (11)・表 2)[1]。

3 箱の形

σtσf≥14πψs(t)=1sψ(ts)⟹σt∝s,σf∝1s
σt
時間の広がり(|g(t)|² の標準偏差)
σf
周波数の広がり
  • 箱の面積には下限がある。ガウスの窓(Gabor)と Morlet はちょうど下限[5][8]
  • STFT は窓が 1 つなので、どの周波数でも同じ箱
  • ウェーブレットは尺度で伸び縮みする。低い周波数ほど横長、高いほど縦長。中心の周波数と幅の比(Q)は一定

4・5 平均と差を段ごとに

ak=x2k+x2k+12,dk=x2k−x2k+12⟹x2k,x2k+1=ak±dk
  • 隣り合う 2 つの平均と差をとり、平均の側をまた分ける。8 つの数は 3 段で平均 1 つと差 7 つになり、数は増えも減りもしない[7]
  • 本来の Haar は 2 でなく 2 で割る。こうすると 2 乗和が変わらない(正規直交)
  • 滑らかな所は差が小さい。小さい差を 0 にしても形はほぼ残る。これを使った音の例は「雑音除去と圧縮」
  1. 低域 h と高域 g に通す
  2. 1 つおきに残す(↓2)
  3. 低域(近似 a)をまた分ける
aj+1[k]=∑nh[n]aj[2k+n],dj+1[k]=∑ng[n]aj[2k+n]g[n]=(−1)nh[L−1−n],x=AJ+∑j=1JDj
  • Mallat のアルゴリズム。Haar の平均と差を、長さ L のフィルタに広げたもの。長さ N の信号は、ちょうど N 個の係数になる[4]
  • フィルタに通すのは畳み込み(畳み込み)。1 段ごとに長さが半分になるので、全部の段を合わせても計算は N に比例する
  • 段 j の詳細は周波数 fs2j+1〜fs2j、時間の幅 2j/fs の箱(図 3 の DWT の箱)
  • 正規直交なので、係数の 2 乗和は信号の 2 乗和に等しい
  • 合成は分解の転置
  • A・D は各段の係数だけを残して戻したもの(多重解像度の成分)
フィルタ長さ消失モーメント低域の係数出典
Haar211/2,1/2[7]
Daubechies 2421±342,3±342[2]
Daubechies 4840.2304, 0.7148, 0.6309, −0.0280, …[2][3]

p 次の消失モーメントをもつフィルタでは、p−1 次までの多項式の詳細が 0 になる[2]。滑らかな所は係数が小さく、跳びと山の所だけ大きくなります。

このツールで決めたこと

  • 図 1・2 の信号は 256 点(1 s、256 Hz)。2 つの音は前半 6 Hz・後半 32 Hz で、それぞれハンの包絡
  • スカログラムは Morlet で 2〜128 Hz、1 オクターブ 12 行
  • 信号の平均を引いてから求め、|W|/s を最も大きい所から 30 dB の範囲で塗る
  • 足した値はその最大を 1 とする
  • ウェーブレットの帯と「幅」は ±2s(包絡が 0.14 になる所)
  • 8 つの数は 2 で割る(整数のまま追えるように)。「小さい差」は |d|≤1
  • 平面の DWT の箱は係数 1 つ(実数)で面積 1/2、STFT の箱は複素数 1 つ(実数 2 つ)で面積 1
  • STFT の箱の値は、長さ L のハン窓を L/4 ずつずらし、中心が箱の中にある 4 つの窓の最大
  • 箱の端の出来事を窓の裾で見落とさない
  • 箱の色は最も大きい箱から 36 dB の範囲
  • 離散変換の端は周期的につなぐ。段の数は、各段の長さがフィルタの長さ以上の所まで
  • テスト信号の Blocks・Bumps・HeaviSine・Doppler は Donoho・Johnstone の 4 つ[6][3]

出典

  1. 連続変換を FFT で求める(式 (2)〜(6))、Morlet(式 (1)・表 1)、尺度(式 (9)・(10))、影響の円錐(3g 節)、フーリエ周期(3h 節)、再構成と Cδ(式 (11)〜(14)・表 2)C. Torrence and G. P. Compo, “A Practical Guide to Wavelet Analysis,” Bulletin of the American Meteorological Society, vol. 79, no. 1, pp. 61–78, 1998, doi:10.1175/1520-0477(1998)079<0061:APGTWA>2.0.CO;2
  2. 台の短い正規直交ウェーブレット、消失モーメントI. Daubechies, “Orthonormal bases of compactly supported wavelets,” Communications on Pure and Applied Mathematics, vol. 41, no. 7, pp. 909–996, 1988, doi:10.1002/cpa.3160410705
  3. Daubechies の係数の数値、テスト信号(WaveLab の MakeSignal の再実装)G. R. Lee, R. Gommers, F. Waselewski, K. Wohlfahrt, and A. O’Leary, “PyWavelets: A Python package for wavelet analysis,” Journal of Open Source Software, vol. 4, no. 36, 1237, 2019, doi:10.21105/joss.01237
  4. 多重解像度と分解・合成のアルゴリズムS. G. Mallat, “A theory for multiresolution signal decomposition: the wavelet representation,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 11, no. 7, pp. 674–693, 1989, doi:10.1109/34.192463
  5. 時間と周波数の箱(Heisenberg の箱)、不確定性S. Mallat, A Wavelet Tour of Signal Processing: The Sparse Way, 3rd ed., Academic Press, 2009
  6. テスト信号 Blocks・Bumps・HeaviSine・DopplerD. L. Donoho and I. M. Johnstone, “Ideal spatial adaptation by wavelet shrinkage,” Biometrika, vol. 81, no. 3, pp. 425–455, 1994, doi:10.1093/biomet/81.3.425
  7. Haar の関数系A. Haar, “Zur Theorie der orthogonalen Funktionensysteme,” Mathematische Annalen, vol. 69, no. 3, pp. 331–371, 1910, doi:10.1007/BF01456326
  8. ガウスの窓で区切る時間と周波数の平面D. Gabor, “Theory of communication. Part 1: The analysis of information,” Journal of the Institution of Electrical Engineers, vol. 93, no. 26, pp. 429–441, 1946, doi:10.1049/ji-3-2.1946.0074
  9. 形を保って伸び縮みするウェーブレットによる分解A. Grossmann and J. Morlet, “Decomposition of Hardy functions into square integrable wavelets of constant shape,” SIAM Journal on Mathematical Analysis, vol. 15, no. 4, pp. 723–736, 1984, doi:10.1137/0515056
  10. パワーを尺度で割り、同じ振幅の正弦波を同じ値にそろえるY. Liu, X. S. Liang, and R. H. Weisberg, “Rectification of the bias in the wavelet power spectrum,” Journal of Atmospheric and Oceanic Technology, vol. 24, no. 12, pp. 2093–2102, 2007, doi:10.1175/2007JTECHO511.1

関連ツール