1. 程式人生 > >形象易懂講解演算法I——小波變換(FT-STFT-小波變換)

形象易懂講解演算法I——小波變換(FT-STFT-小波變換)

 這原是知乎上的一遍問答,我也在CSDN上看到了同樣的轉載博文,可是由於圖片轉載不過來影響了閱讀,我在這裡重新把影象轉載到了CSDN,供大家閱讀。感謝原作者!

從傅立葉變換到小波變換,並不是一個完全抽象的東西,可以講得很形象。小波變換有著明確的物理意義,如果我們從它的提出時所面對的問題看起,可以整理出非常清晰的思路。

下面我就按照傅立葉-->短時傅立葉變換-->小波變換的順序,講一下為什麼會出現小波這個東西、小波究竟是怎樣的思路。

一、傅立葉變換

關於傅立葉變換的基本概念在此我就不再贅述了,預設大家現在正處在理解了傅立葉但還沒理解小波的道路上。

下面我們主要將傅立葉變換的不足。

即我們知道傅立葉變化可以分析訊號的頻譜,那麼為什麼還要提出小波變換?答案就是方沁園所說的,“對非平穩過程,傅立葉變換有侷限性”。看如下一個簡單的訊號:

做完FFT(快速傅立葉變換)後,可以在頻譜上看到清晰的四條線,訊號包含四個頻率成分。一切都沒有問題。

但是,如果是頻率隨著時間變化的非平穩訊號呢?

如上圖,最上邊的是頻率始終不變的平穩訊號。而下邊兩個則是頻率隨著時間改變的非平穩訊號,它們同樣包含和最上訊號相同頻率的四個成分。
做FFT後,我們發現這三個時域上有巨大差異的訊號,頻譜(幅值譜)卻非常一致。尤其是下邊兩個非平穩訊號,我們從頻譜上無法區分它們,因為它們包含的四個頻率的訊號的成分確實是一樣的,只是出現的先後順序不同

可見,傅立葉變換處理非平穩訊號有天生缺陷。它只能獲取一段訊號總體上包含哪些頻率的成分,但是對各成分出現的時刻並無所知因此時域相差很大的兩個訊號,可能頻譜圖一樣。

然而平穩訊號大多是人為製造出來的,自然界的大量訊號幾乎都是非平穩的,所以在比如生物醫學訊號分析等領域的論文中,基本看不到單純傅立葉變換這樣naive的方法。

上圖所示的是一個正常人的事件相關電位。對於這樣的非平穩訊號,只知道包含哪些頻率成分是不夠的,我們還想知道各個成分出現的時間。知道訊號頻率隨時間變化的情況,各個時刻的瞬時頻率及其幅值——這也就是時頻分析。

二、短時傅立葉變換(Short-time Fourier Transform, STFT)

一個簡單可行的方法就是——加窗。“把整個時域過程分解成無數個等長的小過程,每個小過程近似平穩,再傅立葉變換,就知道在哪個時間點上出現了什麼頻率了。”這就是短時傅立葉變換。

時域上分成一段一段做FFT,不就知道頻率成分隨著時間的變化情況了嗎!用這樣的方法,可以得到一個訊號的時頻圖了:

圖上既能看到10Hz, 25 Hz, 50 Hz, 100 Hz四個頻域成分,還能看到出現的時間。兩排峰是對稱的,所以大家只用看一排就行了。

時頻分析結果到手。但是STFT依然有缺陷。使用STFT存在一個問題,我們應該用多寬的窗函式?
窗太寬太窄都有問題:

窗太窄,窗內的訊號太短,會導致頻率分析不夠精準,頻率解析度差。窗太寬,時域上又不夠精細,時間解析度低。

看看例項效果吧:

上圖對同一個訊號(4個頻率成分)採用不同寬度的窗做STFT,結果如右圖。用窄窗,時頻圖在時間軸上解析度很高,幾個峰基本成矩形,而用寬窗則變成了綿延的矮山。但是頻率軸上,窄窗明顯不如下邊兩個寬窗精確。

所以窄視窗時間解析度高、頻率解析度低寬視窗時間解析度低、頻率解析度高。對於時變的非穩態訊號,高頻適合小視窗,低頻適合大視窗。然而STFT的視窗是固定的,在一次STFT中寬度不會變化,所以STFT還是無法滿足非穩態訊號變化的頻率的需求。

三、小波變換

