Conception du filtre en distribuant les pôles et les zéros sur les courbes paramétriques


17

Un filtre passe-bas Butterworth d' ordre de fréquence de coupure peut être conçu en distribuant pôles uniformément par rapport au paramètre 0 <\ alpha <1 sur une courbe paramétrique du plan s f (\ alpha) = \ omega_c e ^ { i (\ pi / 2 + \ pi \ alpha)} , qui est un demi-cercle:NωcN0<α<1f(α)=ωcei(π/2+πα)

Filtre Butterworth
Figure 1. Poteaux d'un filtre Butterworth du 6e ordre (CC BY-SA 3.0 Fcorthay)

Il est remarquable que la même courbe paramétrique puisse être utilisée pour tout degré de filtre N donnant la fonction de transfert non normalisée:

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

et que le filtre résultant est toujours un filtre Butterworth. C'est-à-dire qu'aucun autre filtre avec le même nombre de pôles et de zéros n'a un plus grand nombre de dérivées disparaissant de la réponse en fréquence d'amplitude aux fréquences ω=0 et ω= . L'ensemble de filtres Butterworth qui ont la même fréquence de coupure ωc forme un sous-ensemble de filtres Butterworth auquel la courbe paramétrique f(α) est unique. Le sous-ensemble est infini car N n'a pas de limite supérieure.

Plus généralement, sans compter les pôles et les zéros à l'infini à moins qu'ils ne proviennent des courbes paramétriques, tout filtre avec pôles et zéros, avec un entier et une fraction non négative d'entiers, a une fonction de transfert non normalisée de forme:NNpNNzNNz/Np

(2)H(s)=k=1NNz(sfz(2k12NNz))k=1NNp(sfp(2k12NNp)),

où et sont des courbes paramétriques qui peuvent décrire la distribution des pôles et des zéros dans la limite .fp(α)fz(α)N

  • Question 1: Quels autres types de filtres que Butterworth, définis par un critère d'optimalité, ont des sous-ensembles infinis définis chacun par la fraction et la paire de courbes paramétriques et par Eq. 2, les filtres ne différant que de ? Nz/Npfp(α)fz(α)N αFiltres Chebyshev de type I , oui; avec eux, les pôles résident sur la moitié d'une ellipse d'angle paramétrique . Les filtres Butterworth et de type I et de type Tchebyshev sont des cas particuliers de filtres elliptiques . Pour être clair, par "sous-ensembles infinis", je ne veux pas dire un nombre infini de sous-ensembles, mais des sous-ensembles de taille infinie.α
  • Question 2: Les filtres elliptiques non-Butterworth-non-Chebyshev ont-ils des sous-ensembles infinis?
  • Question 3: Chaque filtre elliptique est-il dans un sous-ensemble aussi infini?

Si l'ensemble infini de tous les filtres elliptiques est une union de sous-ensembles infinis mutuellement exclusifs et exhaustifs de filtres elliptiques définis chacun par une seule courbe paramétrique pour le placement des pôles et une seule courbe paramétrique pour le placement des zéros, et une fraction irréductible du nombre de des zéros aux pôles, puis l'optimisation numérique pour obtenir des filtres elliptiques pourrait être effectuée en optimisant les courbes paramétriques plutôt que les filtres pour un ordre particulier. Les courbes optimales pourraient être réutilisées pour plusieurs ordres de filtrage, en maintenant l'optimalité. Le "si" ci-dessus est la raison pour laquelle je pose les questions 2 et 3. La question 1 concerne l'extension de l'approche à d'autres critères d'optimalité.

Il est certain que les tracés de filtres elliptiques à pôle zéro ressemblent à des courbes sous-jacentes:

Filtre elliptique
Figure 2. Amplitude logarithmique d'un filtre passe-bas elliptique sur le plan s. Les points blancs sont des pôles et les points noirs sont des zéros.

Une piste est celle par Eq. 1, certaines valeurs de et donc certaines positions de pôle et de zéro doivent être partagées entre plusieurs filtres:α

alpha et degré de filtrage
Figure 5. Les valeurs obtenues par le paramètre courbe pour différents degrés de filtre . Notez comment pour plusieurs ordres de filtrage, nous avons par exemple , ou etαNα=0.5α=0.25α=0.75.

En particulier, pour un filtre qui a pôles ou zéros, ils apparaissent tous également dans des filtres qui ont de même où est un entier positif.3 n N nN3nNn


Démontrant un humour extrêmement sec, par demande de l'utilisateur A_A, j'ai examiné le lemniscate de Bernoulli comme exemple de courbe paramétrique du plan s:

Lemniscate de Bernoulli
Figure 4. Lemniscate de Bernoulli

La courbe paramétrique suivante donne la moitié gauche du lemniscate de Bernoulli, avec le paramètre et commençant et se terminant à :s = 00<a<1s=0

f(α)=2sin(πα)cos2(πα)+1+i2sin(πα)cos(πα)cos2(πα)+1

En utilisant cette courbe paramétrique pour les pôles, nous aimerions en quelque sorte comparer entre différents les réponses en fréquence d'amplitude obtenues via Eq. 1. Une façon consiste à regarder la racine ème de la réponse en fréquence d'amplitude. Cela nous permet également de voir à quoi ressemblent les choses dans :N | H ( i ω ) |NN N|H(iω)|1/NN

Nième racine de la réponse en fréquence d'amplitude
Figure 3. ième racine de la réponse en fréquence d'amplitude d'un filtre -Pole qui a ses pôles répartis sur la lemniscate de Bernoulli uniformément par rapport au paramètre de la courbe. À des fréquences plus élevées que celles indiquées, les graphiques suivent tous une pente de -6 dB / oct (-20 dB / décennie). Dans la limite il y a une discontinuité dans la dérivée de l'intrigue à car le lemniscate traverse (deux fois) l'axe imaginaire du plan s à ce point.NNNω = 0 s = 0Nω=0s=0

La limite de la racine ème de l'amplitude de la fonction de transfert (Eq. 1) comme été calculée comme suit:N NN

(3)limN|H(s)|1/N=01|1sf(α)|dα=e01log(|sf(α)|)dα,

