MATLAB

2011-12-06 44 views
15

arasındaki filtre ve konv arasındaki fark Ben bir MATLAB sorusu var: Bir LTI sisteminin çıktı hesaplamak için çalışıyorum ve iş için uygun olması beklenen iki farklı MATLAB işlevinin karşısında geldim, filter ve conv. İkisi arasındaki fark nedir? conv iki giriş alır ve kıvrım döndürür ikenMATLAB

cevap

10

filter, FIR ve IIR sistemleri işleyebilir. Yani conv(h,x) ve filter(h,1,x) aynı sonucu verirdi. Filtredeki 1, filtrenin tekrarlayıcı katsayılarının sadece [1] olduğunu gösterir. Ancak bir IIR filtreniz varsa, conv'u kullanamazsınız. filter, filtre durumlarını da döndürebilir, böylece filtre geçici durumlarına neden olmadan sonraki aramalarda kullanılabilir.

detaylar için conv ve filter belgelere bakın.

+0

öylesine kadarıyla ben okuduklarını aldım gibi, ben sadece örneklerin bir miktarda h'' uzunluğuna eşittir uygun çıktıyı alacak. Bu doğru mu? – nikos

+2

H H (z) = [1 - 2z^-1 + z^-2]/[1 - z^-1] 'filtrelerini göz önünde bulundurun. Eğer girdiyi 'x = [1 0 0 0] 'olarak ayarlarsanız, sonuçları [1 -2 1 0]' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '[' '] ile alırsınız. [1 -1 0 0] 'ile birlikte filtre ([1, -2,1], [1, -1], x)'. – mtrw

+4

Aslında 'conv (b, x)' ve 'filtre (b, 1, x)' tam olarak ** aynı değil. '' filter' 'x' ile aynı uzunluğa sahip bir çıktı verecektir,' 'conv'' length (x) + length (b) -1' uzunluğunda bir çıkış verecektir. – LWZ

8

conv(x,b) tam konvolüsyonu gerçekleştirir. Sonucun uzunluğu length(x)+ length(b)-1. filter(b,[1],x), x'dan aynı uzunluğa sahip bir çıktı verir. Filtrenin gecikme çizgisini temizlemez.

x bir sıra vektörü varsayalım. x0 = [x zeros(1,length(b)-1)] yapın; şimdi filter(b,[1],x0), conv(x,b) ile aynıdır. Bunun nedeni, ek 0’lar gecikme çizgisini temizlemek için kullanılır.

Hangisi daha mantıklı? İhtiyacın olan şeylere bağlı! bir IIR sistemidir ve ben `conv` kullanırsanız