Projeto de filtro distribuindo pólos e zeros em curvas paramétricas


17

Um N th ordem Butterworth filtro passa-baixo de frequência de corte ωc pode ser concebido através da distribuição de pólos uniforme em relação ao parâmetro sobre um plano s paramétrico curva , que é um semicírculo:N0<α<1f(α)=ωcei(π/2+πα)

Filtro de Butterworth
Figura 1. Pólos de um filtro Butterworth de 6ª ordem (CC BY-SA 3.0 Fcorthay)

É notável que a mesma curva paramétrica possa ser usada para qualquer grau de filtro fornecendo a função de transferência não normalizada:N

(1)H(s)=k=1N1sf(2k12N),

e que o filtro resultante é sempre um filtro Butterworth. Ou seja, nenhum outro filtro com o mesmo número de pólos e zeros possui um número maior de derivadas de fuga da magnitude da resposta em frequência nas frequências e . O conjunto de filtros Butterworth que possuem a mesma frequência de corte forma um subconjunto de filtros Butterworth no qual a curva paramétrica é exclusiva. O subconjunto é infinito, pois não tem limite superior.ω = ω c f ( α ) Nω=0 0ω=ωcf(α)N

De maneira mais geral, não contando pólos e zeros no infinito, a menos que sejam originários das curvas paramétricas, qualquer filtro com pólos e zeros , com um número inteiro e uma fração não negativa de números inteiros, tem uma função de transferência não normalizada: N N z N N z / N pNNpNNzNNz/Np

2)H(s)=k=1NNz(s-fz(2k-12NNz))k=1NNp(s-fp(2k-12NNp)),

onde e são curvas paramétricas que podem descrever a distribuição de pólos e zeros no limite .fp(α)fz(α)N

  • Pergunta 1: Que outros tipos de filtro além de Butterworth, definidos por algum critério de otimização, têm subconjuntos infinitos, cada um definido pela fração e pelo par de curvas paramétricas e por Eq. 2, com os filtros diferindo apenas por ? Nz/Npfp(α)fz(α)NFiltros Chebyshev tipo I , sim; com eles, os pólos residem na metade de uma elipse com ângulo paramétrico . Os filtros Butterworth e tipo I e tipo II Chebyshev são casos especiais de filtros elípticos . Só para esclarecer, por "subconjuntos infinitos" não quero dizer um número infinito de subconjuntos, mas subconjuntos de tamanho infinito.α
  • Pergunta 2: Os filtros elípticos que não são de Butterworth e não de Chebyshev possuem subconjuntos infinitos?
  • Pergunta 3: Todo filtro elíptico está em um subconjunto tão infinito?

Se o conjunto infinito de todos os filtros elípticos é uma união de subconjuntos infinitos mutuamente exclusivos e exaustivos de filtros elípticos, cada um definido por uma única curva paramétrica para colocação de pólos e uma única curva paramétrica para colocação de zeros e uma fração irredutível do número de zeros a pólos, a otimização numérica para obter filtros elípticos poderia ser feita otimizando as curvas paramétricas em vez dos filtros para qualquer ordem específica. As curvas ideais podem ser reutilizadas para várias ordens de filtro, mantendo a otimização. O "se" acima é o motivo pelo qual faço as perguntas 2 e 3. A pergunta 1 trata de estender a abordagem a outros critérios de otimização.

Certamente plotagens com pólo zero de filtros elípticos parecem ter algumas curvas subjacentes:

Filtro elíptico
Figura 2. Magnitude logarítmica de um filtro passa-baixo elíptico no plano s. Pontos brancos são pólos e pontos pretos são zeros.

Uma vantagem é aquela por Eq. 1, certos valores de e, portanto, certas posições de pólo e zero devem ser compartilhados entre vários filtros:α

grau alfa e filtro
Figura 5. Os valores obtidos pelo parâmetro curva para diferentes graus de filtro . Observe como, para várias ordens de filtro, temos, por exemplo, ou eαNα=0,5α=0,25α=0,75.

Em particular, para um filtro que possui pólos ou zeros, todos eles também aparecem em filtros que possuem iguais onde é qualquer número inteiro positivo.3 n N nN3nNn


Demonstrando humor extremamente seco, por solicitação do usuário A_A, vi o lemniscate de Bernoulli como um exemplo de curva paramétrica no plano s:

Lemniscate of Bernoulli
Figura 4. Lemniscato de Bernoulli

A seguinte curva paramétrica fornece a metade esquerda do lemniscato de Bernoulli, com o parâmetro e começando e terminando em s = 0 :0 0<uma<1s=0 0

f(α)=-2pecado(πα)porque2(πα)+1+Eu2pecado(πα)porque(πα)porque2(πα)+1

Usando esta curva paramétrica para os pólos, gostaríamos de comparar, de alguma forma, entre diferentes as respostas de frequência de magnitude obtidas pela Eq. 1. Uma maneira é olhar para o N º de raiz | H ( i ω ) | 1 / N da resposta em frequência de magnitude. Também nos permite ver como são as coisas em N :NN|H(Euω)|1/NN

Resposta de frequência de enésima raiz de magnitude
Figura 3. ° raiz da resposta de frequência de uma magnitude N filtro -pole que tem os seus pólos distribuídos sobre o lemniscate de Bernoulli uniforme em relação ao parâmetro da curva. Em frequências mais altas do que as mostradas, todos os gráficos seguem uma inclinação de -6 dB / oct (-20 dB / década). No limite N ∞, há uma descontinuidade na derivada do gráfico em ω = 0 s = 0, quando o lemniscato (duas vezes) cruza o eixo imaginário do plano s nesse ponto.NNNω=0 0s=0 0

O limite do ° de raiz a magnitude da função de transferência (Eq. 1) como N foi calculada como:NN

(3)limN|H(s)|1/N=0 01|1s-f(α)|dα=e-0 01registro(|s-f(α)|)dα,