représente une intégrale de produit qui peut être calculée avec le logarithme naturel, l'intégration et la fonction exponentielle. Comme souvent avec l'intégration, il n'y avait pas d'expression symbolique pour l'intégrale qui devait être évaluée numériquement pour la lemniscate de Bernoulli. Dans l'ensemble, les réponses en fréquence de magnitude résultantes semblent plutôt inutiles pour cette courbe paramétrique "choisie au hasard".


L'utilisateur Matt L. a mentionné les filtres Lerner. Ce que j'ai trouvé à leur sujet, avec une légère interprétation:

H(s)=k=1mBk(s+a)(s+a)2+bk2B1=1/2,Bm=(1)m+12Bi=(1)k+1 for k=2,,m1,

avec des positions polaires telles que pour tous les . On dirait que ces pôles, bien que répartis sur une ligne, ne sont pas les pôles du filtre complet mais des pôles de sections parallèles. Je n'ai pas confirmé quels sont les pôles du système complet, ni si les filtres Lerner sont dans un sens utile optimaux. Référence: CM Rader, B. Gold, MIT Lincoln Laboratory Technical Note 1965-63, Digital Filter Design Techniques , 23 décembre 1965.b m - b m - 1 = b 2 - b 1 = 1a+ibk3<k<m-1bmbm1=b2b1=12(bkbk1)3<k<m1


4
Mon anglais est fragile ce matin, donc je ne comprends pas très bien ce que vous essayez de dire, mais s'il s'agit de plus d'une façon de calculer un filtre elliptique, je suggère de trouver le livre de Lutovac, dans l'elliptique de Wikipédia filtrer les notes (aussi Dimopoulos), c'est tout à fait révélateur: vous pouvez avoir 7 façons de concevoir un filtre elliptique. Si ce n'est pas ce que vous vouliez dire, veuillez ignorer mon commentaire.
un citoyen concerné

2
Les filtres de Lerner ont tous leurs pôles sur une ligne parallèle à l'axe imaginaire. Ils ont l'avantage d'avoir une réponse de phase approximativement linéaire.
Matt L.

2
Le filtre complet; mais si les pôles de toutes les sections parallèles se trouvent sur la même ligne, alors le filtre complet aura tous ses pôles sur cette ligne. Vous avez raison sur la référence. Il y a cette note technique de Rader et Gold à laquelle je fais habituellement référence.
Matt L.

1
OK, pour quel journal allons-nous? : D Y a-t-il un principe directeur dans tout cela? Par exemple, cherchez-vous un paramétrique possible qui fasse mieux que l'éliptique à certains égards? (par exemple bande de transition vs ondulation). Une autre famille qui pourrait être "intéressante" est les * cycloïdes ... Mais, sans "principe de classement", nous ne pouvons appeler "pire, mauvais, bon, meilleur" aucun d'entre eux :)
A_A

2
Le fil de commentaires est allé trop longtemps. Cependant, il suffit de lancer un paramétrique emplacement pour les filtres à ondelettes Daubechies ams.org/journals/proc/1996-124-12/S0002-9939-96-03557-5/…|4y(1y)|=1
Laurent Duval

Réponses:


6

Tout au long de la réponse, j'utiliserai les notations mathématiques , c'est-à-dire l' équivalent mathématique d'exprimer la réponse en amplitude d'un filtre dans le domaine fréquentiel. Pour cela, sera utilisé à la place de , pour mieux refléter la question de @ Olli sur la recherche d'une courbe paramétrique mathématique pour approximer les filtres. Comme il ne s'agit pas d'une conception de filtre, la fréquence de coin est normalisée à l'unité, d'où au lieu de .xjωxω/ωp


Je ne sais pas si c'est la réponse que vous recherchez, mais n'importe quel filtre peut être représenté via la fonction de transfert générique:

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

où , et est la fonction d'atténuation caractéristique. est l'atténuation / ondulation de la bande passante en dB, mais elle peut également être dans la bande d'arrêt pour Cauer / Elliptic, Pascal inverse ou Chebyshev inverse (alias "Chebyshev Type II"). Ces derniers s'expriment comme suit:ϵp=10Ap/101R(x)Ap

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

Pour Butterworth, comme vous l'avez vu:

R(x)=xN

pour Chebyshev c'est , ou les polynômes de Chebyshev ( / pour et / pour ), pour Elliptique c'est:R(x)=TN(x)cosacosx1coshacoshx>1

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

Dans le livre de Lutovac, il y a des représentations extrêmement simplistes à travers des fonctions équivalentes exactes pour les filtres elliptiques. Par exemple, la fonction de transfert de second ordre peut être représentée avec précision par:

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

où la seule dépendance est du module .k

Ce sont les types connus, pour les types moins connus, par exemple, Legendre, , où sont les polynômes de Legendre, pour les filtres Pascal, il y a la version décalée et normalisée des polynômes Pascal, lequel est:R(x)=PN(x)PN(x)

(N+12x+N12N)

La liste continue. Certains sont approximés différemment, par exemple le gaussien est , qui est développé avec la série MacLaurin, à peu près la même chose pour Bessel, qui est développé à partir de son expression Laplace dans ses termes dénominateurs comme:|H(x)|2=exp(x2)exp(s)

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

Il existe également des façons plus exotiques de déduire la fonction de transfert, comme Papoulis (Optimum L) et Halpern, qui utilisent tous deux les polynômes de Legendre pour intégrer la réponse de telle sorte que la fonction de transfert diminue de façon monotone avec une sélectivité élevée du filtre. Pour Papoulis, c'est:

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

où est , et sont des termes intelligemment choisis, selon que , ou , les deux, sont impairs / pairs.k(N1)/2aiNk

Comme indiqué, tous ceux-ci n'utilisent pas le domaine fréquentiel pour la représentation, comme dans est le mathématique , réel, pas imaginaire . La résolution des racines peut être effectuée en trouvant simplement les pôles (et les zéros) pour la fonction de transfert lors du remplacement de par ., Trouvant ainsi et en sélectionnant le polynôme de Hurwitz, ou en trouver simplement les racines de l'expression mathématique en (voir le lien dans le 2ème commentaire ci-dessous). Cela donnera les racines tournées de 90 degrés, ce qui signifie que tout ce qu'il y a à faire est de basculer entre les parties réelles et imaginaires, puis de sélectionner le côté droit.xxjωxjωH(s)H(s)x

