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
MATLAB
cevap
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.
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
ö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
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
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