onde representa uma integral do produto que pode ser calculada com o logaritmo natural, a integração e a função exponencial. Como na integração, não havia expressão simbólica para a integral que tivesse que ser avaliada numericamente para o lemniscato de Bernoulli. Em suma, as respostas de frequência de magnitude resultantes parecem bastante inúteis para essa curva paramétrica "selecionada aleatoriamente".


O usuário Matt L. mencionou os filtros Lerner. O que eu descobri sobre eles, com uma leve interpretação:

H(s)=k=1mBk(s+uma)(s+uma)2+bk2B1=1/2,Bm=(-1)m+12BEu=(-1)k+1 para k=2,...,m-1,

com pólos tal que b m - b m - 1 = b 2 - b 1 = 1a+ibkpara todos os3<k<m-1. Parece que esses pólos, embora distribuídos em uma linha, não são os pólos do filtro completo, mas os pólos das seções paralelas. Não confirmei quais são os pólos do sistema completo ou se os filtros Lerner são, em algum sentido útil, ideais. Referência:CM Rader, B. Gold, Nota técnica 1965-63 do MIT Lincoln Laboratory,Digital Filter Design Techniques, 23 de dezembro de 1965.bm-bm-1=b2-b1=12(bk-bk-1)3<k<m1


4
Meu inglês está instável esta manhã, então não entendo direito o que você está tentando dizer, mas se trata de mais de uma maneira de calcular um filtro elíptico, sugiro encontrar o livro de Lutovac, no dicionário elíptico da wikipedia. notas de filtro (também Dimopoulos), é bastante revelador: você pode ter 7 maneiras de criar um filtro elíptico. Se não foi isso que você quis dizer, ignore meu comentário.
um cidadão preocupado

2
Os filtros Lerner têm todos os seus pólos em uma linha paralela ao eixo imaginário. Eles têm a vantagem de ter uma resposta de fase aproximadamente linear.
Matt L.

2
O filtro completo; mas se os pólos de todas as seções paralelas estiverem na mesma linha, também o filtro completo terá todos os seus pólos nessa linha. Você está certo sobre a referência. Há aquela nota técnica de Rader e Gold a que costumo me referir.
Matt L.

1
OK, para qual diário estamos indo? : D Existe um princípio orientador nisso? Por exemplo, você está procurando um possível paramétrico com desempenho melhor que o elíptico em algum aspecto? (por exemplo, banda de transição vs ondulação). Outra família que pode ser "interessante" é o cycloids * ... Mas, sem um "princípio de ordem", não podemos chamar de "pior, mau, bom, melhor" qualquer um deles :)
um_um

2
O segmento de comentários ficou muito longo. No entanto, apenas jogando em um paramétrico local para filtros de wavelet Daubechies ams.org/journals/proc/1996-124-12/S0002-9939-96-03557-5/…|4y(1y)|=1
Laurent Duval

Respostas:


6

Ao longo da resposta, usarei as notações matemáticas , isto é, o equivalente matemático de expressar a resposta de magnitude de um filtro no domínio da frequência. Para isso, será usado em vez de j ω , para refletir melhor a pergunta de @ Olli sobre como encontrar uma curva paramétrica matemática para aproximar os filtros. Como esse não é o design do filtro, a frequência do canto é normalizada para unidade, portanto x em vez de ω / ω p .xjωxω/ωp


Não tenho certeza se esta é a resposta que você está procurando, mas qualquer filtro pode ser representado através da função de transferência genérica:

H2(x)=11+ϵp2R2(x)

onde eR(x)é a função de atenuação característica. Apé a banda passante de atenuação / ondulação em dB, mas também pode estar na faixa de rejeição para Cauer / elíptica, inverso Pascal, ou inversa Chebyshov (aka "Chebyshov Tipo II"). Estes últimos são expressos como:ϵp=10Ap/101R(x)Ap

H2(x)=11+1ϵs2TN2(x)

Para Butterworth, como você viu:

R(x)=xN

para Chebyshev é , ou os polinômios de Chebyshev ( cos / a c o s para x 1 e cosh / a c o s h para x > 1 ), para elíptico é:R(x)=TN(x)cosacosx1coshacoshx>1

R(x)=cd(NK1Kcd1(x,k),k1)

No livro de Lutovac, existem algumas representações extremamente simplistas através de funções equivalentes exatas para os filtros elípticos. Por exemplo, a função de transferência de 2ª ordem pode ser representada com precisão por meio de:

R(x)=(1k2+1)x21(1k21)x2+1

onde a única dependência é do módulo .k

Esses são os tipos conhecidos, para tipos menos conhecidos, por exemplo, Legendre, , onde P N ( x ) são os polinômios de Legendre, para filtros Pascal existe a versão deslocada e normalizada do Pascal polinômios, que é:R(x)=PN(x)PN(x)

(N+12x+N12N)

A lista continua. Alguns são aproximados de maneira diferente, por exemplo, Gaussiano é , que é expandido com a série MacLaurin, aproximadamente o mesmo para Bessel, que é expandido da expressão Laplace exp ( - s ) para os termos do denominador como:|H(x)|2=exp(x2)exp(s)

ai=(2N1)!2Nii!(Ni)!

Também existem maneiras mais exóticas de deduzir a função de transferência, como Papoulis (Optimum L) e Halpern, que usam os polinômios de Legendre para integrar a resposta, de modo que a função de transferência diminua monotonicamente com alta seletividade de filtro. Para Papoulis, é:

R(x2)=i=12x21(i=0kaiPi(x))2

onde é ( N - 1 ) / 2 , e um i são alguns termos inteligentemente escolhidos, dependendo se N , ou k , ambos, são ímpar / par.k(N1)/2aiNk