Cette réponse est-elle proche de ce que vous cherchiez?


Je pense qu'à ce stade, il est important de dire que les filtres n'existent pas parce que les gens lançaient des fléchettes sur une carte pour marquer les pôles, ils en sont venus à avoir soigneusement réfléchi à l'objectif qu'ils avaient en tête.

Par exemple, et avec une qualité à peu près croissante, les filtres Butterworth sont apparus parce qu'il y avait un besoin pour un filtre qui était simple à concevoir, avec une atténuation augmentant de façon monotone. Linkwitz-Riley ne sont rien d'autre que Butterworth dans un déguisement (intelligent) de telle sorte que la somme d'un passe-bas et d'un passe-haut avec la même fréquence de coin donne une réponse plate, utile pour les applications audio.

Chebyshev (I et II) ont été conçus pour avoir une meilleure atténuation, au prix d'ondulations en bande passante ou en bande d'arrêt. Legendre, ultra-sphérique, Pascal (et peut-être d'autres) minimisent l'ondulation, améliorant ainsi le retard de groupe, au prix d'atténuations légèrement réduites.

Papoulis et Halpern ont été développés comme un mélange entre l'ondulation de la bande passante et une atténuation augmentant de façon monotone, tout en améliorant l'atténuation autour de la fréquence du coin, au prix d'un affaissement dans la bande passante.

Les filtres Cauer / Elliptic utilisent l'ondulation dans la bande passante et la bande d'arrêt afin de minimiser l'ordre requis pour une atténuation identique ou meilleure.

Tous ces éléments sont dans le domaine fréquentiel, ce que sont la plupart des filtres. Dans l'autre sens, les filtres de Bessel sont apparus en raison de la nécessité d'approximer un retard analogique, ils convergent donc vers mesure que l'ordre augmente, tandis que les filtres gaussiens ont été créés pour un dépassement nul, donc ils se rapprochent avec ordre croissant.exp(jω)exp(x2)

Bien sûr, comme quelqu'un l'a suggéré, vous pouvez également saupoudrer des poteaux et voir ce qui sort, peut-être les configurer comme une étoile, ou un motif en nid d'abeille, choisissez votre lemniscate préféré, mais ce n'est pas la façon de le faire si vous voulez un filtre en dehors de ça. Bien sûr, vous pouvez obtenir une réponse exotique qui peut même être applicable qui sait, où, comme un cas unique sur un million, mais ce n'est vraiment qu'un cas particulier. La voie à suivre consiste à imposer d'abord un objectif de conception et à voir comment cet objectif peut être atteint en termes de filtre physiquement réalisable. Même si cela signifie proposer un filtre applicable qui sait où. :-)


Compte tenu de la réponse récente de @Olli, considérons le cas simple d'un filtre Butterworth, conçu pour, disons 0.9@fp=1, 0.1@fs=5. Les calculs ressemblent à ceci:

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

N est calculé comme arrondi, donc . Cela signifie que, si vous faites correspondre la réponse du filtre à la bande passante, vous obtiendrez une atténuation plus élevée dans la bande d'arrêt @fs. En utilisant la première formule vers le haut, l'atténuation @ fs est:N=2

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

Si vous devez faire correspondre la bande d'arrêt pour avoir 0,1@fs, vous devez appliquer une correction de fréquence:

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

Donc peut varier de à et vous aurez toutes les possibilités infinies entre les deux extrêmes. Pouvez-vous le faire? Oui. Est-ce que ça vaut le coup? Même si vous pourriez trouver un argument ou deux, la réponse générale est toujours non. Comment était-ce possible? Parce que la réponse initiale du filtre de Butterworth a déjà été obtenue, vous saviez au préalable que vous aviez une expression analytique pour un filtre qui a une atténuation de fréquence décroissante de façon monotone, ce qui conduit à trouver les pôles du dénominateur de la fonction de transfert, ce qui arrive à se coucher sur un cercle avec des angles égaux.ωscale10.9065


Compte tenu de la réponse récente de @Olli, certaines choses doivent être expliquées. Tout d'abord, tout cela concerne la conception du filtre, peu importe la façon dont vous le regardez: d'un point de vue mathématique ou physique.

S'il est mathématique, alors il y a une partie intéressante à propos de sa théorie, à savoir obtenir un ordre différent du même filtre sans avoir besoin de reconcevoir le filtre d'origine.

Mais d'un point de vue de la réalisabilité physique, l'ensemble du processus implique un travail supplémentaire, inutile, qui (devrait) conduire au même résultat, et c'est précisément la partie concernant l'augmentation / la diminution de l'ordre du filtre pour en obtenir un nouveau. Mes arguments sont les suivants.

Tout filtre, à sa base, sert à filtrer les fréquences inutiles, qu'elles soient électriques, mécaniques ou autres grandeurs physiques. Leur but est de modifier un spectre (ou un retard de groupe ou une réponse temporelle). S'il y a un besoin pour un tel appareil, alors cet appareil ne peut pas être conçu en jetant simplement un filtre de quelque sorte que ce soit, "il suffit de le mettre là, il filtrera les trucs"; sa conception est, le plus souvent, assez impliquée. Mais tout ce processus doit partir des exigences. Autrement dit, il doit d'abord y avoir un objectif spécifique, "filtrons tout ce qui dépasse ", ou "ne laissez passer que la lumière infrarouge", ou quelque chose de similaire, qui commence par déterminer d'abord les paramètres avec lesquels ce filtre doit fonctionner.100 Hz

À titre d'exemple rapide, s'il était nécessaire de filtrer les fréquences inférieures à et supérieures à , on ne se contenterait pas de jeter un filtre passe-bande avec ces fréquences de coin, les atténuations doivent également être spécifiées , si l'ondulation dans la bande passante, ou la bande d'arrêt, ou les deux, est nécessaire ou acceptée, que la phase soit linéaire ou non, comment le retard de groupe affectera tout cela, etc. Donc, tout d'abord, il y a des paramètres spécifiques par lesquels le le filtre doit être conçu.300 Hz3000 Hz

Une fois les paramètres spécifiés, comment le filtre sera-t-il conçu? Supposons qu'il existe un besoin pour un filtre passe-bas elliptique d'ordre 12 et qu'il soit possible d'augmenter un filtre d'ordre inférieur à un filtre d'ordre élevé (voir la réponse de @ Olli). Disons que le processus de transformation d'un 4e ordre en 12e ordre est sans faille, qu'il existe un moyen de spécifier les paramètres de conception pour le filtre du 4e ordre de telle manière qu'après la transformation, le 12e ordre résultant se retrouverait satisfaisant à ces conditions. "Pensée préméditée", si vous voulez.

La question qui se pose est la suivante: comment sera conçu le filtre de 4e ordre? La réponse ne peut être que par les moyens connus de le concevoir. Et s'il y a d'autres méthodes à venir ou à inventer, il faudrait d'abord les appliquer pour concevoir ce filtre de 4e ordre. Ce n'est qu'après que la 12e commande peut être calculée. Comme supposé depuis le début, même avec un processus de transformation sans faille, cela signifierait seulement que le filtre résultant, le 12e ordre, vers lequel la conception entière essaie de converger, a besoin de deux étapes de conception: une, pour le 4e ordre, et la seconde , pour le 12e ordre, rendant l'ensemble du processus inutilement encombré, puisque le filtre du 12e ordre aurait pu être simplement conçu, en premier lieu, avec la méthode utilisée pour le 4e ordre.

Allons un peu plus loin et supposons un peu plus. Les pôles résultants du 12ème ordre se trouveraient sur une ellipse, et les zéros sur l'axe imaginaire. Les distances entre eux seraient précisément définies par les fonctions elliptiques sous-jacentes qui régissent les filtres elliptiques. Supposons qu'il existe un moyen de définir ces courbes, comme @Olli l'espère, de telle manière qu'il soit possible de concevoir facilement un filtre depuis le début, en une seule fois, en utilisant simplement ces courbes (paramétriques ou non) par lesquelles toutes les le placement des pôles est fait. Jusqu'ici tout va bien. Mais ces courbes devraient d'abord être calculées, et les paramètres par lesquels elles se démêlent sont les mêmes que ceux utilisés pour la conception du filtre, les mêmes qui généreraient le filtre par d'autres méthodes, connues ou inconnues. De plus, les calculs restent à faire et, très probablement, les définitions sous-jacentes de ces courbes paramétriques devraient être elliptiques, d'une manière ou d'une autre, ou aucun filtre elliptique n'en sortirait [note # 1]. Ce qui signifie que l'ensemble du processus serait simplement une autre méthode de conception pour les filtres elliptiques, car les pôles du filtre elliptique ont déjà des expressions de forme fermée.

Ne vous méprenez pas. Si un filtre peut être conçu dans un sens, de la même manière qu'il peut être conçu dans un autre. Ce n'est qu'une de ces méthodes «encore à connaître». Bravo à l'inventeur. Mais si cette méthode de conception implique des étapes supplémentaires afin de converger vers les mêmes résultats qu'elle prendrait pour une méthode différente, cela ne semble pas être une approche réalisable. Et veuillez noter: je n'utilise pas de noms ou d'étiquettes descriptives lorsque je parle des conceptions de filtres, juste des noms génériques, car peu importe la méthode que vous utilisez tant que les résultats sont corrects et que la méthode n'est pas '' t encombrant pour le processus de conception.

[note # 1]: Il ne suffit pas de suivre simplement une courbe générique pour placer les pôles, et je vais donner deux exemples, liés aux filtres Butterworth, qui ont les pôles placés sur un cercle avec des angles équidistants. Les filtres de Chebyshev de type I ont les pôles placés sur une ellipse, avec les angles de Butterworth, mais projetés sur l'axe imaginaire jusqu'à ce qu'ils interceptent l'ellipse. La modification de la distance entre les pôles entraînera un comportement non équiripple, ce qui rendra le filtre un type non Chebyshev. De même, les pôles du filtre elliptique à Q minimum sont disposés sur un cercle sous-jacent, mais cela ne signifie pas que c'est un Butterworth (même si l'ondulation est le minimum possible pour un filtre elliptique), car il a des distances inégales entre les angles . Pour le dernier, ici '

Butterworth vs min-Q elliptic

Dans l'ensemble, malgré le véritable intérêt que la question suscite, je crains qu'elle n'ait plus qu'une valeur théorique, au mieux pédagogique, car elle ne parvient pas à s'adapter à la partie même de la conception du filtre. Bien sûr, s'il s'avérait avoir une valeur réelle, je serais heureux de me tromper, car cela signifierait qu'il existe une nouvelle méthode de conception de filtre, peut-être meilleure que celles déjà existantes.


@OlliNiemitalo Oui, c'est la version non carrée. Faites ce que le prêtre dit, pas ce qu'il fait. :-) Apest l'atténuation / ondulation de la bande passante dB, mais elle peut aussi être pour la bande d'arrêt, dans le cas de Cauer / Elliptic, Chebyshev inverse ou Pascal inverse. Je vois qu'il y a d'autres erreurs mineures, je vais les éditer.
un citoyen concerné

1
Olli, il existe de belles expressions de forme fermée pour Tchebyshevs et Butterworth. mais pas tant pour le filtre elliptique / Cauer. obtenir un alg bien défini pour cela (les loci des pôles et des zéros) est (comment dirons-nous?) une canine femelle en train de copuler .
robert bristow-johnson

1
@ robertbristow-johnson Malgré le synonim scientifique précis, il existe au moins 3 façons de représenter les pôles de Cauer. L'une est l'approximation (Antoniou ?, Dimopoulos?, Pas sûr), qui, je pense que c'est la plus large utilisée. Puis il y a la voie de Burrus qui suit avec précision les fonctions elliptiques, à savoir les zéros sont ±j/(ksn(iK/N,k)),i=1,2,..(différent impair / pair), mais cela nécessite l'utilisation des fonctions thêta et ainsi de suite, ce qui devient très "moelleux" en termes de CPU. Ensuite, il y a Lutovac, qui, même s'il ne peut pas utiliser de nombres premiers, les simplifie considérablement, mais ils grossissent à mesure que la commande augmente.
un citoyen inquiet du

1
@ robertbristow-johnson Moi non plus, comme mentionné à la fin de l'édition originale, et dans l'un des commentaires, mais il semble qu'il ait été édité en cours de route, je vais le corriger. Quant aux fonctions elliptiques, Burrus et une autre (oubli du nom, Paarman?) Utilisent la version , mais s n ( K + x ) = c d ( x ) , la déplacé Jacobi sinus, un fait noté par Lutovac. Donc, pour éviter d'avoir à calculer une intégrale elliptique supplémentaire complète, on peut écrire c d ( )sn(K+sn1())sn(K+x)=cd(x)cd(), il n'y a pas de différence. Un simple tracé peut le montrer ( ). k1=ϵp/ϵs,k=fp/fs,K1=K(k1),K=K(k)
un citoyen concerné

1
@ robertbristow-johnson Vous avez manqué la partie où je dis que toutes les expressions utilisent comme variable, car elles reflètent la fonction mathématique qui décrit la réponse du filtre, car elle est liée à l'approche mathématique d'Olli. Tracer toutes les fonctions avec x dans n'importe quel logiciel mathématique vous donnera l'amplitude, sans entrer dans le domaine fréquentiel. Je suis sorti en remplaçant x = j ω , en faisant H ( s ) H ( - s ) , et en sélectionnant uniquement les pôles / zéros du critère de Hurwitz, c'est-à-dire pour la conception du filtre. De plus, vous pouvez également obtenir les pôles sans cela (voir le lien dans le commentaire # 2).xxx=jωH(s)H(s)
un citoyen concerné

2

Alors que je sens intuitivement que je comprends ce qui est requis, j'ai du mal à l'exprimer. Je ne sais pas si c'est à cause de mes propres limites ou si le problème est difficile ou mal posé. J'ai le sentiment qu'il est mal posé. Alors, voici ma tentative:

  1. L'objectif est de construire un filtre. Autrement dit, calculez un ensemble de coefficients d'une forme rationnelle:

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

(Veuillez noter qu'il ne doit pas nécessairement être au-dessus du plan s, il peut également être au-dessus du plan z. Et aussi, des formes plus simples pourraient être envisagées (par exemple, pour n'avoir que des pôles). courir avec le s-avion pour le moment et gardons le nominateur aussi).H(s)

  1. Les filtres numériques sont caractérisés par leurs réponses en fréquence et en phase, les deux pouvant être entièrement déterminée par les valeurs (ou, les positions sur le plan s) de leur coefficients. Jusqu'à présent, la discussion semble se concentrer sur la réponse en fréquence, alors considérons celle-ci pour le moment.an,bm

  2. Étant donné un ensemble de certains et un certain point σ + j ω sur le plan s, la manière géométrique de dériver la réponse en fréquence à ce point est de former des "vecteurs zéro" (à partir des emplacements des zéros, vers le point spécifique) et les "vecteurs polaires" (de même pour les pôles), additionnent leurs grandeurs et forment le rapport comme dans l'équation ci-dessus.an,bmσ+jω

  3. Demander "Quels types de filtres [...] définis par un critère d'optimalité ont des sous-ensembles infinis définis par des courbes [...] paramétriques" revient à se demander "Quelle est la paire de certaines courbes paramétriques dont les emplacements entraînent également une courbe de réponse en amplitude avec des caractéristiques spécifiques souhaitées sur ΘA(s,Θ),B(s,Θ)Θ (par exemple pente, ondulation, autre) où est le ou les paramètres de la ... paramétrique.Θ

  4. Une note, à ce stade: D'une part, nous recherchons qui satisfont deux contraintes. Tout d'abord, ils doivent satisfaire aux contraintes du paramétrique (facile) et deuxièmement, ils doivent satisfaire aux contraintes spécifiées par la caractéristique de réponse en amplitude (difficile).A(s),B(s)

  5. Je pense que le problème, dans sa forme actuelle, est mal posé car il n'y a pas de moyen analytique de relier les contraintes de réponse en fréquence aux paramètres , à l'exception de son évaluation directeA(s,Θ),B(s,Θ) . En d'autres termes, il est impossible pour le moment de spécifier certaines contraintes sur la courbe de réponse en fréquence et à travers cela, de travailler en arrière et de trouver les paramètres qui satisfont à ces contraintes. Nous pouvons faire l'inverse, mais pas en arrière.

  6. Par conséquent, ce qui (je pense que) peut être fait de manière réaliste, pour le moment, est d'accepter une forme spécifique, puis de vérifier comment ils se comportent comme des filtres OU , déplacer itérativement leurs coefficients autant que le permet leur paramétrique, pour obtenir les meilleures performances qu'ils peuvent offrir dans une plage particulière de leur Θ . pourtantA(s,Θ),B(s,Θ)Θ, nous pourrions constater qu'étant donné les caractéristiques élaborées des elliptiques (par exemple), un schéma itératif donné sur un paramétrique pourrait choisir de "plier" les coefficients aussi près que possible d'une caractéristique de la région "elliptique". C'est pourquoi plus haut, je mentionne que nous pourrions trouver qu'un paramétrique complexe pourrait être décomposé en une "somme d'elliptiques" ou une "somme de courbes avec des caractéristiques connues". Peut-être qu'une troisième contrainte est nécessaire ici, lire "Restez à l'écart des configurations connues de ", en d'autres termes, pénalisez les solutions qui commencent à ressembler à des elliptiques (mais toujours dans un schéma itératif).A(s),B(s)

Enfin, si ce chemin n'est pas trop erroné jusqu'à présent, nous sommes quelque part près de quelque chose comme des algorithmes génétiques pour la conception de filtres , ou une autre technique éclairée "shoot in the dark" par laquelle les coefficients d'un filtre répondant à des critères spécifiques pourraient être dérivés avec . Ce qui précède n'est qu'un exemple, il existe plus de publications dans ce sens.

J'espère que cela t'aides.


+1 J'aime votre programme. Pour votre point n ° 4 et d'autres, l'objectif d'optimisation pourrait être énoncé en termes de ou généralement sa valeur absolue. Là encore, cela signifierait que nous comptons déjà sur la viabilité de l'approche, qui est en question. Il serait donc nécessaire de vérifier également avec certains filtres N finis . Au point # 7, je ne pense pas que la "répulsion des elliptiques" aiderait car elle donnerait des filtres quasi-elliptiques sous-optimaux. Au contraire, l'objectif d'optimisation doit être modifié. limN(H(iω))1/N,N
Olli Niemitalo

1
Je vous remercie. Je suis d'accord que l'objectif d'optimisation est crucial ici. La "répulsion des éliptiques" devrait être utilisée plus souvent ... :)
A_A

2

je ne pense pas qu'il soit particulièrement remarquable que les filtres de Butterworth, définis comme des filtres tous pôles qui soient au maximum plats à (pour le prototype LPF, ce qui signifie que les dérivées les plus possibles de | H ( j ω ) | sont nulles à ω = 0 ), ont des pôles du plan s qui sont également espacés sur le demi-cercle gauche de rayon ω 0 .ω=0|H(jω)|ω=0ω0

à partir du "maximum plat" et "pas de zéros", vous pouvez dériver

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

pour le -ordre Butterworth.N

donc

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

est un pôle lorsque le dénominateur est nul.s=pn

1+(pnjω0)2N=0

ou

(pnjω0)2N=1

pn2N=(jω0)2N

|pn|=ω0

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

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

pour Tchebyshev d'ordre (type 1, qui est unipolaire), c'est comme ceci:N

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

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

sont les polynômes de Tchebyshev d'ordre et satisfont la récursivité:N

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

et est la fréquence de "coupure de bande passante" et à ne pas confondre avec la fréquence -3 dB ω 0 . (mais les deux sont liés.)ωcω0

le paramètre d'ondulation de la bande passante est ϵ=10dBripple101

extension analytique à nouveau:

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

et encore est un pôle lorsque le dénominateur est nul.s=pn

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

ou

TN(pnjωc)=±jϵ

(parce que nous pouvons utiliser l' expression cos ( ) ou cosh ( ) pour T N ( )cos(θ)=cosh(jθ)cos()cosh()TN()

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

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

puisque

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

12th order elliptic to 4th order elliptic

(I'm not eligible to the bounty.) I tried to produce a counterexample to question 3 in Octave but was pleasantly surprised that I couldn't. If the answer to the question 3 is yes, then according to Fig 5. of the question, specific poles and zeros should be shared between an elliptic filter of order 4 and an elliptic filter of order 12, here shown explicitly: Shared poles and zeros
Figure 1. Poles and zeros potentially shared between elliptic filters of order N=12 and N=4, in blue and numbered in order of ascending parameter α of a parametric curve f(α).

Let's design an order 12 elliptic filter with some arbitrary parameters: 1 dB pass band ripple, -90 dB stop band ripple, cutoff frequency 0.1234, s-plane rather than z-plane:

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);

12th order filter magnitude frequency response
Figure 2. The magnitude frequency response of the 12th order elliptic filter designed using ellip.

scatter(vertcat(real(ra12), real(rb12)), vertcat(imag(ra12), imag(rb12)));

Poles and zeros, filter order 12
Figure 3. Poles (red) and zeros (blue) of order 12 elliptic filter designed using ellip. Horizontal axis: real part, vertical axis: imaginary part.

Let's construct an order 4 filter by reusing select poles and zeros of the order 12 filter, per Fig. 1. In the particular case, ordering the poles and zeros by the imaginary part is sufficient:

[~, 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);

Fourth order filter magnitude frequency response
Figure 4. Réponse en fréquence d'amplitude du filtre de 4e ordre qui a tous les pôles et les zéros identiques à certains de ceux du filtre de 12e ordre, selon la figure 1. Le zoom avant donne une caractérisation du filtre: équiripple de bande passante de 3,14 dB, - Equiripple de bande d'arrêt de 27,69 dB, fréquence de coupure 0,1234.

Je crois comprendre qu'une bande passante équiripple et une bande stop équiripple avec autant d'ondulations que le nombre de pôles et de zéros le permet est une condition suffisante pour dire que le filtre est elliptique. Mais essayons si cela est confirmé en concevant un filtre elliptique d'ordre 4 ellipavec la caractérisation obtenue à partir de la figure 3 et en comparant les pôles et les zéros entre les deux filtres d'ordre 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)));

