2011-12-06 45 views

回答

10

filter可以處理FIR和IIR系統,而conv有兩個輸入端,並返回他們的卷積。所以conv(h,x)filter(h,1,x)會給出相同的結果。濾波器中的1表示濾波器的遞歸係數僅爲[1]。但是如果您有IIR過濾器,則不能使用convfilter也可以返回過濾器狀態,以便可以在後續調用中使用它,而不會產生過濾器瞬變。

詳見convfilter文檔。

+0

所以,據我從我讀了它,如果它是一個IIR系統,我使用'conv',我會得到正確的輸出只爲樣本等於h'的'長度的量。那是對的嗎? – nikos

+2

考慮濾波器H(z)= [1 - 2z^-1 + z^-2]/[1 - z^-1]'。如果你將輸入設置爲'x = [1 0 0 0]',你將得到'conv([1,-2,1],x)'和' [1 -1 0 0]'with'filter([1,-2,1],[1,-1],x)'。 – mtrw

+4

實際上'conv(b,x)'和'filter(b,1,x)'不是**完全相同。 'filter'會給你一個與'x'長度相同的輸出,而'conv'會給出長度爲'length(x)+ length(b)-1'的輸出。 – LWZ

8

conv(x,b)執行完全卷積。結果的長度爲length(x)+ length(b)-1filter(b,[1],x)給出與x相同長度的輸出。它不刷新過濾器的延遲線。

假設x是一個行向量。製造x0 = [x zeros(1,length(b)-1)];現在filter(b,[1],x0)conv(x,b)相同。這是因爲附加的0用於刷新延遲線。

哪一個更合理?這取決於你需要什麼!

相關問題