Como observado, todos estes não usam o domínio da frequência para representação, pois em é o matemático x , real, não imaginário j ω . A resolução das raízes pode ser feita simplesmente encontrando os polos (e zeros) para a função de transferência ao substituir x por j ω ., Descobrindo H ( s ) H ( - s ) e selecionando o polinômio de Hurwitz, ou simplesmente encontrando as raízes da expressão matemática em xxxjωxjωH(s)H(s)x(veja o link no 2º comentário abaixo). Isso produzirá as raízes rotacionadas em 90 graus, o que significa que tudo o que há a fazer é alternar as partes reais e imaginárias entre si e depois selecionar o lado direito.

Essa resposta está próxima do que você estava procurando?


Eu acho que, neste momento, é importante dizer que os filtros não existem porque as pessoas estavam jogando dardos em um mapa para marcar os pólos; elas vieram depois de considerações cuidadosas sobre o objetivo que tinham em mente.

Por exemplo, e com qualidade cada vez maior, os filtros Butterworth surgiram porque havia a necessidade de um filtro simples de projetar, com atenuação monotonicamente crescente. Linkwitz-Riley nada mais é do que Butterworth em disfarce (inteligente), de modo que somar uma passagem baixa e uma passagem alta com a mesma frequência de canto resulta em uma resposta simples, útil para aplicações de áudio.

O Chebyshev (I e II) foi projetado para ter uma melhor atenuação, ao custo de ondulações na banda passante ou parada. Legendre, ultra-esférico, Pascal (e possivelmente outros) minimizam a ondulação, melhorando assim o atraso do grupo, ao custo de atenuações ligeiramente reduzidas.

Papoulis e Halpern foram desenvolvidos como uma mistura entre a ondulação da banda passante e a atenuação monotonicamente crescente, melhorando a atenuação na freqüência da esquina, ao custo de uma queda na banda passante.

Os filtros Cauer / Elíptico utilizam ondulação nas faixas de passagem e de parada, a fim de minimizar a ordem necessária para a mesma ou melhor atenuação.

Todos estes estão no domínio da frequência, como a maioria dos filtros. Por outro lado, os filtros de Bessel surgiram devido à necessidade de se aproximar de um atraso analógico; portanto, convergem para medida que a ordem aumenta, enquanto os filtros gaussianos foram criados para superação zero, aproximando exp ( - x 2 ) com ordem crescente.exp(jω)exp(x2)

É claro que, como alguém sugeriu, você também pode polvilhar postes e ver o que sai, talvez configurá-los como uma estrela ou como um padrão de pente de mel, escolha seu lemniscate favorito, mas não é esse o caminho para isso, se você quiser um filtro fora disso. Claro, você pode obter uma resposta exótica que pode até ser aplicável quem sabe onde, como um caso único em um milhão, mas esse é realmente apenas um caso específico. O caminho a seguir é primeiro impor um objetivo de design e ver como esse objetivo pode ser alcançado em termos de um filtro fisicamente realizável. Mesmo que isso signifique criar um filtro de quem sabe onde aplicável. :-)


Dada a resposta recente do @Olli, considere o caso simples de um filtro Butterworth, projetado para, por exemplo 0.9@fp=1, 0.1@fs=5. Os cálculos são mais ou menos assim:

Ap=20log10(0.9)=0.91515 dBAs=20log10(0.1)=20 dBϵp=10Ap/101=0.48432ϵs=10As/101=9.94987F=fsfp=51=5N=logϵsϵplogF=1.878

é calculado como arredondado para cima, então N = 2 . Isso significa que, se você corresponder a resposta do filtro à banda passante, obterá uma atenuação mais alta no stopband @fs. Usando a primeira fórmula acima, a atenuação @ fs é:NN=2

H(fs)=11+0.48432252N=0.08231<0.1

Se você tiver que corresponder à faixa de parada para ter 0,1@fs, aplique uma correção de frequência:

ωscale=(ϵsϵp)1/Nfpfs=9.949870.5=0.9065H(5ωscale)=0.1

Portanto, a escala pode variar de 1 a 0,9065 e você terá todas as possibilidades infinitas entre os dois extremos. Consegues fazê-lo? Sim. Vale a pena? Mesmo se você encontrar um argumento ou dois, a resposta geral ainda é não. Como tudo isso foi possível? Como a resposta inicial do filtro Butterworth já foi obtida, você sabia de antemão que tinha uma expressão analítica para um filtro que possui atenuação de frequência monotonicamente decrescente, o que leva a descobrir os pólos do denominador da função de transferência, que acontecem com deite-se em um círculo com ângulos iguais.ωscale10.9065


Dada a resposta recente do @Olli, há algumas coisas que precisam ser explicadas. Primeiro, tudo isso é sobre design de filtro, não importa como você o veja: do ponto de vista matemático ou de realização física.

Se for matemático, há uma parte interessante sobre a teoria, como obter uma ordem diferente do mesmo filtro sem a necessidade de redesenhar o filtro original.

Mas, do ponto de vista da realização física, todo o processo implica algum trabalho extra e desnecessário, que (deve) levar ao mesmo resultado, e essa é precisamente a parte do aumento / diminuição da ordem do filtro para obter um novo. Meus argumentos são os seguintes.

Qualquer filtro, em sua essência, serve para filtrar frequências desnecessárias, sejam elétricas, mecânicas ou outras quantidades físicas. O objetivo deles é modificar um espectro (ou atraso de grupo ou resposta de tempo). Se houver a necessidade de um dispositivo desse tipo, ele não pode ser projetado simplesmente colocando um filtro de qualquer tipo "basta colocá-lo lá, ele filtrará as coisas"; seu design é, na maioria das vezes, bastante envolvido. Mas todo esse processo precisa começar com os requisitos. Ou seja, primeiro deve haver um objetivo específico: "filtrar tudo acima de " ou "deixar passar apenas a luz infravermelha", ou algo semelhante, que começa determinando primeiro os parâmetros com os quais esse filtro deve trabalhos.100 Hz