Cela contre:

scatter(vertcat(real(ra4el), real(rb4el)), vertcat(imag(ra4el), imag(rb4el)), "blue", "x");

4th order filter pole/zero comparison
Figure 5. Comparaison des emplacements des pôles (rouge) et zéro (bleu) entre un ellipfiltre de 4e ordre (croix) et un filtre de 4e ordre (cercles) qui partage certains emplacements de pôle et zéro avec le filtre de 12e ordre. Axe horizontal: partie réelle, axe vertical: partie imaginaire.

Les pôles et les zéros coïncident entre les deux filtres à trois décimales, ce qui était la précision de la caractérisation du filtre dérivée du filtre d'ordre 12. La conclusion est qu'au moins dans ce cas particulier, les pôles et les zéros du filtre elliptique d'ordre 4 et ceux du filtre elliptique d'ordre 12 auraient pu être obtenus, au moins jusqu'à une précision, en les répartissant uniformément sur les mêmes courbes paramétriques . Les filtres n'étaient pas des filtres de type Butterworth ou Chebyshev I ou II car la bande passante et la bande d'arrêt avaient des ondulations.

Elliptique du 4ème ordre au elliptique du 12ème ordre

Inversement, les pôles et les zéros du filtre du 12e ordre peuvent-ils être approximés à partir d'une paire de fonctions continues ajustées aux pôles et aux zéros du ellipfiltre du 4e ordre ?