那麼你可能會想到,讓視窗大小變起來,多做幾次STFT不就可以了嗎?!沒錯,小波變換就有著這樣的思路。
但事實上小波並不是這麼做的(關於這一點,方沁園同學的表述“小波變換就是根據演算法,加不等長的窗,對每一小部分進行傅立葉變換”就不準確了。小波變換並沒有採用窗的思想,更沒有做傅立葉變換。)
至於為什麼不採用可變窗的STFT呢,我認為是因為這樣做冗餘會太嚴重,STFT做不到正交化,這也是它的一大缺陷。

於是小波變換的出發點和STFT還是不同的。STFT是給訊號加窗,分段做FFT;而小波直接把傅立葉變換的基給換了——將無限長的三角函式基換成了有限長的會衰減的小波基。這樣不僅能夠獲取頻率,還可以定位到時間了~

【解釋】
來我們再回顧一下傅立葉變換吧,沒弄清傅立葉變換為什麼能得到訊號各個頻率成分的同學也可以再借我的圖理解一下。
傅立葉變換把無限長的三角函式作為基函式:


這個基函式會伸縮、會平移(其實本質並非平移,而是兩個正交基的分解)。縮得窄,對應高頻;伸得寬,對應低頻。然後這個基函式不斷和訊號做相乘。某一個尺度(寬窄)下乘出來的結果,就可以理解成訊號所包含的當前尺度對應頻率成分有多少。於是,基函式會在某些尺度下,與訊號相乘得到一個很大的值,因為此時二者有一種重合關係。那麼我們就知道訊號包含該頻率的成分的多少。

仔細體會可以發現,這一步其實是在計算訊號和三角函式的相關性。

看,這兩種尺度能乘出一個大的值(相關度高),所以訊號包含較多的這兩個頻率成分,在頻譜上這兩個頻率會出現兩個峰。
以上,就是粗淺意義上傅立葉變換的原理。
如前邊所說,小波做的改變就在於,將無限長的三角函式基換成了有限長的會衰減的小波基。

當伸縮、平移到這麼一種重合情況時,也會相乘得到一個大的值。這時候和傅立葉變換不同的是,這不僅可以知道訊號有這樣頻率的成分,而且知道它在時域上存在的具體位置。

而當我們在每個尺度下都平移著和訊號乘過一遍後,我們就知道訊號在每個位置都包含哪些頻率成分

看到了嗎?有了小波,我們從此再也不害怕非穩定訊號啦!從此可以做時頻分析啦!

做傅立葉變換隻能得到一個頻譜,做小波變換卻可以得到一個時頻譜

小波還有一些好處,比如,我們知道對於突變訊號,傅立葉變換存在吉布斯效應,我們用無限長的三角函式怎麼也擬合不好突變訊號:

然而衰減的小波就不一樣了:

以上,就是小波的意義。

不足之處請大家多留言

知識原理補充:

一些問題的回答:
1. 關於海森堡不確定性原理
不確定性原理,或者叫測不準原理,最早出自量子力學,意為在微觀世界,粒子的位置與動量不可同時被確定。但是這個原理並不侷限於量子力學,有很多物理量都有這樣的特徵,比如能量和時間、角動量和角度。體現在訊號領域就是時域和頻域。不過更準確一點的表述應該是:一個訊號不能在時空域和頻域上同時過於集中;一個函式時域越“窄”,它經傅立葉變換的頻域後就越“寬”。
如果有興趣深入研究一下的話,這個原理其實非常耐人尋味。訊號處理中的一些新理論在根本上也和它有所相連,比如壓縮感知。如果你剝開它複雜的數學描述,最後會發現它在本質上能實現其實和不確定性原理密切相關。而且大家不覺得這樣一些矛盾的東西在哲學意義上也很奇妙嗎?


2. 關於正交化
什麼是正交化?為什麼說小波能實現正交化是優勢?
簡單說,如果採用正交基,變換域係數會沒有冗餘資訊,變換前後的訊號能量相等,等於是用最少的資料表達最大的資訊量,利於數值壓縮等領域。JPEG2000壓縮就是用正交小波變換。
比如典型的正交基:二維笛卡爾座標系的(1,0)、(0,1),用它們表達一個訊號顯然非常高效,計算簡單。而如果用三個互成120°的向量表達,則會有資訊冗餘,有重複表達。
但是並不意味著正交一定優於不正交。比如如果是做影象增強,有時候反而希望能有一些冗餘資訊,更利於對噪聲的抑制和對某些特徵的增強。