Como um exemplo rápido, se houvesse a necessidade de filtrar frequências abaixo de e acima de 3000  Hz , não seria possível simplesmente inserir um filtro passa-banda com essas frequências de canto, atenuações também devem ser especificadas, seja ondulação na banda passante ou a banda de parada, ou ambas, é necessária ou aceita, seja a fase linear ou não, como o atraso do grupo afetará tudo isso etc. Então, antes de tudo, existem parâmetros específicos pelos quais o filtro precisa ser projetado.300 Hz3000 Hz

Depois que os parâmetros são especificados, como o filtro será projetado? Vamos supor que haja a necessidade de um filtro passa-baixo elíptico de 12ª ordem e que seja possível aumentar um filtro de baixa ordem para um filtro de alta ordem (consulte a resposta de @ Olli). Digamos que o processo de transformar uma 4ª ordem em uma 12ª ordem seja impecável, que existe uma maneira de especificar os parâmetros de design para o filtro de 4ª ordem de forma que, após a transformação, a 12ª ordem resultante acabe satisfazendo essas condições. "Pensamento premeditado", se você quiser.

A questão que surge é a seguinte: como será projetado o filtro de 4ª ordem? A resposta só pode ser através das formas conhecidas de projetá-lo. E, se houver outros métodos, que virão ou ainda serão inventados, eles teriam que ser aplicados, primeiro, para projetar esse filtro de quarta ordem. Somente depois a 12ª ordem pode ser calculada. Como assumido desde o início, mesmo com um processo de transformação sem falhas, isso significaria apenas que o filtro resultante, a 12ª ordem, para o qual todo o design tenta convergir, precisa de duas etapas de design: uma, para a quarta ordem e a segunda , para a 12ª ordem, tornando todo o processo onerado desnecessariamente, pois o filtro de 12ª ordem poderia ter sido simplesmente projetado, em primeiro lugar, com o método usado para a 4ª ordem.

Vamos um pouco mais longe e vamos assumir um pouco mais. Os pólos resultantes da 12ª ordem estariam em uma elipse e os zeros no eixo imaginário. As distâncias entre eles seriam definidas com precisão pelas funções elípticas subjacentes que governam os filtros elípticos. Suponha que exista uma maneira de definir essas curvas, como espera @Olli, de tal maneira que seja possível projetar prontamente um filtro desde o início, de uma só vez, simplesmente usando essas curvas (paramétricas ou não) pelas quais todas as a colocação do poste está concluída. Por enquanto, tudo bem. Mas essas curvas teriam que ser primeiro calculadas, e os parâmetros pelos quais elas se desenrolam são exatamente os que são usados ​​para o design do filtro, os mesmos que gerariam o filtro por outros métodos, conhecidos ou ainda desconhecidos. Além disso, os cálculos ainda precisam ser feitos e, muito provavelmente, as definições subjacentes a essas curvas paramétricas teriam que ser elípticas, de uma maneira ou de outra, ou nenhum filtro elíptico sairia dela [nota nº 1]. O que significa que todo o processo seria apenas mais um método de design para os filtros elípticos, uma vez que os pólos do filtro elíptico já fecharam expressões de forma.

Não me interpretem mal. Se um filtro pode ser projetado de uma maneira, da mesma maneira que pode ser projetado de outra. É apenas uma daquelas maneiras "ainda a serem conhecidas". Bravo para o inventor. Mas se esse método de design implica etapas extras para convergir para os mesmos resultados que seriam necessários para um método diferente, não parece uma abordagem viável. E observe: eu não estou usando nomes ou rótulos descritivos quando estou falando sobre os designs de filtro, apenas nomes genéricos, porque realmente não importa qual método você está usando, desde que os resultados estejam corretos e o método não seja ' t onerando para o processo de design.

[nota 1]: Simplesmente seguir uma curva genérica para colocar os pólos não é suficiente, e darei dois exemplos, relacionados aos filtros Butterworth, que colocam os pólos em um círculo com ângulos equidistantes. Os filtros Chebyshev tipo I têm os pólos colocados em uma elipse, com os ângulos de Butterworth, mas projetados no eixo imaginário até que interceptem a elipse. A modificação da distância entre os pólos resultará em um comportamento que não é um equiripple, tornando o filtro um tipo que não é de Chebyshev. Da mesma forma, os pólos do filtro elíptico Q-mínimo são dispostos em um círculo subjacente, mas isso não significa que seja um Butterworth (mesmo que a ondulação seja o mínimo possível para um filtro elíptico), porque possui distâncias desiguais entre os ângulos . Para o último, aqui '

Elíptico min-Q vs Butterworth

No geral, apesar do interesse genuíno que a pergunta traz, eu temo que ela não tenha mais que um valor teórico, na melhor das hipóteses, um valor educacional, já que não consegue se encaixar na parte que lida com o design do filtro. É claro que, se provar ser de valor real, ficaria feliz em provar que estava errado, pois isso significaria que existe um novo método de design de filtro, possivelmente melhor do que os já existentes.


@OlliNiemitalo Sim, é a versão não quadrática. Faça o que o padre diz, não o que ele faz. :-) Apé a atenuação / ondulação da banda passante, em dB, mas também pode ser para a faixa de parada, no caso de Cauer / Elíptico, Chebyshev inverso ou Pascal inverso. Vejo que há outros erros menores, eu os editarei.
um cidadão preocupado

1
Olli, existem boas expressões de formulário fechado para Tchebyshevs e Butterworth. mas não muito para o filtro elíptico / Cauer. obter um alg bem definido para isso (os locos de pólos e zeros) é (como diremos?) uma fêmea canina copuladora .
Robert Bristow-johnson

1
@ robertbristow-johnson Apesar do sinônimo científico preciso, há pelo menos três maneiras de representar os pólos de Cauer. Uma é a aproximação (Antoniou ?, Dimopoulos ?, não tenho certeza), que, eu acho que é a mais ampla usada. Então há maneira de Burrus que se segue com precisão funções elípticas, ou seja, os zeros são ±j/(ksn(iK/N,k)),i=1,2,..(ímpar / par diferente), mas isso requer o uso de funções teta e outros enfeites, que ficam muito "fofos" em termos de CPU. Depois, há Lutovac, que, mesmo que ele não possa usar números primos, os simplifica bastante, mas eles aumentam à medida que a ordem aumenta.
um cidadão preocupado