Si nous dupliquons les quatre pôles (Fig. 5) et retournons le signe des parties réelles des doublons, nous obtenons une sorte d'ovale. Au fur et à mesure que nous tournons autour de l'ovale, les emplacements des pôles que nous passons donnent une séquence discrète périodique. C'est un bon candidat pour une interpolation périodique à bande limitée par remplissage nul de sa transformée de Fourier discrète (DFT). Du résultat24 les pôles dont la partie réelle est positive sont éliminés, ce qui réduit de moitié le nombre de pôles 12. Au lieu des zéros, leurs inverses sont interpolées, mais sinon l'interpolation se fait de la même manière qu'avec les pôles. Nous commençons avec le même ellipfiltre de 4ème ordre que précédemment (approximativement identique à la figure 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);

Magnitude frequency response of the 4->12th order interpolated filter
Figure 6. Réponse en fréquence d'amplitude d'un filtre du 12e ordre avec les pôles et les zéros échantillonnés à partir des courbes correspondant à ceux du filtre du 4e ordre.

Il ne s'agit pas d'une maquette suffisamment précise de la réponse de la figure 2 pour être utile. La bande d'arrêt se porte plutôt bien mais la bande passante est inclinée. Les fréquences de front de bande sont approximativement correctes. Pourtant, cela montre un potentiel étant donné que les courbes paramétriques n'ont été décrites que par 4 degrés de liberté chacune.

