迭代算法太慢?試試濾波器吧!

歡迎大家到我的個人博客玩耍!

1.前言

在信號處理領域,一個信號當前時刻的值常常與其過去時刻的值以及輸入信號有關,很多人會用迭代算法去求,這是一種很直觀的解決辦法,但迭代算法實在是太慢了,尤其是數據量很大時,對實時信號處理簡直是災難!

有什麼辦法可以加快處理速度嗎?答案是“濾波器”!

用信號與系統的角度去觀察世界,所有的處理過程都可以看作一個濾波器。

下面以AR(2)模型爲例,比較迭代算法和使用濾波器處理的結果!

2.算例

AR(2)AR \left( 2 \right)過程unu_{n}的差分方程爲un=a1u(n1)a2u(n2)+v(n)u_{n} = -a_{1}u\left( n-1 \right) - a_{2}u\left( n-2 \right) + v\left( n \right),其中vnv_{n}是零均值,方差爲σv2=0.0731\sigma_{v}^{2}=0.0731的加性白噪聲。ARAR參數a1=0.975,a2=0.95a_{1} = -0.975,a_{2} = 0.95。需要產生N=512N=512點的un(n=1,2,,N)u_{n}\left( n= 1,2,\cdots,N \right)

3.結果比較

可以看到,濾波器實現和迭代實現結果是一樣的。
在這裏插入圖片描述

利用MatlabMatlabtic,toctic,toc函數,得到兩種方法的運行時間,可以看到基於濾波器實現的時間要比迭代算法實現快一個數量級左右,是這一個很大的提升,特別是樣本點數很大時!
在這裏插入圖片描述

4.MatlabMatlab代碼下載

下載代碼請移步迭代算法的濾波器實現!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章