Bien que j'ai une solide expérience dans la conception de moteurs audio et autres, je suis relativement nouveau dans le domaine de la conception de filtres numériques, en particulier les filtres IIR et FIR. En d'autres termes, j'essaie d'apprendre autant que possible sur la façon de concevoir des filtres et de dériver leurs équations de différence. Je pars des bases, alors soyez indulgents, comme je l'ai dit, j'essaie d'apprendre.
Voici ma question:
Disons que je veux concevoir un filtre passe-bas avec une coupure particulière - disons 300 Hz. Quelle serait la meilleure façon de dériver mathématiquement la fonction de transfert, puis de dériver l'équation de différence particulière pour implémenter le filtre sous forme directe I et forme directe II (ou seulement DF-1 pour l'instant ...)?
J'ai une certaine compréhension des fonctions de transfert et de la façon dont elles se rapportent aux équations de différence à partir d'excellents documents sur le Web, malheureusement certaines d'entre elles supposent une bonne connaissance préalable, donc c'est plus déroutant qu'utile dans ma quête. Je suppose donc que j'ai besoin d'un exemple plus détaillé qui m'aidera à relier les points.
Donc, je cherche essentiellement de l'aide pour une ventilation du processus, du choix de la fréquence de coupure jusqu'à la dérivation de l'équation de différence.
Toute aide sera très appréciée. Je connais beaucoup de concepts - réponse impulsionnelle, DFT, les mathématiques derrière, je suppose que ce dont j'ai besoin de plus d'aide est le concept de la transformée en z et l'utilisation du pôle / zéro pour concevoir la fonction de transfert du filtre, puis comment la fréquence de coupure. jouer dans tout cela pour finalement dériver l'équation de différence.
Comme j'ai tendance à mieux apprendre par l'exemple, j'ai pensé demander ici. Merci beaucoup à tous ceux qui trouvent le temps de m'aider.
la source
Réponses:
La conception de filtres numériques est un sujet très vaste et mature et - comme vous l'avez mentionné dans votre question - il y a beaucoup de matériel disponible. Ce que je veux essayer ici, c'est de vous lancer et de rendre le matériel existant plus accessible. Au lieu de filtres numériques, je devrais en fait parler de filtres à temps discret car je ne considérerai pas ici la quantification des coefficients et des signaux. Vous connaissez déjà les filtres FIR et IIR, et vous connaissez également certaines structures de filtres comme DF I et II. Néanmoins, permettez-moi de commencer par quelques notions de base:
Un filtre linéaire non-récursif invariant dans le temps (LTI) peut être décrit par l'équation de différence suivante
où est la séquence de sortie, est la séquence d'entrée, est l'indice de temps, sont les coefficients du filtre et est la longueur du filtre (le nombre de prises). Les prises de filtre sont également la réponse impulsionnelle du filtre car si le signal d'entrée est une impulsion, c'est-à-dire , alorsy( n ) x ( n ) n hk N hk x ( n ) = δ( n ) y( n ) = hn (si la mémoire du filtre a été initialisée avec des zéros). L'équation (1) décrit un système de réponse impulsionnelle finie (FIR) linéaire invariable dans le temps. La somme sur le côté droit de (1) est une somme de convolution, c'est-à-dire que le signal de sortie est obtenu en convoluant le signal d'entrée avec la réponse impulsionnelle. Cela est toujours vrai, mais pour les filtres IIR, nous ne pouvons pas calculer explicitement la somme de convolution car la réponse impulsionnelle est infiniment longue, c'est-à-dire qu'il existe une infinité de coefficientshk . Un avantage important des filtres FIR est qu'ils sont toujours stables, c'est-à-dire que pour une séquence d'entrée bornée, la séquence de sortie est toujours bornée. Un autre avantage est que les filtres FIR peuvent toujours être réalisés avec une phase exactement linéaire, c'est-à-dire qu'ils n'ajouteront aucune distorsion de phase en dehors d'un retard pur. De plus, le problème de conception est généralement plus facile, comme nous le verrons plus loin.
Un filtre LTI récursif est décrit par l'équation de différence suivante:
L'équation (2) montre que la sortie n'est pas seulement composée d'échantillons d'entrée pondérés et retardés, mais également d'échantillons de sortie passés pondérés. En général, la réponse impulsionnelle d'un tel système est infiniment longue, c'est-à-dire que le système correspondant est un système IIR. Cependant, il existe des cas particuliers de filtres récursifs à réponse impulsionnelle finie. Notez que la réponse impulsionnelle n'est plus donnée par les coefficients ou comme dans le cas des filtres FIR. Un avantage des filtres IIR est que des filtres raides avec une forte atténuation de bande d'arrêt peuvent être réalisés avec beaucoup moins de coefficients (et retards) que dans le cas FIR, c'est-à-dire qu'ils sont plus efficaces sur le plan des calculs. Cependant, il faut faire attention au choix des coefficientsbk unek unek car le filtre IIR peut être instable, c'est-à-dire que leur séquence de sortie peut être illimitée, même avec une séquence d'entrée bornée.
Les filtres peuvent être conçus selon des spécifications dans le domaine temporel (échantillon) ou dans le domaine fréquentiel, ou les deux. Puisque vous avez mentionné une fréquence de coupure dans votre question, je suppose que vous êtes plus intéressé par les spécifications dans le domaine des fréquences. Dans ce cas, vous devez examiner les réponses en fréquence des systèmes FIR et IIR. La réponse en fréquence d'un système est la transformée de Fourier de sa réponse impulsionnelle, en supposant qu'elle existe (ce qui est le cas pour les systèmes stables). La réponse en fréquence d'un filtre FIR est
où est la variable de fréquence en temps discret:θ
avec la fréquence réelle et la fréquence d'échantillonnage . D'après (3), vous pouvez voir que l'approximation d'une réponse en fréquence souhaitée par un système FIR est fondamentalement un problème d'approximation polynomiale. Pour les systèmes récursifs, nous avonsF Fs
et vous obtenez un problème d'approximation rationnelle, qui est généralement beaucoup plus difficile que le problème d'approximation polynomiale dans le cas des filtres FIR. A partir de (3) et (4) on peut voir que la réponse en fréquence d'un filtre FIR est bien entendu qu'un cas particulier de la réponse d'un filtre récursif à coefficients , .unek= 0 k = 1 , … , N
Jetons maintenant un coup d'œil aux méthodes de conception des filtres. Pour les filtres FIR, vous pouvez prendre une transformée de Fourier inverse de la réponse en fréquence souhaitée pour obtenir la réponse impulsionnelle du filtre, qui correspond directement aux coefficients du filtre. Puisque vous approximez la réponse souhaitée par une réponse impulsionnelle de longueur finie, vous devez appliquer une fenêtre lisse à la réponse impulsionnelle obtenue pour minimiser les oscillations de la réponse en fréquence réelle dues au phénomène de Gibbs. Cette méthode est appelée méthode d'échantillonnage de fréquence.
Pour les filtres standard simples comme les filtres passe-bas, passe-haut, passe-bande ou coupe-bande idéaux (et quelques autres), vous pouvez même calculer analytiquement la réponse impulsionnelle exacte en prenant la transformée de Fourier inverse de la réponse souhaitée idéale:
Cette intégrale est facile à évaluer pour les réponses souhaitées constantes par morceaux, comme c'est le cas pour les filtres sélectifs en fréquence idéaux. Cela vous donnera une réponse impulsionnelle infiniment longue et non causale, qui doit être fenêtrée et décalée pour la rendre finie et causale. Cette méthode est connue sous le nom de conception de fenêtres.
Il existe bien sûr de nombreuses autres méthodes de conception de filtres FIR. Une méthode numérique importante est le célèbre algorithme d'échange de Parks-McClellan qui conçoit des filtres optimaux avec des ondulations de bande passante et de bande d'arrêt constantes. Il s'agit d'une méthode d'approximation numérique et il existe de nombreuses implémentations logicielles disponibles, par exemple dans Matlab et Octave.
La méthode de conception IIR la plus courante pour les filtres sélectifs en fréquence est la méthode de transformation bilinéaire. Cette méthode utilise simplement des formules analytiques pour la conception de filtres analogiques optimaux (tels que les filtres Butterworth, Chebyshev, Cauer / elliptique et Bessel), et les transforme dans le domaine à temps discret en appliquant une transformation bilinéaire à la variable complexe (analogique domaine) qui mappe l'axe de fréquence (imaginaire) du plan complexe au cercle unité dans le plan complexe (domaine à temps discret). Ne vous inquiétez pas si vous ne savez pas encore grand-chose sur les fonctions de transfert complexes dans le domaine analogique ou à temps discret car il existe de bonnes implémentations disponibles de la méthode de transformation bilinéaire, par exemple dans Matlab ou Octave.s s z
Il existe bien sûr de nombreuses méthodes plus intéressantes et utiles, selon le type de spécifications dont vous disposez, mais j'espère que cela vous aidera à démarrer et rendra plus compréhensible tout matériel que vous rencontrerez. Un très bon (et gratuit) livre couvrant certaines méthodes de conception de filtres de base (et bien plus) est Intoduction to Signal Processing par Orfanidis. Vous pouvez y trouver plusieurs exemples de conception. Un autre grand livre classique est Digital Filter Design de Parks and Burrus.
la source