filter

Filtro digital unidimensional: aplica uma equação de diferenças a um sinal.

Categoria: Language Fundamentals > Data Types

Sintaxe

y = filter(b, a, x)

Filtra x com numerador b e denominador a.

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

Também retorna o estado final do filtro.

y = filter(b, a, x, zi)

Parte do estado inicial zi.

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

Filtra ao longo da dimensão dim.

Descrição

A saída obedece a a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... - a(2)*y(n-1) - .... Com a = 1 o filtro é FIR, como uma média móvel; com outros valores de a o filtro é recursivo (IIR) e a resposta a um impulso pode durar indefinidamente.

O filtro é causal: y(n) usa apenas entradas atuais e passadas, o que introduz atraso. As amostras anteriores à primeira são tomadas como zero, a menos que zi seja dado.

Argumentos de entrada

b
Vetor de coeficientes de alimentação direta (numerador).
a
Vetor de coeficientes de realimentação (denominador). Se a(1) não for 1, todos os coeficientes são divididos por ele.
x
Sinal de entrada: vetor, ou matriz filtrada coluna a coluna.
zi
Condições iniciais (atrasos), de comprimento max(length(a), length(b)) - 1.

Argumentos de saída

y
Sinal filtrado, do mesmo tamanho de x.
zf
Valores finais dos atrasos, utilizáveis como zi para continuar filtrando o próximo bloco de dados.

Exemplo

Média móvel e filtro recursivo

filter([1 1 1]/3, 1, [3 6 9 12 15])
filter(1, [1 -0.5], [1 0 0 0])
Saída
ans = 1×5

     1     3     6     9    12
ans = 1×4

    1.0000    0.5000    0.2500    0.1250

Veja também

conv movmean deconv cumsum