1
@ robertbristow-johnson Nem eu, como mencionado no final da edição original, e em um dos comentários, mas parece que ele foi editado ao longo do caminho, eu o corrigirei. Quanto às funções elípticas, Burrus e outra (esqueceu o nome Paarman?) Usam a versão , mas s n ( K + x ) = c d ( x ) , o Jacobi mudou o seno, um fato observado por Lutovac. Portanto, para evitar a necessidade de calcular uma integral elíptica extra completa, pode-se escrever c d ( )sn(K+sn1())sn(K+x)=cd(x)cd(), não há diferença. Um gráfico simples pode mostrá-lo ( ). k1=ϵp/ϵs,k=fp/fs,K1=K(k1),K=K(k)
um cidadão preocupado

1
@ robertbristow-johnson Você perdeu a parte em que eu digo que todas as expressões usam como uma variável, porque refletem a função matemática que descreve a resposta do filtro, pois está relacionada à abordagem matemática dos Olli. Ao plotar todas as funções com x em qualquer software matemático, você terá a magnitude, sem entrar no domínio da frequência. Eu saí do lado de fora substituindo x = j ω , criando H ( s ) H ( - s ) e selecionando apenas os pólos / zeros do critério de Hurwitz, que são para o design do filtro. Além disso, você também pode obter os pólos sem isso (veja o link no comentário # 2).xxx=jωH(s)H(s)
um cidadão preocupado

2

Enquanto sinto intuitivamente que entendo o que é necessário, luto para expressá-lo. Não tenho certeza se isso se deve às minhas próprias limitações ou se, de fato, o problema é difícil ou mal colocado. Tenho a sensação de que está mal posicionado. Então, aqui está minha tentativa:

  1. O objetivo é construir um filtro. Ou seja, calcule um conjunto de coeficientes de alguma forma racional:

H(s)=B(s)A(s)=m=0MbmsmsN+n=0N1ansn

(Observe que ele não precisa estar acima do plano s, pode estar acima do plano z também. E também, formas mais simples dele podem ser consideradas (por exemplo, com apenas pólos). corra com o plano s por um momento e vamos manter o nomeador também).H(s)

  1. Os filtros digitais são caracterizados por suas respostas de frequência e fase, sendo que ambos podem ser completamente determinados pelos valores (ou posições no plano s) de seus coeficientes . A discussão até agora parece estar focada na resposta em frequência, então vamos considerar essa por um momento.an,bm

  2. Dado um conjunto de alguns e algum ponto σ + j ω no plano s, a maneira geométrica de derivar a resposta de freqüência nesse ponto é formar "vetores zero" (a partir dos locais dos zeros, em direção a o ponto específico) e "vetores de pólos" (da mesma forma para os pólos), somam suas magnitudes e formam a razão como na equação acima.an,bmσ+jω

  3. Perguntar "Quais tipos de [...] filtro definidos por algum critério de otimização têm subconjuntos infinitos definidos por curvas paramétricas" [...] é perguntar "Qual é o par de algumas curvas paramétricas cujas localizações também resultar em uma curva de resposta magnitude com características específicas desejado mais de ΘA(s,Θ),B(s,Θ)Θ (por exemplo, inclinação, ondinha, outros). Onde é o parâmetro (s) do ... paramétrica.Θ

  4. Uma observação, neste ponto: Por um lado, estamos procurando que satisfaçam duas restrições. Primeiro, eles precisam satisfazer as restrições do paramétrico (fácil) e, em segundo lugar, devem atender às restrições especificadas pela característica de resposta de magnitude (difícil).A(s),B(s)

  5. Penso que o problema, em sua forma atual, está mal posicionado, porque não há uma maneira analítica de conectar as restrições de resposta de frequência com os parâmetros , exceto a avaliação direta do mesmo.A(s,Θ),B(s,Θ) . Em outras palavras, é impossível no momento especificar algumas restrições na curva de resposta em frequência e, com isso, trabalhar para trás e encontrar os parâmetros que satisfazem essas restrições. Podemos fazer o contrário, mas não para trás.

  6. Portanto, o que (eu acho que) realisticamente pode ser feito, no momento, é aceitar de alguma forma específica e, em seguida, verificar como eles se saem como filtros OU , iterativamente, mova seus coeficientes o máximo que seus parâmetros paramétricos, para obter o melhor desempenho que eles podem oferecer em uma faixa específica de Θ . ContudoA(s,Θ),B(s,Θ)Θ, podemos descobrir que, dadas as características elaboradas dos elípticos (por exemplo), um determinado esquema iterativo em um paramétrico pode optar por "dobrar" os coeficientes o mais próximo possível de alguma característica da região "elíptica". É por isso que, anteriormente, mencionei que poderíamos descobrir que uma paramétrica complexa pode ser dividida em uma "soma de elípticos" ou "soma de curvas com características conhecidas". Talvez uma terceira restrição seja necessária aqui, lendo "Fique longe de configurações conhecidas de ", ou seja, penalize soluções que começam a parecer elípticas (mas ainda em um esquema iterativo).A(s),B(s)

Finally, if this path is not too wrong so far then we are somewhere close to something like Genetic Algorithms For Filter Design, or some other informed "shoot in the dark" technique by which the coefficients of a filter satisfying specific criteria might be derived with. The above is just an example, there are more publications along these lines out there.

Hope this helps.


limN(H(iω))1/N, or usually its absolute value. Then again it would mean we are already relying on the the viability of the approach, which is in question. So it would be necessary to also check with some finite N filters. In point #7, I don't think "repulsion of elliptics" would help as it would give sub-optimal near-elliptic filters. Rather, the optimization goal should be changed.
Olli Niemitalo

1
Thank you. I agree that the optimisation goal is crucial here. "Repulsion of the eliptics" should be used more often... :)
A_A

