Existem vantagens em usar uma abordagem de janela em relação aos algoritmos Parks-McClellan (abreviado aqui como PMcC) ou Least Squares para o design de filtros FIR de um filtro passa-baixo? Suponha com o poder computacional de hoje que a complexidade dos algoritmos em si não é um fator.
Esta questão não está comparando o PMcC com os mínimos quadrados, mas especificamente se existe algum motivo para usar qualquer técnica de design de janela FIR em vez desses algoritmos, ou as técnicas de janelas para filtrar o design são obsoletas por esses algoritmos e relegadas a fins didáticos?
Abaixo está uma comparação em que eu comparei uma janela de Hamming à minha abordagem de design preferida com a Least-Squared, usando o mesmo número de torneiras. Ampliei a banda passante na abordagem Menos Quadrada para corresponder à do Hamming Window e, nesse caso, ficou bem claro que o Menos Esquadrado teria um desempenho superior (oferecendo significativamente mais rejeição de banda de parada). Eu não fiz isso com todas as janelas, o que me leva à pergunta se você poderia superar o PMcC e os mínimos quadrados, ou se existem outros aplicativos para um filtro passa-baixo FIR, onde uma abordagem de janela seria preferida?
fonte
firpm()
efirls()
.Respostas:
Concordo que o método de design do filtro de janelas não é mais um dos métodos de design mais importantes, e pode realmente ser o caso de estar super-representado nos livros tradicionais, provavelmente devido a razões históricas.
No entanto, acho que seu uso pode ser justificado em determinadas situações. Não concordo que a complexidade computacional não seja mais um problema. Isso depende da plataforma. Sentados em nosso computador desktop e projetando um filtro, de fato não precisamos nos preocupar com a complexidade. No entanto, em plataformas específicas e em situações em que o design precisa ser realizado quase em tempo real, a complexidade computacional é um problema e uma técnica simples de design subótimo será preferida a uma técnica ideal que é muito mais complexa. Como exemplo, uma vez trabalhei em um sistema para formação de feixe em que o filtro (formador de feixe) precisaria ser redesenhado em tempo real, e, portanto, a complexidade computacional era realmente um problema.
Também estou convencido de que, em muitas situações práticas, não precisamos nos preocupar com a diferença entre o design ótimo e o subótimo. Isso se torna ainda mais verdadeiro se precisarmos usar aritmética de ponto fixo com coeficientes quantificados e resultados quantificados de operações aritméticas.
Outra questão é a estabilidade numérica dos métodos ideais de design de filtro e suas implementações. Já deparei com vários casos em que o algoritmo Parks-McClellan (devo dizer, a implementação que usei) simplesmente não converge. Isso acontecerá se a especificação não fizer muito sentido, mas também pode ocorrer com especificações totalmente razoáveis. O mesmo vale para o método de design dos mínimos quadrados, onde um sistema de equações lineares precisa ser resolvido, o que pode se tornar um problema mal condicionado. Nessas circunstâncias, o método de janelas nunca o decepcionará.
Uma observação sobre sua comparação entre o método da janela e o design dos mínimos quadrados: Eu não acho que essa comparação mostre qualquer superioridade geral do método dos mínimos quadrados sobre o método de janelas. Primeiro, você parece observar a atenuação da banda de parada, que não é uma meta de design para nenhum dos dois métodos. O método de janelas não é ideal em nenhum sentido, e o design dos mínimos quadrados minimiza a energia da banda de parada e não se importa com o tamanho da ondulação da banda de parada. O que pode ser visto é que a borda da banda passante do design da janela é maior que a do design dos mínimos quadrados, enquanto a borda da banda de parada é menor. Consequentemente, a largura da banda de transição do filtro projetada pela janela é menor, o que resultará em ondulações mais altas da banda de parada. A diferença na largura da banda de transição pode ser pequena, mas as propriedades do filtro são muito sensíveis a esse parâmetro. Não há dúvida de que o filtro de mínimos quadrados supera o outro filtro quando se trata de interromper a energia da banda, mas isso não é tão fácil de ver quanto o tamanho da ondulação. E a questão permanece: se essa diferença realmente faria diferença em uma aplicação prática.
Deixe-me mostrar-lhe que essas comparações geralmente podem ser feitas da maneira que se deseja. Na figura abaixo, comparo um filtro passa-baixo ideal para mínimos quadrados projetado com a função Matlab / Octave
firls.m
(azul) com um filtro passa-baixo projetado com o método window usando uma janela Kaiser (vermelho).A partir da figura, pode-se até concluir que o filtro projetado pela janela é um pouco melhor que o filtro ideal de mínimos quadrados. É claro que isso não faz sentido, porque nem definimos "melhor", e o filtro de mínimos quadrados deve ter um erro de aproximação ao quadrado médio menor. No entanto, você não vê isso diretamente na figura. De qualquer forma, isso serve apenas para apoiar minha afirmação de que é preciso ter muito cuidado e clareza ao fazer essas comparações.
Em suma, além de ser útil aprender para os alunos do DSP por razões puramente didáticas, acho que, apesar dos avanços tecnológicos desde a década de 1970, o uso do método de janelas pode ser justificado em certos cenários práticos, e não acho que isso mude muito em breve.
fonte
Os filtros Windinc Sinc podem ser gerados de forma adaptável em tempo real em processadores com potência insuficiente para executar o filtro FIR associado. Os filtros Sinc com janelas podem ser gerados em tempo limitado limitado.
A geração de alguns filtros Sinc com janelas simples pode ser completamente descrita (e inspecionada quanto a malware etc.) em algumas linhas de código , versus o uso cego de alguma caixa de ferramentas opaca.
É necessário um conhecimento matemático menos pré-requisito para explicar um filtro Sinc com janela, em comparação com o necessário para codificar um gerador de filtro PMcC do zero.
As ondulações iguais na resposta de frequência de um filtro PMcC podem causar artefatos no domínio do tempo que são diferentes (e talvez menos desejáveis) do que os artefatos produzidos por um simples filtro de janela.
fonte
f=[0 0.49 0.51 1]; a=[1 1 0 0]; b=remez(300,f,a)
que também roda no Octave. Uma explicação é que, com filtros muito íngremes, as ondulações podem ser regulares o suficiente para se parecer com um cosseno. O equivalente no domínio do tempo do domínio da frequência cosseno seria os dois ecos impulsivos.Mostrarei aqui um benefício de um design com janelas e um truque para obter o mesmo benefício de Parks – McClellan.
Para filtros de meia banda, quarto de banda etc., a janela retém os zeros no domínio do tempo da função sinc dimensionada, que é o filtro passa-baixa ideal prototípico. Os zeros acabam nos coeficientes, reduzindo o custo computacional dos filtros. Para um filtro de meia banda, o design da janela fornece um filtro com todos os coeficientes pares 0, exceto o coeficiente intermediário (que também é considerado par):
Figura 1. A função Sinc esticada horizontalmente por um fator de 2 é o filtro passa-banda de meia banda prototípico com um ganho de 2, adequado para a ampliação por um fator de 2.
No entanto, Parks-McClellan / Remez pode ser enganado para oferecer os mesmos benefícios, projetando-o usando um filtro com um número par de toques com apenas uma banda de aprovação de ganho de unidade definida. Os coeficientes obtidos são usados como coeficientes ímpares de um filtro mais longo. O coeficiente médio do filtro mais longo é definido como 1 e os outros coeficientes pares como 0. Esse filtro tem um ganho de 2 na banda de passagem e ondulação simétrica nas bandas de passagem e parada. Em Python:
Figura 2. Coeficientes do filtro de meia banda projetados indiretamente usando Python
scipy.signal.remez
.Figura 3. Gráfico de resposta em frequência de magnitude do filtro de meia banda projetado indiretamente usando
scipy.signal.remez
.fonte