Voyons comment les pôles et les zéros correspondent à ceux du N=12 ellip-filtre généré:

[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)));

Comparison of poles and zeros for N=12
Figure 7. Comparaison des emplacements des pôles (rouge) et zéro (bleu) entre un ellipfiltre du 12e ordre (croix) et un filtre du 12e ordre (cercles) dérivé du filtre du 4e ordre. Axe horizontal: partie réelle, axe vertical: partie imaginaire.

Les pôles interpolés sont assez éloignés, mais les zéros correspondent relativement bien. Un plus grandN comme point de départ doit être étudié.

Elliptique du 6e ordre au elliptique du 18e ordre

Faire la même chose que ci-dessus mais en commençant au 6e ordre et en interpolant au 18e ordre montre une réponse en fréquence d'amplitude apparemment bien comportée, mais a toujours des problèmes dans la bande passante lorsqu'on l'examine de près:

[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);

6th order <code>ellip</code>-generated filter
18th order filter derived from the
Figure 8. Haut) ellipFiltre généré par le 6e ordre , Bas) Filtre 18e ordre dérivé du filtre 6e ordre. Zoomé, la bande passante n'a que deux maxima et environ 1 dB d'ondulation. La bande d'arrêt est presque équiripple avec 2,5 dB de variation.

Je suppose que le problème au niveau de la bande passante est que l'interpolation limitée à la bande ne fonctionne pas assez bien avec les (parties réelles des) pôles.