2

i don't think it's particularly remarkable that Butterworth filters, defined as all-pole filters that are maximally flat at ω=0 (for LPF prototype, meaning the most possible derivatives of |H(jω)| are zero at ω=0), have s-plane poles that lie equally spaced on the left half-circle of radius ω0.

from the "maximally flat" and "no zeros", you can derive

|H(jω)|2=11+(ωω0)2N

for the Nth-order Butterworth.

so

|H(s)|2=11+(sjω0)2N

s=pn is a pole when the denominator is zero.

1+(pnjω0)2N=0

or

(pnjω0)2N=1

pn2N=(jω0)2N

|pn|=ω0

2Narg{pn}=π+2Nπ2+2πn

arg{pn}=π2+πN(n12)

for Nth-order Tchebyshev (Type 1, which is all-pole), it's like this:

|H(jω)|2=11+ϵ2TN2(ωωc)

where

TN(x){cos(Narccos(x)),if |x|1cosh(Narccosh(x)),if x1(1)Ncosh(Narccosh(x)),if x1

are the Nth-order Tchebyshev polynomials and satisfy the recursion:

T0(x)=1T1(x)=xTn+1(x)=2xTn(x)Tn1(x)nZ1

and ωc is the "passband cutoff" frequency and not to be confused with the -3 dB frequency ω0. (but the two are related.)

the passband ripple parameter is ϵ=10dBripple101

analytic extension again:

|H(s)|2=11+ϵ2TN2(sjωc)

and again s=pn is a pole when the denominator is zero.

1+ϵ2TN2(pnjωc)=0

or

TN(pnjωc)=±jϵ

(because cos(θ)=cosh(jθ) we can use either cos() or cosh() expression for TN()

cosh(Narccosh(pnjωc))=±jϵ

Narccosh(pnjωc)=arccosh(±jϵ)

since

y=cosh(x)=12(ex+ex)
and
x=arccosh(y)=log(y±y21)

then

Nlog(pnjωc±(pnjωc)21)=log(±jϵ±(±jϵ)21)

Nlog((pn)+j(pn)jωc±((pn)+j(pn)jωc)21)=log(±j(1ϵ±1ϵ2+1))

Nlog(j(pn)+(pn)ωc±(j(pn)+(pn)ωc)21)=log(±j(1ϵ±1ϵ2+1))

oh dear i might not get this blasted out in 12 hours

i've decided that i am too lazy to grok through this. if anyone wants to pick it up, feel free to. lotsa conversion between rectangular and polar notation of complex values. remember when

w=± z 
then
|w|=+|z|
and
arg{w}=12arg{z}+arg{±1}=12arg{z}+π2(1±1)

and remember

log(z)=log|z|+jarg{z}+j2πnnZ

you may add any integer multiple of 2π (say "2πn") to any arg{} (choose the right-hand log() which is how you can get different poles for pn).

if you like mathematical masturbation with complex variables, knock yourself out.


+1 for the interesting observation, but since this doesn't address the questions I hope there will be other candidates for the bounty.
Olli Niemitalo

so Olli, you can see how the derivation of the poles for Tchebyshev 1 and poles/zeros for Tchebyshev 2 is similarly done?
robert bristow-johnson

the Jabobi Elliptical is a bitch. i dunno how to evaluate it without looking it up in Antonio. and it ain't gonna be closed form.
robert bristow-johnson

Yes, the zeros of Tchebyshev 2 are uniformly distributed on parametric curve f(α)=j/cos(πα) for cutoff 1.
Olli Niemitalo

and how do you get that result and the loci of the poles for either Tchebyshev 1 or 2?
robert bristow-johnson

0

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 ordemPostes e zeros compartilhados
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);

Resposta de frequência de magnitude do filtro de 12ª ordem
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)));

Pólos e zeros, ordem dos filtros 12
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);

Resposta de frequência de magnitude do filtro de quarta ordem
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, ellipcom 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");

Comparação do pólo do filtro de quarta ordem / zero
Figura 5. Comparação de locais de pólo (vermelho) e zero (azul) entre um ellipfiltro 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 ellipfiltro 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 ellipfiltro 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);

Resposta em frequência de magnitude do filtro interpolado de 4 a 12ª ordem
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 ellipfiltro 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)));

Comparação de pólos e zeros para N = 12
Figura 7. Comparação de localizações de pólo (vermelho) e zero (azul) entre um ellipfiltro 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);

Filtro gerado por <code> ellip </code> de 6ª ordem
Filtro de 18ª ordem derivado do
Figura 8. Topo) ellipfiltro 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, Eu=1...N Como:

(1)szEu=jksn(K+K(2Eu+1)/N,k),

Onde K é um trimestre de sn(t,k) sério te 0 0k1pode 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(2Eu+1)/N=2α (veja a Eq. 2 da pergunta) onde α é o parâmetro da curva paramétrica:

2)fz(α)=jksn(K+2Kα,k),

Burrus Eq. 3.146 fornece os polos do quarto plano superior esquerdo, incluindo um polo real paraN. Pode ser reescrito para todos os pólosspEu, Eu=1...N com qualquer N Como:

(3)spEu=cn(K+K(2Eu+1)/N,k)dn(K+K(2Eu+1)/N,k)sn(ν0 0,1-k2)×cn(ν0 0,1-k2)+jsn(K+K(2Eu+1)/N,k)dn(ν0 0,1-k2)1-dn2(K+K(2Eu+1)/N,k)sn2(ν0 0,1-k2),

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

4)fp(α)=cn(K+2Kα,k)dn(K+2Kα,k)sn(ν0 0,1-k2)×cn(ν0 0,1-k2)+jsn(K+2Kα,k)dn(ν0 0,1-k2)1-dn2(K+2Kα,k)sn2(ν0 0,1-k2).

Vamos traçar as funções e as curvas no Octave, para valores de k e ν0 0( v0no 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]);