3. 關於瞬時頻率
  原問題:圖中時刻點對應一頻率值,一個時刻點只有一個訊號值,又怎麼能得到他的頻率呢?
  很好的問題。如文中所說,絕對意義的瞬時頻率其實是不存在的。單看一個時刻點的一個訊號值,當然得不到它的頻率。我們只不過是用很短的一段訊號的頻率作為該時刻的頻率,所以我們得到的只是時間解析度有限的近似分析結果。這一想法在STFT上體現得很明顯。小波用衰減的基函式去測定訊號的瞬時頻率,思想也類似。(不過到了Hilbert變換,思路就不一樣了,以後有機會細講)

4. 關於小波變換的不足
這要看和誰比了。
A.作為影象處理方法,和多尺度幾何分析方法(超小波)比:
對於影象這種二維訊號的話,二維小波變換隻能沿2個方向進行,對影象中點的資訊表達還可以,但是對線就比較差。而影象中最重要的資訊恰是那些邊緣線,這時候ridgelet(脊波), curvelet(曲波)等多尺度幾何分析方法就更有優勢了。
B. 作為時頻分析方法,和希爾伯特-黃變換(HHT)比:
相比於HHT等時頻分析方法,小波依然沒脫離海森堡測不準原理的束縛,某種尺度下,不能在時間和頻率上同時具有很高的精度;以及小波是非適應性的,基函式選定了就不改了。

相關推薦

形象易懂講解演算法I——變換(FT-STFT-變換)

 這原是知乎上的一遍問答,我也在CSDN上看到了同樣的轉載博文,可是由於圖片轉載不過來影響了閱讀,我在這裡重新把影象轉載到了CSDN,供大家閱讀。感謝原作者! 從傅立葉變換到小波變換,並不是一個完全抽象的東西,可以講得很形象。小波變換有著明確的物理意義,如果我們從它的提

形象易懂講解演算法II——壓縮感知

作者:咚懂咚懂咚 連結:https://zhuanlan.zhihu.com/p/22445302 來源:知乎 著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。 之前曾經寫過一篇關於小波變換的回答(能不能通俗的講解下傅立葉分析和小波分析之間的關係? - 咚懂咚懂咚的回答),得到很多贊,十分

傅立葉變換 和 Gabor

1.傅立葉變換 1) 簡介 數字影象處理的方法主要分成兩大部分:空域分析法和頻域分析法。空域分析法就是對影象矩陣進行處理;頻域分析法是通過影象變換將影象從空域變換到頻域,從另外一個角度來分析影象的特徵並進行處理。頻域分析法在影象增強、影象復原、影象編碼壓縮及特徵編碼壓縮方

通俗易懂--決策樹演算法、隨機森林演算法講解(演算法+案例)

1.決策樹 1.1從LR到決策樹 相信大家都做過用LR來進行分類,總結一下LR模型的優缺點: 優點 適合需要得到一個分類概率的場景。 實現效率較高。 很好處理線性特徵。 缺點 當特徵空間很大時,邏輯迴歸的效能不是很好。 不能很好地處理大量多類特徵。

通俗易懂--邏輯迴歸演算法講解(演算法+案例)

1.邏輯迴歸(Logistic Regression) GitHub地址(案例程式碼加資料) 1.1邏輯迴歸與線性迴歸的關係 邏輯迴歸是用來做分類演算法的,大家都熟悉線性迴歸,一般形式是Y=aX+b,y的取值範圍是[-∞, +∞],有這麼多取值,怎麼進行分類呢?不用擔心,偉大的數學家已經為我們找到了一個

通俗易懂--SVM演算法講解(演算法+案例)

1.SVM講解 新聞分類案例 SVM是一個很複雜的演算法,不是一篇博文就能夠講完的,所以此篇的定位是初學者能夠接受的程度,並且講的都是SVM的一種思想,通過此篇能夠使讀著會使用SVM就行,具體SVM的推導過程有一篇博文是講得非常細的,具體連結我放到最後面,供大家參考。 1.1支援向量機(SVM)的由來

優化版本: tensorflow實現2D變化dwt和變換idwt

由於上上篇部落格寫了使用tensorflow實現2D小波變化dwt和小波逆變換idwt,但是實現的方法在速度上和資源佔用上實在堪憂,特別是在channel比較大的情況下。因此本人對於上次的程式碼進行了優化。 優化主要表現在兩個方面: 去掉原來用於調整尺寸的for迴圈結構,使用

tensorflow實現2D變化dwt和變換idwt,梯度可以反向傳播

