Elíptico de 12ª ordem para elíptico de 4ª ordem
(Não sou elegível à recompensa.) Tentei produzir um contra-exemplo para a pergunta 3 na oitava, mas fiquei agradavelmente surpreso por não conseguir. Se a resposta para a pergunta 3 for sim, então, de acordo com a Fig 5. da pergunta, pólos e zeros específicos devem ser compartilhados entre um filtro elíptico da ordem 4 e um filtro elíptico da ordem 12, aqui mostrado explicitamente:
Figura 1. Pólos e zeros potencialmente compartilhados entre filtros elípticos de ordem
N= 12 e N= 4, em azul e numerado em ordem crescente de parâmetro α de uma curva paramétrica f( α ).
Vamos projetar um filtro elíptico de ordem 12 com alguns parâmetros arbitrários: ondulação da banda de passagem de 1 dB, ondulação da banda de parada de -90 dB, frequência de corte 0,1234, plano s em vez de plano z:
pkg load signal;
[b12, a12] = ellip (12, 0.1, 90, 0.1234, "s");
ra12 = roots(a12);
rb12 = roots(b12);
freqs(b12, a12, [0:10000]/10000);
Figura 2. A resposta em frequência de magnitude do filtro elíptico de 12ª ordem projetado usando ellip
.
scatter(vertcat(real(ra12), real(rb12)), vertcat(imag(ra12), imag(rb12)));
Figura 3. Pólos (vermelho) e zeros (azul) do filtro elíptico da ordem 12 projetado usando ellip
. Eixo horizontal: parte real, eixo vertical: parte imaginária.
Vamos construir um filtro de ordem 4 reutilizando pólos e zeros selecionados do filtro de ordem 12, conforme a Fig. 1. No caso específico, ordenar os pólos e zeros pela parte imaginária é suficiente:
[~, ira12] = sort(imag(ra12));
[~, irb12] = sort(imag(rb12));
ra4 = [ra12(ira12)(2), ra12(ira12)(5), ra12(ira12)(8), ra12(ira12)(11)];
rb4 = [rb12(irb12)(2), rb12(irb12)(5), rb12(irb12)(8), rb12(irb12)(11)];
freqs(poly(rb4), poly(ra4), [0:10000]/10000);
Figura 4. Resposta em frequência de magnitude do filtro de 4ª ordem que possui todos os polos e zeros idênticos a certos filtros do filtro de 12ª ordem, conforme a Fig. 1. O zoom fornece uma caracterização do filtro: equiripple de banda de passagem de 3,14 dB, - 27,69 dB de banda de paragem dupla, frequência de corte 0,1234.
Entendo que uma banda de passagem de equirripple e uma banda de parada de equirripple com tantas ondulações quanto o número de pólos e zeros permitir é uma condição suficiente para dizer que o filtro é elíptico. Mas vamos tentar se isso é confirmado projetando um filtro elíptico de ordem 4, ellip
com a caracterização obtida na Fig. 3 e comparando os pólos e zeros entre os dois filtros de ordem 4:
[b4el, a4el] = ellip (4, 3.14, 27.69, 0.1234, "s");
rb4el = roots(b4el);
ra4el = roots(a4el);
scatter(vertcat(real(ra4), real(rb4)), vertcat(imag(ra4), imag(rb4)));
Isso contra:
scatter(vertcat(real(ra4el), real(rb4el)), vertcat(imag(ra4el), imag(rb4el)), "blue", "x");
Figura 5. Comparação de locais de pólo (vermelho) e zero (azul) entre um ellip
filtro de 4ª ordem projetado (cruzes) e um filtro de 4ª ordem (círculos) que compartilha certos locais de pólo e zero com o filtro de 12ª ordem. Eixo horizontal: parte real, eixo vertical: parte imaginária.
Os pólos e zeros coincidem entre os dois filtros com três casas decimais, que foi a precisão da caracterização do filtro derivado do filtro da ordem 12. A conclusão é que pelo menos nesse caso em particular, tanto os pólos quanto os zeros do filtro elíptico da ordem 4 e os do filtro elíptico da ordem 12 poderiam ter sido obtidos, pelo menos até uma precisão, distribuindo-os uniformemente nas mesmas curvas paramétricas . Os filtros não eram do tipo Butterworth ou Chebyshev I ou II, pois tanto a banda passante quanto a parada tinham ondulações.
Elíptico de 4ª ordem a elíptico de 12ª ordem
Por outro lado, os pólos e zeros do filtro de 12ª ordem podem ser aproximados a partir de um par de funções contínuas ajustadas aos pólos e zeros do ellip
filtro de 4ª ordem ?
Se duplicarmos os quatro pólos (Fig. 5) e girarmos o sinal das partes reais das duplicatas, obteremos uma espécie de oval. À medida que giramos e giramos a oval, os locais dos pólos pelos quais passamos fornecem uma sequência discreta periódica. É um bom candidato para interpolação periódica limitada por banda, preenchendo zero sua transformada discreta de Fourier (DFT). Do resultado24 polos aqueles com uma parte real positiva são descartados, reduzindo pela metade o número de polos para 12. Em vez dos zeros, seus recíprocos são interpolados, mas, caso contrário, a interpolação é feita da mesma maneira que com os pólos. Começamos com o mesmo ellip
filtro de quarta ordem projetado anteriormente (aproximadamente idêntico à Fig. 4):
pkg load signal;
[b4el, a4el] = ellip (4, 3.14, 27.69, 0.1234, "s");
rb4el = roots(b4el);
ra4el = roots(a4el);
rb4eli = 1./rb4el;
[~, ira4el] = sort(imag(ra4el));
[~, irb4eli] = sort(imag(rb4eli));
ra4eld = vertcat(ra4el(ira4el), -ra4el(ira4el));
rb4elid = vertcat(rb4eli(irb4eli), -rb4eli(irb4eli));
ra12syn = -interpft(ra4eld, 24)(12:23);
rb12syn = -1./interpft(rb4elid, 24)(12:23);
freqs(poly(rb12syn), poly(ra12syn), [0:10000]/10000);
Figura 6. Resposta de frequência de magnitude de um filtro de 12ª ordem com os polos e zeros amostrados das curvas correspondentes às do filtro de 4ª ordem.
Não é um modelo suficientemente preciso da resposta da Fig. 2 para ser útil. A banda de parada se sai muito bem, mas a banda de passagem é inclinada. As frequências da borda da banda estão aproximadamente corretas. Ainda assim, isso mostra potencial, considerando que as curvas paramétricas foram descritas apenas por 4 graus de liberdade cada.
Vamos dar uma olhada em como os pólos e zeros correspondem aos do N= 12 ellip
filtro gerado:
[b12, a12] = ellip (12, 0.1, 90, 0.1234, "s");
ra12 = roots(a12);
rb12 = roots(b12);
scatter(vertcat(real(ra12), real(rb12)), vertcat(imag(ra12), imag(rb12)), "blue", "x");
scatter(vertcat(real(ra12syn), real(rb12syn)), vertcat(imag(ra12syn), imag(rb12syn)));
Figura 7. Comparação de localizações de pólo (vermelho) e zero (azul) entre um ellip
filtro de 12ª ordem projetado (cruzamentos) e um filtro de 12ª ordem (círculos) que foi derivado do filtro de 4ª ordem. Eixo horizontal: parte real, eixo vertical: parte imaginária.
Os pólos interpolados estão um pouco fora, mas os zeros são comparados relativamente bem. Um maiorN como ponto de partida deve ser investigado.
Elíptico de 6ª ordem a elíptico de 18ª ordem
Fazendo o mesmo que acima, mas começando na 6ª ordem e interpolando para a 18ª ordem, mostra uma resposta de frequência de magnitude aparentemente bem comportada, mas ainda tem problemas na banda de passagem quando examinada de perto:
[b6el, a6el] = ellip (6, 0.03, 30, 0.1234, "s");
rb6el = roots(b6el);
ra6el = roots(a6el);
rb6eli = 1./rb6el;
[~, ira6el] = sort(imag(ra6el));
[~, irb6eli] = sort(imag(rb6eli));
ra6eld = vertcat(ra6el(ira6el), -ra6el(ira6el));
rb6elid = vertcat(rb6eli(irb6eli), -rb6eli(irb6eli));
ra18syn = -interpft(ra6eld, 36)(18:35);
rb18syn = -1./interpft(rb6elid, 36)(18:35);
freqs(poly(rb18syn), poly(ra18syn), [0:10000]/10000);
Figura 8. Topo) ellip
filtro gerado de 6ª ordem , Bottom) filtro de 18ª ordem derivado do filtro de 6ª ordem. Ampliada, a banda de passagem tem apenas dois máximos e cerca de 1 dB de ondulação. A banda de parada é quase dupla, com 2,5 dB de variação.
Meu palpite sobre o problema na banda passante é que a interpolação limitada por banda não está funcionando suficientemente bem com os pólos (partes reais dos).
Curvas exatas para filtros elípticos
Acontece que os filtros elípticos para os quais NNz= NNp= Nforneça exemplos positivos para as perguntas 1 e 2. C. Sidney Burrus, Processamento de sinais digitais e design de filtros digitais (Rascunho). OpenStax CNX. 18 de novembro de 2012 fornece os zeros e os pólos da função de transferência de um elemento suficientemente geralNNz= NNp= Nfiltro elíptico em termos do seno elíptico de Jacobi sn( t , k ) . Notar que sn( t , k ) = - sn( - t , k ) ,Burrus Eq. 3.136 pode ser reescrito para zerosszEu, i = 1 ... N Como:
szEu= jk sn( K+ K( 2 i + 1 ) / N, K ),(1)
Onde K é um trimestre de sn( t , k ) sério te 0 ≤ k ≤ 1pode ser visto como um grau de liberdade na parametrização do filtro. Controla a largura da banda de transição em relação à largura da banda de passagem. Reconhecendo( 2 i + 1 ) / N= 2 α (veja a Eq. 2 da pergunta) onde α é o parâmetro da curva paramétrica:
fz( α ) = jk sn( K+ 2 Kα , k ),2)
Burrus Eq. 3.146 fornece os polos do quarto plano superior esquerdo, incluindo um polo real paraN. Pode ser reescrito para todos os pólosseu p, i = 1 ... N com qualquer N Como:
seu p= cn( K+ K( 2 i + 1 ) / N, k ) dn( K+ K( 2 i + 1 ) / N, K ) sn( ν0 0, 1 - k2-----√)× cn( ν0 0, 1 - k2-----√) +jsn( K+ K( 2 i + 1 ) / N, k ) dn( ν0 0, 1 - k2-----√)1 - dn2( K+ K( 2 i + 1 ) / N, K ) sn2( ν0 0, 1 - k2-----√),(3)
Onde dn( t , k ) = 1 - k2sn2( t , k )------------√é uma das funções elípticas de Jacobi. Algumas fontes têmk2como o segundo argumento para todas essas funções e chame-o de módulo. Nós temoske chame de módulo. A variável0 < ν0 0< K´ pode ser pensado como um dos dois graus de liberdade ( k , ν0 0) das curvas paramétricas suficientemente gerais e um dos três graus de liberdade ( k , ν0 0, N)de um filtro elíptico suficientemente geral. Atν0 0= 0 a ondulação da banda passante seria infinita e ν0 0= K´ Onde K´ é o período trimestral das funções elípticas de Jacobi com módulo 1 - k2-----√, pólos seriam iguais a zeros. Por suficientemente geral, quero dizer que existe apenas um grau de liberdade remanescente que controla a frequência da borda da banda passante e que se manifestará como uma escala uniforme de ambas as funções paramétricas da curva pelo mesmo fator. O subconjunto de filtros elípticos que compartilhamfp( Α ) , fz( Α ) , e uma fração irredutível Nz/ Pz= 1, são transformados em outro subconjunto de tamanho infinito em dimensão N com a mudança do grau trivial de liberdade.
Pela mesma substituição que com os zeros, a curva paramétrica para os polos pode ser escrita como:
fp( α ) = cn( K+ 2 Kα , k ) dn( K+ 2 Kα , k ) sn( ν0 0, 1 - k2-----√)× cn( ν0 0, 1 - k2-----√) +jsn( K+ 2 Kα , k ) dn( ν0 0, 1 - k2-----√)1 - dn2( K+ 2 Kα , k ) sn2( ν0 0, 1 - k2-----√).4)
Vamos traçar as funções e as curvas no Octave, para valores de k e ν0 0( v0
no código) copiado do Burrus Exemplo 3.4:
k = 0.769231;
v0 = 0.6059485; #Maximum is ellipke(1-k^2)
K = 1024; #Resolution of plots
[snv0, cnv0, dnv0] = ellipj(v0, 1-k^2);
dnv0=sqrt(1-(1-k^2)*snv0.^2); # Fix for Octave bug #43344
[sn, cn, dn] = ellipj([0:4*K-1]*ellipke(k^2)/K, k^2);
dn=sqrt(1-k^2*sn.^2); # Fix for Octave bug #43344
a2K = [0:4*K-1];
a2KpK = mod(K + a2K - 1, 4*K)+1;
fza = i./(k*sn(a2KpK));
fpa = (cn(a2KpK).*dn(a2KpK)*snv0*cnv0 + i*sn(a2KpK)*dnv0)./(1-dn(a2KpK).^2*snv0.^2);
plot(a2K/K/2, real(fza), a2K/K/2, imag(fza), a2K/K/2, real(fpa), a2K/K/2, imag(fpa));
ylim([-2,2]);
a = [1/6, 3/6, 5/6];
ai = round(a*2*K)+1;
scatter(vertcat(a, a), vertcat(real(fza(ai)), imag(fza(ai)))); ylim([-2,2]); xlim([0, 2]);
scatter(vertcat(a, a), vertcat(real(fpa(ai)), imag(fpa(ai))), "red", "x"); ylim([-2,2]); xlim([0, 2]);
Figura 9. fz( α ) e fp( α ) para o exemplo 3.4 da Burrus, estendido analiticamente para o período α = 0 … 2. Os três pólos (cruzes vermelhas) e os três zeros (círculos azuis, um infinito e não mostrado) do exemplo são amostrados uniformemente em relação aα às α = 1 / 6 , α = 3 / 6 , e α = 5 / 6 ,dessas funções, por Eq. 2 da pergunta. Com a extensão, o recíproco deEu estou( fz( α ) )(não mostrado) oscila muito suavemente, facilitando a aproximação por uma série de Fourier truncada, como nas seções anteriores. As outras funções estendidas periódicas também são suaves, mas não tão fáceis de se aproximar dessa maneira.
plot(real(fpa)([1:2*K+1]), imag(fpa)([1:2*K+1]), real(fza)([1:2*K+1]), imag(fza)([1:2*K+1]));
xlim([-2, 2]);
ylim([-2, 2]);
scatter(real(fza(ai)), imag(fza(ai))); ylim([-2,2]); xlim([-2, 2]);
scatter(real(fpa(ai)), imag(fpa(ai)), "red", "x"); ylim([-2,2]); xlim([-2, 2]);
Figura 10. Curvas paramétricas para o Burrus Exemplo 3.4. Eixo horizontal: parte real, eixo vertical: parte imaginária. Essa visualização não mostra a velocidade da curva paramétrica, de modo que os três pólos (cruzes vermelhas) e os três zeros (círculos azuis, um infinito e não mostrado) não parecem estar uniformemente distribuídos nas curvas, mesmo que estejam, com em relação ao parâmetroα das curvas paramétricas.
O projeto do filtro elíptico pelas fórmulas exatas de pólo e zero fornecidas por Burrus é totalmente equivalente à amostragem da fp( α ) e fz( α ), portanto, os métodos são equivalentes e disponíveis. A questão 1 permanece em aberto. Pode ser que outros tipos de filtros tenham subconjuntos infinitos definidos porfp( α ) e fz( α ) e Nz/ Np. Dos métodos de aproximação das curvas paramétricas elípticas, aqueles que não dependem da forma funcional exata podem ser transferidos para outros tipos de filtro, acho que provavelmente para aqueles que generalizam filtros elípticos, como alguns subconjuntos de filtros gerais de equiripple. Para eles, as fórmulas exatas para pólos e zeros podem ser desconhecidas ou intratáveis.
Voltando à Eq. 2, para ímparN, temos para um dos zeros α = 0,5, que o envia ao infinito por sn( 2K, k ) = 0. Isso não acontece com os pólos (Eq. 4). Atualizei a pergunta para incluir esses zeros (e pólos, no caso) na contagemNNz (ou NNp) Atk = 0, todos os zeros vão para o infinito de acordo com fz( α ), que parece fornecer filtros Chebyshev tipo I.
Acho que a pergunta 3 acabou de ser resolvida e a resposta é "sim". Que, como parece, podemos cobrir todos os casos de filtro elíptico sem estar em conflito comNNz= NNp, com a nova definição desses.