[轉]MATLAB中filter的理解與使用()

 

 


上學期剛學過《信號與系統》,因此這個寒假打算在確定考研(有一丟丟可能保研)目標院校之餘,學習如何使用MATLAB對《信號與系統》中的一些內容進行分析和實現。
特此使用博客幫助記錄與溫習

 

filter概念與基本語法

filter函數是一維的數字濾波器,主要的應用語法如下所示

y = filter(b,a,X)

[y,zf] = filter(b,a,X)

[y,zf] = filter(b,a,X,zi)

y = filter(b,a,X,zi,dim)

[…] = filter(b,a,X,[],dim)

以最簡單的 y = filter(b,a,X) 爲例

y = filter(b,a,X) 濾除向量X中的數據,其中b是分子係數向量,a是分母系數向量。如果a(1)不等於1的話,則就利用a(1)標準化濾波器係數,可以利用多項式除法使分母變爲1;如果 a(1) 等於0,濾波器返回錯誤值。

可實現差分方程

Y = FILTER(B,A,X) ,輸入X爲濾波前序列,Y爲濾波結果序列,B/A 提供濾波器係數,B爲分子, A爲分母
整個濾波過程是通過下面差分方程實現的:
a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + … + b(nb+1)*x(n-nb)-a(2)*y(n-1) - a(3)*y(n-2) + … + a(nb+1)*y(n-nb)

圖片來源於百度
圖片源於百度

例:
filter([1,2],1,[1,2,3,4,5])
實現 y[k]=x[k]+2*x[k-1]
括號中向量b爲x[k]、x[k-1]、…的係數,向量a爲y[k]、y[k-1]、…的係數。

x爲需要濾波的向量,y爲濾波後的向量(顯然,x和y的長度是一樣的,看後面例子就知道了)。

舉個例子來說明filter的原理,如下:

a = [1 2];
b = [2 3];
x = [1 2 3 4 5 6];
y = filter(b, a, x)
y =
2 3 6 5 12 3
下面給出具體的計算過程如下:
a(1)y(1) = b(1)x(1); %可以求出y(1)
a(1)y(2) = b(1)x(2)+b(2)x(1) –a(2)y(1); %可以由y(1)求出y(2)
a(1)y(3) = b(1)x(3)+b(2)x(2)-a(2)y(2); %可以由y(2)求出y(3)
a(1)y(4) = b(1)x(4)+b(2)x(3)-a(2)y(3); %可以由y(3)求出y(4)
a(1)y(5) = b(1)x(5)+b(2)x(4)-a(2)y(4); %可以由y(4)求出y(5)
a(1)y(6) = b(1)x(6)+b(2)x(5)-a(2)y(5); %可以由y(5)求出y(6)

計算結束,得到y(n)(n=1、2、…、6)

目前就暫且記到這裏


---------------------
作者:learning_recorder
來源:CSDN
原文:https://blog.csdn.net/qq_38559814/article/details/86521602
版權聲明:本文爲作者原創文章,轉載請附上博文鏈接!
 

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