使用tensorflow實現小波變化和小波逆變換,並且梯度可以反向傳播。因此可以方便的將小波變化嵌入到網路結構中去。 本程式碼參考pytorch實現的小波變化移植至tensorflow。pytorch實現連結:https://github.com/fbcotter/pytorch_wavel

簡單易懂——Dijkstra演算法講解

前言:相對於暴力簡單的Floyd演算法,Dijkstra演算法更為有用且複雜度較為合理--O(N^2)。今天就為大家介紹一下這個演算法。Dijkstra演算法使用了廣度優先搜尋解決賦權有向圖或者無向圖的

通俗易懂--嶺迴歸(L2)、lasso迴歸(L1)、ElasticNet講解(演算法+案例)

1.L2正則化(嶺迴歸) 1.1問題 想要理解什麼是正則化,首先我們先來了解上圖的方程式。當訓練的特徵和資料很少時,往往會造成欠擬合的情況,對應的是左邊的座標;而我們想要達到的目的往往是中間的座標,適當的特徵和資料用來訓練;但往往現實生活中影響結果的因素是很多的,也就是說會有很多個特徵值,所以訓練模型

大端位元組序和端位元組序通俗易懂講解

大端(儲存模式),是指資料的地位儲存在記憶體的高地址中,而資料的高位儲存在記憶體的低地址中。 小端(儲存模式),是指資料的地位儲存在記憶體的低地址中,而資料的高位儲存在記憶體的高地址中。 小端如下圖

svm演算法 最通俗易懂講解

  最近在學習svm演算法,藉此文章記錄自己的學習過程,在學習很多處借鑑了z老師的講義和李航的統計,若有不足的地方,請海涵;svm演算法通俗的理解在二維上,就是找一分割線把兩類分開,問題是如下圖三條顏色都可以把點和星劃開,但哪條線是最優的呢,這就是我們要考慮的問題; 首

【轉載】變換與傅立葉變換

一、基的概念     小波函式和正餘弦函式都是基,訊號都可以分成無窮多個他們的和。而展開係數就是基與訊號之間的內積,更通俗的說是投影。展開係數大的,說明訊號和基是足夠相似的,這就是相似性檢測的思想。但我們必須明確的是,傅立葉是0-2π標準正交基,而小波是-inf到inf

HDU 6141 I am your Father!(最樹形圖+權值編碼)

get blog while node color amp target 沒有 樹根 http://acm.hdu.edu.cn/showproblem.php?pid=6141 題意: 求最大樹形圖。 思路: 把邊的權值變為負值,那麽這就是個最小樹形圖了,直

HDU 6141 I am your Father!(最樹形圖)

truct 操作 div blog 直接 .cn clu lld 最小樹形圖 【題目鏈接】 http://acm.hdu.edu.cn/showproblem.php?pid=6141 【題目大意】   給出一個有向圖,求1點為根的最小樹形圖使得第n個點的直

SPI總線 通俗易懂講解——(轉載)

有一個 優點 計數器 net sla 狀態 結束 有效 數據傳輸 SPI總線   MOTOROLA公司的SPI總線的基本信號線為3根傳輸線,即SI、SO、SCK。傳輸的速率由時鐘信號SCK決定,SI為數據輸入、SO為數據輸出。采用SPI總線的系統如圖8-27所示,它包含了一

C語言經典演算法(八)——遞迴實現斐那契數列的兩種方法

後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現斐波那契數列 1、 遞迴實現斐波那契數列Fib(n) <1> 題目描述:輸入n值,求解第n項的斐波那契數列值 <2> 方法一:概念法 <3> 方法二:遞迴法 斐波那契數列值是值1

【數學】kd 樹演算法之思路篇(憂傷的兔子)

導語:kd 樹是一種二叉樹資料結構,可以用來進行高效的 kNN 計算。kd 樹演算法偏於複雜,本篇將先介紹以二叉樹的形式來記錄和索引空間的思路,以便讀者更輕鬆地理解 kd 樹。 圖較多,小心流量  作者:肖睿編輯:巨集觀經濟算命師本文由JoinQuant量化課堂推出,本文的難度屬於

演算法分析與設計期中測試——最

從數列A[0], A[1], A[2], …, A[N-1]中選若干個數,要求對於每個i(0<=i< N-1),A[i]和A[i+1]至少選一個數,求能選出的最小和. 1 <= N <= 100000, 1 <= A[i] <= 1000 請為下面

idea I使用@Autowired時報錯之技巧