小波變換[1] -- 認(rèn)識與 Haar 小波
~~ 懶得放封面了, 將就著看吧 ~~? ??
在我的十萬年前更新的專欄s [專欄集入口] 里討論過一種簡單的頻率分析和濾波的方法 -- 傅里葉變換(FT),? 這是把連續(xù)信號變?yōu)轭l率和相位的一種...變換,? 在頻域可以方便地對信號進(jìn)行濾波和壓縮 [專欄],? 但是FT無法很好地得出某一個頻率開始的時間,? 為此提出了窗口傅里葉變換(WFT),? 或者又可以叫短時傅里葉變換(STFT) [專欄],? 但WFT也有很大的缺陷:? 1) 分析 n 維數(shù)據(jù)會產(chǎn)生 2n 維的(頻率-時間)關(guān)系圖;? 2) 窗函數(shù)無法調(diào)整大小,? 意味著對于持續(xù)時間短的沖擊和持續(xù)時間長的大波,? WTF并不能很好地分析出來.
為了解決上述問題,? 提出了小波變換 (wavelet transform, WT).? 小波(wavelet)的意思是快速收斂的波,? 傅里葉變換里使用的核函數(shù)因為不收斂所以叫做大波.? 小波變換的特征是:? 分析信號的波函數(shù)的大小會隨著頻率變化而變化,? 也就說當(dāng)頻率高時小波會變得窄小,? 頻率低時小波會變得寬廣,? 如此帶來了非常高的動態(tài)范圍.? 并且對 n 維數(shù)據(jù)進(jìn)行小波變換僅會產(chǎn)生 n 維的頻率圖.**
**: 其實產(chǎn)生的頻率相應(yīng)經(jīng)過重新排列之后才能組成 n 維的頻率圖,? 這個是另外的內(nèi)容了.
使用函數(shù)空間(function space)描述小波變換里一層一層的頻率關(guān)系會非常方便,? 所以有必要來簡單敘述一下函數(shù)空間.

簡述函數(shù)空間
" - 什么是空間?? - 空間是點的集合."
假如有一系列函數(shù) ,? 那么由這些函數(shù)進(jìn)行線性組合?
?為這些函數(shù)張成的函數(shù)空間上的一個點,? 其中 a? 為常數(shù).? 那么函數(shù)空間為這些函數(shù)所有可能的線性組合所組成的集合,? 其中 f? 為這個函數(shù)空間的基函數(shù).
如果定義了空間里的內(nèi)積,? 那么稱這個空間為內(nèi)積空間.? 定義兩函數(shù) f, g 的內(nèi)積?.? 當(dāng)一個函數(shù) f 滿足
,? 則稱這個函數(shù)為歸一的 (或標(biāo)準(zhǔn)的).? 當(dāng)兩函數(shù) f, g 滿足?
?則稱這兩個函數(shù)互相正交.? 這些概念與一般的向量空間的類似的. 一般來說內(nèi)積括號寫為圓括號也是可以的,? 即?
.? 兩函數(shù) f, g 的相對誤差定義為?
.
如果一個函數(shù) f 不屬于函數(shù)空間 V,? 那么存在唯一的函數(shù) v? ∈ V 使得?,? 并稱 v? 是 f 在 V 上的投影.? 設(shè) V 的基函數(shù)?e?, ..., e? 為歸一正交的,? 那么 f 在 V 上的投影 v? 由?
給出,? 這是容易證明的 [略].
假設(shè)函數(shù)空間 V? 是函數(shù)空間 V 的子空間,? 即 V? ? V,? 那么在 V 里所有與 V? 正交的元素的集合被稱為 V? 的正交補(bǔ),? 即?. 不難知道 V 里的任意函數(shù)都可以分解為 V? 的函數(shù)與 V? 的正交補(bǔ)的函數(shù),? 即?
,? 記這種關(guān)系為?
.