Courbes exactes pour les filtres elliptiques

Il s'avère que les filtres elliptiques pour lesquels NNz=NNp=Nfournir des exemples positifs aux questions 1 et 2. C. Sidney Burrus, Traitement numérique du signal et conception de filtres numériques (ébauche). OpenStax CNX. Le 18 novembre 2012 donne les zéros et les pôles de la fonction de transfert d'un système suffisamment généralNNz=NNp=Nfiltre elliptique en termes de sinus elliptique de Jacobi sn(t,k). En notant que sn(t,k)=-sn(-t,k),Burrus Eq. 3.136 peut être réécrit pour des zérosszje, je=1N comme:

(1)szje=jksn(K+K(2je+1)/N,k),

K est un quart de sn(t,k) pour de vrai t, et 0k1peut être vu comme un degré de liberté dans le paramétrage du filtre. Il contrôle la largeur de bande de transition par rapport à la largeur de bande de passage. Reconnaître(2je+1)/N=2α (voir Eq. 2 de la question) où α est le paramètre de la courbe paramétrique:

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

Burrus Eq. 3.146 donne les pôles quart de plan supérieur gauche, y compris un vrai pôle pour les impairsN. Il peut être réécrit pour tous les pôlesspje, je=1N avec tout N comme:

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

dn(t,k)=1-k2sn2(t,k)est l'une des fonctions elliptiques de Jacobi. Certaines sources ontk2comme deuxième argument pour toutes ces fonctions et l'appeler le module. Nous avonsket appelez-le le module. La variable0<ν0<K´ can be thought of as one of the two degrees of freedom (k,ν0) of the sufficiently general parametric curves, and one of the three degrees of freedom (k,ν0,N) of a sufficiently general elliptic filter. At ν0=0 the pass band ripple would be infinite and at ν0=K´ where K´ is the quarter period of Jacobi elliptic functions with modulus 1k2, poles would equal zeros. By sufficiently general I mean that there is just one remaining degree of freedom that controls the pass band edge frequency and which will manifest itself as uniform scaling of both parametric curve functions by the same factor. The subset of elliptic filters that share fp(α), fz(α), and an irreducible fraction Nz/Pz=1, are transformed to another subset of infinite size in dimension N upon change of the trivial degree of freedom.

By the same substitution as with the zeros, the parametric curve for the poles can be written as:

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

Let's plot the functions and the curves in Octave, for values of k and ν0 (v0in the code) copied from Burrus Example 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
Figure 9. fz(α) and fp(α) for Burrus Example 3.4, analytically extended to period α=02. The three poles (red crosses) and the three zeros (blue circles, one infinite and not shown) of the example are sampled uniformly with respect to α at α=1/6, α=3/6, and α=5/6, from these functions, per Eq. 2 of the question. With the extension, the reciprocal of Im(fz(α)) (not shown) oscillates very gently, making it easy to approximate by a truncated Fourier series as in the previous sections. The other periodic extended functions are also smooth, but not so easy to approximate that way.

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
Figure 10. Parametric curves for Burrus Example 3.4. Horizontal axis: real part, vertical axis: imaginary part. This view does not show the speed of the parametric curve so the three poles (red crosses) and the three zeros (blue circles, one infinite and not shown) do not appear to be uniformly distributed on the curves, even as they are, with respect to the parameter α of the parametric curves.

Elliptic filter design by the exact pole and zero formulas given by Burrus is fully equivalent to sampling from the exact fp(α) and fz(α), so methods are equivalent and available. Question 1 remains open-ended. It may be that other types of filters have infinite subsets defined by fp(α) and fz(α) and Nz/Np. Of methods of approximating the elliptic parametric curves, those that do not depend on the exact functional form may be transferable to other filter types, I think most likely to those that generalize elliptic filters, such as some subset of general equiripple filters. For them, exact formulas for poles and zeros may be unknown or intractable.