Analytic extensions of parametric curve functions for Burrus Example 3.4
Figura 9. fz(α) e fp(α) para o exemplo 3.4 da Burrus, estendido analiticamente para o período α=0 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]);

Parametric curves for Burrus Example 3.4
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 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 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.


Olli, você não pode se dar a recompensa de qualquer maneira. seus 500 pontos se foram para sempre. apenas não desperdice-os como fiz acidentalmente uma vez na página EE.SE.
22864 Robert Pattinson-Johnson

Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
jojek

1
Yes, they still are, that is the special case for odd orders, when there's an additional, single, real pole, re/(s+re), to the transfer function. As for the rational function starting from zeroes, only, you have:
R(x)=in/2x2zeroi2jn/2x2k/zeroj2
, where k=fs/fp. For odd orders, R(x)=R(x)x. This will make the filter have unnormalized gain, so it should be scaled by R(0). Poles come from expanding 1+ϵ2R2(x) and finding the roots of the denominator, then selecting the left-hand side, and forming the transfer function.
um cidadão preocupado

I wasn't sure if I said this. To make the transfer function, it's not really necessary to follow the book by making H(s)H(s), then left-hand side poles, then rational transfer function according to @A_A's formula. Mathematically, and the practical result, is that after finding the roots from 1+ϵ2R2(x) (note: x, not jω, or s), simply select the roots with the positive realparts and either positive or negative imagparts (not both). I.e. for N=4, there would be 4 pairs/8 poles; after selection you have 2 different poles. Then simply:
N(s)=iN/2|pi|2
...
um cidadão preocupado

(for all-pole filters), where p=σ+jω, and
N(s)=iN/2s2+|zi|2
, where z=jμ (for pole-zero filters), while the denominator:
D(s)=jN/2s2+2Re(pj)s+|pj|2
and
H(s)=N(s)D(s)
. This would be the lowpass prototype.
um cidadão preocupado

0

It seems that most of the participants in this discussion do not know a type of filter which may be their real solution ! Namely the Paynter filters developed by Henry M.Paynter who was a professor at MIT and partner of Philbrick Reseach. They are the best approach to "running" average filtering and treating non deterministic input signals, far better than Bessel-Thomson. I used them for physiological-medical and sonar applications. Their theories are in the January-July and July-October editions of the "Lightning Empiricist" under the general title: "New approaches for the design of Active Low Pass Filters" by Peter D. Hansen Tables are given for the poles of the 2nd, 4th and 6th order filters. I computed the same for the 8th order.


E parece que você perdeu o ponto do OP: encontrar o Santo Graal de fórmulas matemáticas que podem ser usadas para calcular qualquer tipo de filtro (ou similar). :-)
um cidadão preocupado

0

Vou adicionar aqui algumas notas que podem ser úteis se alguém quiser calcular o limite N do Nraiz da magnitude de uma função de transferência com múltiplos de Npólos e zeros distribuídos em curvas paramétricas arbitrárias. Pode-se aproximar isso usando uma grandeNe distribuindo os pólos e zeros uniformemente sobre o parâmetro da curva paramétrica. Infelizmente, a aproximação sempre apresenta erro infinito na escala de dB nos locais dos pólos e zeros da função de transferência realizável. Nesse sentido, um bloco de construção melhor é um segmento de linha com pólo uniforme ou distribuição zero ao longo de seu comprimento. Considerando apenasN zeros, distribuídos em um segmento de linha com ponto inicial x0 0+y0 0Eu e ponto final x1+y1Eu:

limN|H(0 0)|1/N=0 01|(x0 0+y0 0Eu)(1-α)+(x1+y1Eu)α|dα=0 01((x0 0(1-α)+x1x)2+(y0 0(1-α)+y1α)2)dα=e0 01registro((x0 0(1-α)+x1α)2+(y0 0(1-α)+y1α)2)dα=e((x0 0y1-x1y0 0)atan2(x0 0y1-x1y0 0,x0 0x1+y0 0y1)(x0 0-x1)2+(y0 0-y1)2-1)×(x0 02+y0 02)(x1(x0 0-x1)+y0 0(y0 0-y1)+(x0 0-x1)22((x0 0-x1)2+(y0 0-y1)2))×(x12+y12)(x0 0(x1-x0 0)+y1(y1-y0 0)+(x1-x0 0)22((x1-x0 0)2+(y1-y0 0)2))

Alguns casos especiais precisam ser tratados separadamente. E sex0 0=0 0 e y0 0=0 0 devemos usar o limite:

=e-1x12+y12

Ou, inversamente, se x1=0 0 e y1=0 0:

=e-1x0 02+y0 02

Ou se o segmento de linha tiver comprimento zero, x0 0=x1 e y0 0=y1, temos apenas um zero regular:

=x0 02+y0 02

Para fazer a avaliação em diferentes valores de argumento de H(z) ou H(s), basta subtrair esse valor dos pontos inicial e final da linha.

Como isso se parece no plano complexo: Figura 1. Magnitude da função de transferência com um único zero. Etapas de 1 dB são indicadas em turquesa e 10 dB em amarelo.Magnitude da função de transferência com um único zero

O limite N-> inf da enésima raiz de magnitude de uma função de transferência com N zeros distribuídos uniformemente em um segmento de linha
Figura 2. O limite N do Nraiz da magnitude de uma função de transferência com Nzeros uniformemente distribuídos em um segmento de linha. Há um vinco no segmento de linha, mas o valor nunca chega a zero como com um zero realizável regular. A uma distância suficiente, isso pareceria um zero regular. O código de cores é o mesmo da Fig. 1.

insira a descrição da imagem aqui
Figura 3. Uma aproximação da Fig. 2 usando zeros discretos: quinta raiz da magnitude de um polinômio com 5 zeros distribuídos uniformemente no segmento de linha. No local de cada zero, o valor é zero, porque0 01/5=0

As Figs. 1 e 2 foram gerados usando este esboço Processamento , com código fonte:

