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
zipara 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