自適應濾波器遇到的乙個問題

2021-07-15 10:51:03 字數 1504 閱讀 4941

最近寫自適應濾波器方面的程式的時候,遇到了乙個問題,濾波器沒有收斂到我想象之中的那個解,疑惑了一陣,後來發現一些問題,也許別人也會遇到,於是記錄下來分享一下,少走彎路。

事情是這樣,基於最基本的方法:lms演算法。確定乙個輸入訊號,比如:u(

n)=sin(ω

0n)

我設定的期望訊號是:de

sire

(n)=

cos(ω0

n)我們知道這兩個訊號之間只差乙個相差,其他都是一樣的,於是用這個期望的樣本來訓練fir濾波器的話,一般人們的直接想法是會得到的濾波器的衝激響應為:h(

n)=δ

(n−n

0)其中n0

是這兩個訊號的時延,結果非常自然以及直接,我們直接認為我們會得到這樣的衝激響應真的不是很奇怪的事情。

可惜這樣並不對,在這種情況下不對。

這事我得**結果:

上圖是**的波形圖,第一欄是輸入的訊號,第二欄的藍色訊號是期望訊號,可以看出他們相差一定的時延,第三欄的紅線是濾波輸出。可以看出數次迭代之後,濾波器應該是被訓練成了乙個延時器。

上圖就是這個所謂濾波器的衝激響應了,當時結果出來的時候,我有點錯愕,因為這不是我想要的結果,而且實驗顯示,我也是成功了的,我應該會得到乙個類似δ(

n−n0

) 的衝激響應才對。

上圖是我調快頻率之後的結果,這個衝激響應原來是個正弦的序列。再次有點錯愕。後來我明白了,原來這是這個情況下比較特別的結果,雖然不是

δ 形式,但這個濾波器依然是可以正常工作的,這個正弦序列跟期望響應,跟輸入訊號是同頻率的。聯想一下迭代公式,就知道原因了,這個響應可以用筆算一下,的確是正確的解。

lms演算法的迭代公式:w→

(n+1

)=w→

(n)+

μe(n

)u→

端倪算是出來了,我們這個解,不可能是正弦形式以外的解!!!!是不可能!!!!迭代來迭代去,u→

一直是正弦,同頻率的正弦加來加去,迭代幾萬次都是正弦的衝激響應。巧的是,這個解是對的。

於是我換了訊號:

換成了隨機訊號,期望是延時了若干個單位,這樣結果就是我想象的那樣了!不過說實在的,也不可能有其他的解了。

當然fir並不適宜處理所有情況,畢竟讓他變頻是不可能的,畢竟只是fir。

聯絡我/contactme

自適應濾波器學習筆記

自適應濾波器是能夠根據輸入訊號自動調整效能進行數字訊號處理的數字濾波器。作為對比,非自適應濾波器有靜態的濾波器係數,這些靜態係數一起組成傳遞函式。對於一些應用來說,由於事先並不知道所需要進行操作的引數,例如一些雜訊訊號的特性,所以要求使用自適應的係數進行處理。在這種情況下,通常使用自適應濾波器,自適...

OpenCV重寫岡薩雷斯 自適應中值濾波器

傳統中值濾波器處理低概率椒鹽雜訊退化的影象效果令人滿意 但是對於 p 0.2 的脈衝雜訊退化過的的處理效果就很令人失望,會丟失很多細節,由此,自適應中值濾波器誕生,與傳統不同的是,自適應中值濾波器嘗試保留細節。岡薩雷斯中給出的過程是 程序a a1 zmed zmin a2 zmed zmax if ...

如何用Matlab實現自適應濾波器!!!

直接上 吧,原理一大堆,自行了解即可!這是lms即自適應濾波器的matlab function yn,w,en lms xt,dn,m,mu itr length xt en zeros itr,1 誤差序列,en k 表示第k次迭代時預期輸出與實際輸入的誤差w zeros m itr 每一行代表乙...