matlab中filter,conv之間的區別

2021-06-18 22:27:59 字數 1260 閱讀 6237

conv是做卷積,就是按照書上的做法,先翻轉,在一步步平移,得出結果。對於兩個長度分別為n,m的序列,卷積結果長度為m+n-1

filter是做濾波,其實原理跟卷積是想通的,只不過處理結果的方法不同,先看示例程式:

x=[1,2,3,4,5];

h=[1,1,1];

y1=conv(h,x)

y2=filter(h,1,x)

y3=filter(x,1,h)

y4=filter(x,1,[h,zeros(1,4)])

結果為:

y1 =

1 3 6 9 12 9 5

y2 =

1 3 6 9 12

y3 =

1 3 6

y4 =

1 3 6 9 12 9 5

現在對結果一一作出解釋;

1.y1的確是嚴格按照卷積的數學表示式計算的,不解釋。

在解釋後面幾條時,先說一下filter的用法:filter(b,a,x),其中b,a組成乙個差分方程,x是輸入訊號,例如:

filter([1,2],1,[1,2,3,4,5])實現  y[k]=x[k]+2*x[k-1]

咱們這裡討論的就是a=1的情況。有了基本說明,現在言歸正傳:

2.說明filter函式平移停滯在x的最後乙個輸入與濾波器的第乙個係數對齊時。這裡為

1	1	1

5 4 3 2 1

輸出1,到

1 1 1

5 4 3 2 1

輸出12

3.驗證2的觀點,這裡為:

1	2	3	4	5

1 1 1

輸出1,到

1 2 3 4 5

1 1 1

輸出6

4.依然是驗證2的觀點,從

1	2	3	4	5

0 0 0 0 1 1 1 1

輸出1,到

1 2 3 4 5

0 0 0 0 1 1 1 1

輸出5

並且,第4種情況下,通過補0使得所有的1都移到了濾波器抽頭的末尾,這個結果與卷積是相同的。

到這裡,我想大家就明白了二者的區別和關係。

Matlab 在Matlab中如何畫圓

rectangle函式功能 建立二維矩形物件。1.1 rectangle position x,y,w,h 其中以x,y為起始座標開始,畫出長為w,寬為h的矩形。1.2 rectangle curvature a,b 指定矩陣邊的曲率,可以使它從矩形到橢圓不同變化,水平曲率x為矩形寬度的分數,是沿著...

Matlab中的括號()

matlab中經常會用到括號去引用某array或者是cel l的內容,但三者有什麼具體區別呢?中括號用來構建向量 vectors 或者是矩陣 matrices 如 6.9 9.64 sqrt 1 就是乙個有三個元素的向量。11 12 13 21 22 23 是乙個二乘三的矩陣.分號 用來結束一行。中...

MATLAB中fopen fprintf函式的用法

matlab中fopen函式在指定檔案開啟的例項如下 1 fopen 開啟檔案,賦予檔案代號。語法1 fid fopen filename,permission 用指定的方式開啟檔案 fid n n是正整數 表示檔案開啟成功,檔案代號是n.fid 1 表示檔案開啟不成功。fid在此次檔案關閉前總是有...