float[] dragPoints;
int dragPoint;
float dragPointBackup0, dragPointBackup1;
boolean dragging, activated;
PFont fnt;
PImage bg;
float pi = 2*acos(0.0);
int appW, appH;
float originX, originY, scale;

int numDragPoints = 2;

void setup() {
  appW = 600;
  appH = 400;
  originX = appW/2;
  originY = appH/2;
  scale = appH*7/16;
  size(600, 400);
  bg = createImage(appW, appH, RGB);
  dragging = false;
  dragPoint = -666;
  dragPoints = new float[numDragPoints*2]; 
  dragPoints[0] = originX-appW*0.125;
  dragPoints[1] = originY+appH*0.125;
  dragPoints[2] = originX+appW*0.125;
  dragPoints[3] = originY-appH*0.125;
  fnt = createFont("Arial",16,true);
  ellipseMode(RADIUS);
  activated = false;
}

void findDragPoint() {
  int cutoff = 49;
  int oldDragPoint = dragPoint;
  float dragPointD = 666666666;
  dragPoint = -666;
  for (int t = 0; t < numDragPoints; t++) {
    float d2 = (mouseX-dragPoints[t*2])*(mouseX-dragPoints[t*2]) + (mouseY-dragPoints[t*2+1])*(mouseY-dragPoints[t*2+1]);
    if (d2 <= dragPointD) {
       dragPointD = d2;
       if (dragPointD < cutoff) {
         dragPoint = t;
       }
    }
  }
  if (dragPoint != oldDragPoint) {
    loop();
  }
}

void mouseMoved() {
  if (activated) {
    if (!dragging) {
      findDragPoint();
      loop();
    }
  }
}

void mouseClicked() {
  if (dragPoint < 0) {
    activated = !activated;
    if (activated) {
      findDragPoint();      
    }
  }
  loop();
}

void mousePressed() {  
  if (dragPoint >= 0) {
    dragging = true;
    dragPointBackup0 = dragPoints[dragPoint*2];
    dragPointBackup1 = dragPoints[dragPoint*2+1];
  } else {
    dragging = false; // Not needed?
  }
  loop();
}

void mouseDragged() {
  if (!activated) {
    dragPoint = -666;
    activated = true;
    findDragPoint();
  }
  if (dragging) {
    int x = mouseX;
    int y = mouseY;
    if (x < 5) {
      x = 5;
    } else if (x >= appW - 5) {
      x = appW - 6;
    }
    if (y < 5) {
      y = 5;
    } else if (y >= appH - 5) {
      y = appH - 6;
    }
    dragPoints[dragPoint*2] = x;
    dragPoints[dragPoint*2+1] = y;
    loop();
  }  
}

void mouseReleased() {
  if (activated && dragging) {
    dragging = false;
    loop();
  }
}

float sign(float value) {
  if (value > 0) {
    return 1.0;
  } else if (value < 0) {
    return -1.0;
  } else {
    return 0;
  }
}

void draw() {
  for(int y = 0; y < appH; y++) {
    for(int x = 0; x < appW; x++) {
      float x0 = (dragPoints[0]-x)/scale;
      float y0 = (dragPoints[1]-y)/scale;
      float x1 = (dragPoints[2]-x)/scale;
      float y1 = (dragPoints[3]-y)/scale;
      float gain;
      if (x0 == x1 && y0 == y1) {
        gain = sqrt(x0*x0 + y0*y0);
      } else if (x0 == 0 && y0 == 0) {
        gain = exp(-1)*sqrt(x1*x1 + y1*y1);
      } else if (x1 == 0 && y1 == 0) {
        gain = exp(-1)*sqrt(x0*x0 + y0*y0);
      } else {
        gain = exp((x0*y1 - x1*y0)*atan2(x0*y1 - x1*y0, x0*x1 + y0*y1)/(sq(x0 - x1) + sq(y0 - y1)) - 1)*pow(x0*x0 + y0*y0, (x1*(x0 - x1) + y0*(y0 - y1) + sq(x0 - x1))/(2*(sq(x0 - x1) + sq(y0 - y1))))*pow(x1*x1 + y1*y1, (x0*(x1 - x0) + y1*(y1 - y0) + sq(x1 - x0))/(2*(sq(x1 - x0) + sq(y1 - y0))));
      }
      int intensity10 = round(log(gain)/log(10)*0x200)&0xff;
      int intensity1 = round(log(gain)/log(10)*(0x200*10))&0xff;
      bg.pixels[y*appW + x] = color(intensity10, 0xff, intensity1);
    }
  }
  image(bg, 0, 0);
  noFill();
  stroke(0, 0, 255);
  strokeWeight(1);
  line(dragPoints[0], dragPoints[1], dragPoints[2], dragPoints[3]);  

  //ellipse(originX, originY, scale, scale);  
  if (!activated) {
    textFont(fnt,16);
    fill(0, 0, 0);
    text("Click to activate",10,20);
    for (int x = 0; x < appW; x++) {
      color c = color(110*x/appW+128, 110*x/appW+128, 110*x/appW+128);
      set(x, 0, c);  
    }
    for (int y = 0; y < appH; y++) {
      color c = color(110*y/appH+128, 110*y/appH+128, 110*y/appH+128);
      set(0, y, c);  
    }
  }

  for (int u = 0; u < numDragPoints; u++) {
    stroke(0, 0, 255);
    if (dragPoint == u) {
      if (dragging) {
        fill(0, 0, 255);
        strokeWeight(3);
        ellipse(dragPoints[u*2], dragPoints[u*2+1], 5, 5);
      } else {
        noFill();
        strokeWeight(3);
        ellipse(dragPoints[u*2], dragPoints[u*2+1], 6, 6);
      }
    } else {
      //noFill();
      //strokeWeight(1);
      //ellipse(dragPoints[u*2], dragPoints[u*2+1], 6, 6);
    }
  }
  noLoop();
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.