小波變換里有兩個很重要的函數(shù):? 尺度函數(shù) 和 小波函數(shù),? 小波函數(shù)負(fù)責(zé)對信號的分解和重構(gòu),? 尺度函數(shù)負(fù)責(zé)構(gòu)建小波函數(shù)與對信號的近似.
Haar 小波變換作為小波變換里最簡單的例子,? 可以很好地建立起對小波變換的感覺
Haar 小波變換 -- 尺度函數(shù)和小波函數(shù)
Haar 尺度函數(shù)定義為?,? 不難知道?Φ(x-k); k∈Z 是互相正交的,? 也就是說這些函數(shù)可以張成一個函數(shù)空間?V?.? 那么 V? 里的函數(shù)為?
,? 因為 Haar 尺度函數(shù)不是連續(xù)的,? 所以 V??里的函數(shù)也可能是不連續(xù)的,? 準(zhǔn)確來說當(dāng)?
時,? 函數(shù)在 x = k 處不連續(xù).? 由尺度函數(shù)的定義不難看出,? 由 Φ(x-k) 組成的變換的分辨率為 1.

考慮函數(shù)集 {Φ(2x-k); k∈Z},? 與上面類似,? 這個函數(shù)集里的函數(shù)也可以張成一個函數(shù)空間 V?,? 那么 V? 里的函數(shù)為?,? 并且間斷點為 x = k/2,? 分辨率為 0.5.? 特殊地,? 當(dāng)滿足 b?? = b???? 時,? 可以得到?
,? 也就是說 V? 是 V? 的子空間.
類似地,? 可以提出分辨率為 0.25, 0.125, ... 的變換.? 以下給出一般的定義;? 設(shè) ?是一個整數(shù),? 那么由正交函數(shù)?
張成函數(shù)空間?
,? 其間斷點為
,? 分辨率為?
.? 并且有以下關(guān)系:?
.
為了把信號分解為頻率信息,? 需要在信號里找到屬于 V??但不屬于 V????的信息,? 于是引出小波函數(shù) ? 把 V? 分解為 V??? 和他的正交補(bǔ) W???.? 因為 W??是 V??的子空間,? 所以小波函數(shù)為?;??又因為 W??是 V??的正交補(bǔ),? 所以有?
.? 滿足這兩點的最簡單的小波函數(shù)為?
.? 那么 W??是由函數(shù)?
?張成的空間,? 并且有
.

Haar小波變換 -- 分解和重構(gòu)
1) 信號近似:? 對于任意一個信號函數(shù) f 都不太可能剛好屬于函數(shù)空間 V?,? 因此需要對 f 進(jìn)行近似,? 也就是采樣.? 剛剛簡述函數(shù)空間里就已經(jīng)得到了 f 投影到 V? 的方法:??,? 對于積分一般來說都是不好求的,? 所以可以近似地取?
.
2) 分解:? 采樣得到的信號從 V? 分解到 V??? 與 W??? 里,? 由尺度函數(shù)和小波函數(shù)不難得出以下關(guān)系式:???和
.? 不斷迭代這個式子,? 可以得到足夠粗糙的原信號近似 a 和頻率分量 b.
3) 自定義操作:? 噪聲過濾,? 信號壓縮什么的跟 FT 里面的沒太大區(qū)別.
4) 重構(gòu):? 即是第二步分解的逆操作,? 由系數(shù)遞推式??和
給出.

例子
以一個函數(shù)作例子:?

可以看得這個信號上有兩處不自然的尖峰,? 這里使用 Haar 小波變換消除這個尖峰.? 為了使用 Haar 小波,? 首先需要使用尺度函數(shù)對信號進(jìn)行近似,? 在這里例子里使用函數(shù)空間 V? 就只夠好了,? 下面為近似結(jié)果

可以看得這個尖峰的寬度約為 1/16,? 根據(jù) Haar 小波的特性,? 這意味著需要把分辨率高于 1/16 的信號全部抹掉,? 以下為這個結(jié)果

可以看得結(jié)果變得非常稀爛,? 但是起碼尖峰沒了.? 結(jié)果這么稀爛的因為 Haar 小波不連續(xù)導(dǎo)致的,? 后續(xù)會介紹其他更好的小波,? Haar 僅作為最簡例子介紹.
Haar 小波變換也可以用作信號壓縮,? 把信號完全分解后,? 設(shè)定壓縮率,? 則把絕對值較少的那些分量變?yōu)?0,? 然后進(jìn)行重構(gòu),? 以下是壓縮率為 80% 和 90% 的兩個示例


計算兩者分別于原信號的相對誤差,? 壓縮率 80% 時相對誤差為?0.124,? 壓縮率 90% 時為?0.220,? 可以看得表現(xiàn)還是可以的.
樣本程序:?https://github.com/nyasyamorina/trash-bin/blob/main/wavelet%20-%20Haar.jl

摸了
日常推瑟圖群:??274767696