Going back to Eq. 2, for odd N, we have for one of the zeros α=0.5, which sends it to infinity by sn(2K,k)=0. No such thing takes place with the poles (Eq. 4). I have updated the question to have such zeros (and poles, in case) included in the count NNz (or NNp). At k=0, all zeros go to infinity according to fz(α), which looks to give type I Chebyshev filters.

I think question 3 just got resolved and the answer is "yes". That, as it appears that we can cover all cases of elliptic filter without being in conflict with NNz=NNp, with the new definition of those.


Olli, tu ne peux pas te donner la prime de toute façon. vos 500 points sont partis pour toujours. ne les gaspillez pas comme je l'ai fait accidentellement une fois sur la page EE.SE.
robert bristow-johnson

Les commentaires ne sont pas pour une discussion approfondie; cette conversation a été déplacée vers le chat .
jojek

1
Oui, ils le sont toujours, c'est le cas spécial pour les commandes impaires, quand il y a un pôle réel supplémentaire, unique, re/(s+re), à la fonction de transfert. Quant à la fonction rationnelle à partir de zéros, seulement, vous avez:
R(X)=jen/2X2-zeroje2jn/2X2-k/zeroj2
, où k=Fs/Fp. Pour les commandes impaires,R(X)=R(X)X. Cela donnera au filtre un gain non normalisé, il doit donc être mis à l'échelle parR(0). Les Polonais viennent de l'expansion1+ϵ2R2(X) et trouver les racines du dénominateur, puis sélectionner le côté gauche et former la fonction de transfert.
un citoyen concerné

Je n'étais pas sûr d'avoir dit ça. Pour faire la fonction de transfert, il n'est pas vraiment nécessaire de suivre le livre en faisantH(s)H(-s), puis les pôles de gauche, puis la fonction de transfert rationnelle selon la formule de @ A_A. Mathématiquement, et le résultat pratique, c'est qu'après avoir trouvé les racines de1+ϵ2R2(X) (Remarque: X, ne pas jω, ou s), sélectionnez simplement les racines avec les parties réelles positives et les parties positives ou négatives (pas les deux). C'est à dire pourN=4, il y aurait 4 paires / 8 pôles; après sélection, vous avez 2 pôles différents. Alors simplement:
N(s)=jeN/2|pje|2
...
un citoyen concerné

(pour les filtres omnipolaires), où p=σ+jω, et
N(s)=jeN/2s2+|zje|2
, où z=jμ (pour les filtres à pôle zéro), tandis que le dénominateur:
(s)=jN/2s2+2Re(pj)s+|pj|2
et
H(s)=N(s)(s)
. Ce serait le prototype passe-bas.
un citoyen concerné

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.


And it would seem you missed OP's point: to find the Holy Graal of mathematical formulas that can be used to calculate any filter type (or similar). :-)
un citoyen concerné le

0

Je vais ajouter ici quelques notes qui peuvent être utiles si quelqu'un veut calculer la limite N du Nracine de magnitude d'une fonction de transfert avec un multiple de Npôles et zéros répartis sur des courbes paramétriques arbitraires. On pourrait l'approcher en utilisant un grandNet en répartissant uniformément les pôles et les zéros sur le paramètre de la courbe paramétrique. Malheureusement, l'approximation a toujours une erreur infinie sur l'échelle dB aux emplacements des pôles et des zéros de la fonction de transfert réalisable. En ce sens, un meilleur bloc de construction est un segment de ligne avec un pôle uniforme ou une distribution nulle sur toute sa longueur. Considérant justeN zéros, répartis sur un segment de ligne avec point de départ X0+y0je et point final X1+y1je:

limN|H(0)|1/N=01|(X0+y0je)(1-α)+(X1+y1je)α|α=01((X0(1-α)+X1X)2+(y0(1-α)+y1α)2)α=e01Journal((X0(1-α)+X1α)2+(y0(1-α)+y1α)2)α=e((X0y1-X1y0)atan2(X0y1-X1y0,X0X1+y0y1)(X0-X1)2+(y0-y1)2-1)×(X02+y02)(X1(X0-X1)+y0(y0-y1)+(X0-X1)22((X0-X1)2+(y0-y1)2))×(X12+y12)(X0(X1-X0)+y1(y1-y0)+(X1-X0)22((X1-X0)2+(y1-y0)2))

Certains cas spéciaux doivent être traités séparément. SiX0=0 et y0=0 nous devons utiliser la limite:

=e-1X12+y12

Ou inversement si X1=0 et y1=0:

=e-1X02+y02

Ou si le segment de ligne a une longueur nulle, X0=X1 et y0=y1, nous avons juste un zéro régulier:

=X02+y02

Pour effectuer l'évaluation à différentes valeurs d'argument de H(z) ou H(s), soustrayez simplement cette valeur des points de début et de fin de ligne.

À quoi cela ressemble sur le plan complexe: Figure 1. Amplitude de la fonction de transfert avec un seul zéro. Les pas de 1 dB sont indiqués en turquoise et les pas de 10 dB en jaune.Amplitude de la fonction de transfert avec un seul zéro

La limite N-> inf de la racine de magnitude N d'une fonction de transfert avec N zéros uniformément répartis sur un segment de droite
Figure 2. La limite N du Nracine de grandeur d'une fonction de transfert avec Nzéros uniformément répartis sur un segment de ligne. Il y a un pli au niveau du segment de ligne, mais la valeur ne va jamais à zéro comme avec un zéro régulier et réalisable. À une distance suffisante, cela ressemblerait à un zéro normal. Le code couleur est le même que sur la Fig.1.

entrez la description de l'image ici
Figure 3. Une approximation de la Fig. 2 en utilisant des zéros discrets: 5ème racine de la magnitude d'un polynôme avec 5 zéros répartis uniformément sur le segment de droite. À l'emplacement de chaque zéro, la valeur est zéro, car01/5=0.

Figues. 1 et 2 ont été générés à l'aide de ce croquis de traitement , avec le code source:

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();
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.