O MATLAB filtfilt
faz uma filtragem para frente e para trás, ou seja, filtra, inverte o sinal, filtra novamente e depois inverte novamente. Aparentemente, isso foi feito para reduzir as defasagens de fase? Quais são as vantagens / desvantagens de usar essa filtragem (acho que resultaria em um aumento efetivo na ordem dos filtros).
Seria preferível usar filtfilt
sempre em vez de filter
(ou seja, apenas filtragem direta)? Existem aplicativos onde é necessário usá-lo e onde não deve ser usado?
Respostas:
Você pode vê-lo melhor no domínio da frequência. Se for a sequência de entrada e h [ n ] for a resposta de impulso do filtro, o resultado da primeira passagem do filtro seráx[n] h[n]
com e H ( e j ω ) o Fourier se transforma de x [ n ] e h [ n ] , respectivamente. A reversão do tempo corresponde à substituição de ω por - ω no domínio da frequência, portanto, após a reversão do tempo, obtemosX(ejω) H(ejω) x[n] h[n] ω −ω
que, após a reversão do tempo, finalmente fornece o espectro do sinal de saída
Em suma:
se você possui ou precisa de um filtro IIR e deseja distorção de fase zero, E o atraso no processamento não é um problema, esse método é útil
se o atraso no processamento for um problema, você não deve usá-lo
se você tiver um filtro FIR, poderá calcular facilmente uma nova resposta do filtro FIR equivalente a usar esse método. Observe que, com os filtros FIR, uma fase exatamente linear sempre pode ser realizada.
fonte
maximum-aposteriori-estimation
. Você poderia renomeá-lomaximum-a-posteriori-estimation
? Por engano, esqueci o-
depois doa
. Obrigado.Achei este vídeo muito útil (ele explica a resposta de Matt).
Aqui estão algumas idéias-chave do vídeo:
x[n]
, filtra-o, inverte o resultado, filtra-o novamente e inverte-o novamente (a etapa de reversão do tempo exige que todos os dados estejam disponíveis).fonte