Les filtres IIR que signifie l'infini?


11

J'ai du mal à comprendre ce que signifie "infini" dans l'IIF dans la pratique. En théorie, la réponse impulsionnelle est utilisée pour le feedback. Si ce feedback n'arrête jamais la façon dont la sortie est générée?

Réponses:


18

Pour répondre à cette question, vous devez savoir ce que "impulsion" et "réponse" signifient ...

Une "impulsion" est une simple impulsion. Numériquement, ce serait un échantillon avec une valeur maximale, tandis que tous les autres échantillons avant et après, ce serait zéro. Si vous écoutiez cela, vous entendriez quelque chose comme un pop ou un pétard.

La "réponse" est la sortie d'un filtre (ou autre chose) reçoit l'impulsion.

Par exemple, vous pouvez écouter la "réponse impulsionnelle d'une pièce" en entrant dans la pièce, en faisant un simple coup de main et en écoutant l'écho. Il faudrait un peu de pratique pour que le coup de main soit aussi "pointu" que possible. Obtenir la réponse impulsionnelle d'un filtre est la même manière, mais au lieu d'un coup de main, vous utilisez une impulsion simple et au lieu d'une pièce, vous avez un filtre.

Si vous regardez la réponse impulsionnelle d'un filtre ou d'une pièce, vous verrez la sortie se trémousser pendant un certain temps après l'impulsion (et parfois elle se trémousse avant aussi). Dans la pièce, vous avez entendu cette agitation comme l'écho. Dans un filtre, ce tremblement est directement lié à la réponse en fréquence et en phase du filtre. Dans une pièce, la durée pendant laquelle vous entendez l'écho s'appelle le "temps de réverbération" - il n'y a pas de terme correspondant pour un filtre, mais cela fait partie de la réponse impulsionnelle.

Maintenant, un filtre FIR (Finite Impulse Response) est fini car le temps de réponse impulsionnelle est limité par les mathématiques. Il est mathématiquement impossible que le temps de réponse impulsionnelle dépasse le nombre de prises dans le filtre - il est donc fini .

Un filtre IIR, d'autre part, n'a pas cette limitation mathématique dans le temps de réponse impulsionnelle. Si on lui donne une précision mathématique infinie, un filtre IIR peut remuer les sorties pour toujours. Bien sûr, dans un sens pratique, cela ne dure jamais éternellement, car à un moment donné, la manœuvre devient plus petite que la précision des mathématiques utilisées et disparaît donc.


merci pour la belle explication! Où se déroule la rétroaction dans l'IIF?
GorillaApe

2
@Parhs: la rétroaction a lieu car la sortie actuelle est dérivée des valeurs d' entrée et de sortie précédentes , tandis que pour le filtre FIR, la sortie est dérivée uniquement des valeurs d' entrée précédentes .
Paul R

1
@Parha Feedback est un effet secondaire de la topologie. Et par topologie, je veux dire quelque chose comme un organigramme ou une vue "schématique" du filtre. Fondamentalement, les résultats d'une opération mathématique à une étape alimentent une autre opération à une étape précédente. Voilà ce que sont les commentaires. La plupart des gens trouvent que les FIR sont plus faciles à utiliser car ils n'ont pas cette rétroaction. Cette rétroaction est difficile à faire fonctionner correctement, mais elle a une grande efficacité.

Un système IIR a un état interne qui «se souvient» de l'entrée précédente pour toujours. La façon dont vous modélisez cela consiste à réinjecter les sorties précédentes dans la sortie actuelle, comme cette biquade directe de forme 1 , ou de manière équivalente une boucle de rétroaction à l'entrée, comme cette biquade canonique de forme directe 2 .
Eryk Sun

11

La réponse impulsionnelle est la signature du filtre. Dans le cas d'un filtre FIR, la réponse impulsionnelle vous donne une image directe des coefficients du filtre. L'impulsion est un échantillon unique avec une amplitude maximale, tous les échantillons avant et après sont nuls. (Il s'agit de l'équivalent numérique d'une impulsion Dirac.)
Au moment de l'impulsion, sa valeur est multipliée par (voir diagramme du bas). Les autres échantillons sont nuls, donc la sortie est égale à (je suppose une valeur maximale pour l'impulsion de 1). Un échantillon plus tard, l'impulsion a déplacé un bloc et est multipliée par . Encore une fois, toutes les autres valeurs sont nulles, donc la sortie est y b 0 z - 1 b 1 b 1 b ib0yb0z1b1b1. Etc. Pendant que l'impulsion se déplace à travers le filtre, vous obtenez les valeurs successives de à la sortie. Après N échantillons, l'impulsion est décalée hors du filtre et la sortie redevient nulle. Pour un filtre IIR, il n'est pas si évident de dériver les coefficients de filtre de la réponse impulsionnelle. bi

IIR
Dans un filtre IIR (en partie), le signal traité est renvoyé à l'entrée. Cela signifie qu'il y aura toujours des résidus du signal en boucle. La plupart du temps, cependant, cette partie du signal sera toujours plus petite et finira par être nulle, mais en théorie, elle ne disparaît jamais complètement. Le diagramme ci-dessous montre un filtre biquad, une implémentation souvent utilisée d'un filtre IIR. La branche gauche prend des valeurs d'entrée (retardées), la branche droite fonctionne avec des valeurs de sortie (retardées). (Un bloc représente un retard de 1 échantillon. Les biquades sont souvent en cascade. z1

entrez la description de l'image ici

FIR Les
filtres FIR, d'autre part, ont un chemin linéaire de l'entrée à la sortie. Après N échantillons, le signal d'entrée (comme une impulsion Dirac) aura été décalé et c'est la fin.
Les filtres FIR sont intrinsèquement stables, contrairement aux filtres IIR.

entrez la description de l'image ici


1
cette boucle singal ne peut pas être dangereuse donnant des résultats indésirables dans certains cas?
GorillaApe

2
C'est certainement possible. Utilisez les mauvais chemins ou gains de rétroaction et vous pouvez créer un filtre instable ou un filtre qui émet une sinusoïde de quelque chose pour toujours. Ce n'est généralement pas ce que vous voulez qu'un "filtre" fasse, il existe donc des techniques pour analyser la stabilité et éviter l'instabilité.
Olin Lathrop

La somme de tous les termes de rétroaction doit-elle remonter au début de la chaîne de rétroaction, ou la sortie des termes ultérieurs peut-elle être additionnée dans l'entrée des termes ultérieurs? Alors que je m'attendrais à ce que tout filtre qui pourrait être réalisé de cette façon puisse se transformer en la forme que vous avez illustrée, je dirais qu'il existe une sous-classe utile de filtres IIR qui peut être formée à partir de filtres de premier ordre en cascade (où chacun la sortie de chaque terme à droite peut se nourrir mais aucun de ses prédécesseurs)
supercat

1
@supercat - Il suffit d'avoir une forme de rétroaction pour avoir un filtre IIR. Vous n'avez pas besoin de passer de la sortie à l'entrée, comme le chemins et dans le filtre biquad. - un 2a1a2
stevenvh

@stevenvh: Comme je l'ai noté dans ma réponse, il existe un sous-ensemble utile de filtres IIR où une étape peut se renvoyer à elle-même mais sans aucune étape précédente; Je ne sais pas si j'ai lu un terme pour décrire de tels filtres, mais ils sont beaucoup plus faciles à caractériser que les filtres IIR généralisés. Bien qu'ils puissent être rendus avec les bons coefficients sous la forme ci-dessus, il serait plus difficile de reconnaître un tel filtre (y a-t-il un terme pour eux?) Sous cette forme.
supercat

4

Il existe deux grandes classes de filtres numériques, la réponse implicite infinie (IIR) et la réponse impulsionnelle finie (FIR). Encore une fois, les filtres IIR sont basés sur des équations et sur des filtres FIR.

Les filtres IIR sont plus comme des filtres analogiques du monde réel. Par exemple, considérez une décroissance exponentielle simple comme vous le feriez avec un filtre passe-bas analogique RC. La réponse de sortie à une entrée pas à pas est une exponentielle qui se rapproche de plus en plus de l'entrée. Notez que cette exponentielle n'atteint jamais réellement la sortie, seulement assez près pour que nous ne nous soucions pas ou ne pouvons pas mesurer l'erreur. En ce sens, un tel filtre est inifinite. Un filtre IIR a les mêmes caractéristiques.

Le filtre IIR passe-bas unipolaire très courant peut être exprimé comme suit:

FILT <- FILT + FF (NOUVEAU - FILT)

Cela signifie que chaque itération de la sortie est déplacée d'une fraction fixe (FF, la "fraction de filtre") de la distance à l'entrée. Ceci est facile à visualiser lorsque FF = 1/2. Si tout est 0 et que l'entrée passe soudainement à 1 et y reste (un pas d'unité), alors la sortie sera 1/2, 3/4, 7/8, 15/16, etc. Il s'agit d'une série infinie. Finalement, la valeur sera si proche de 1 qu'elle sera exprimée comme 1 car les valeurs numériques de l'ordinateur n'ont pas une précision infinie.

Les filtres FIR fonctionnent sur un principe totalement différent. Un extrait récent fini du signal d'entrée est enregistré, et chacune des valeurs enregistrées est multipliée par un coefficient différent, puis tous les résultats sont ajoutés pour produire la sortie du filtre pour cette itération. L'itération suivante, la plus ancienne valeur enregistrée est rejetée, les autres sont décalées d'un emplacement plus ancien et la nouvelle entrée est placée dans l'emplacement libéré. Le nouvel extrait enregistré est ensuite multiplié par les coefficients, etc. Ce processus est connu sous le nom de "convolution" et le tableau des coefficients est souvent appelé noyau de filtre. Certaines choses fantaisistes et utiles peuvent être faites avec ce type de filtre en faisant preuve de créativité avec les coefficients. C'est tout un sujet sur lequel je n'entrerai pas maintenant. Cependant, puisqu'un extrait fini de l'entrée est stocké en mémoire, n'importe quelle partie du signal d'entrée ne peut affecter la sortie que pendant un temps fini. Une fois qu'un échantillon d'entrée est déplacé vers la fin de l'extrait stocké, il disparaît et n'a plus aucun effet sur la sortie.

Il y a des livres entiers écrits sur ce sujet et vous pouvez passer plusieurs semestres de cours universitaires à approfondir cela. J'espère que mon aperçu de 30 secondes le démystifie suffisamment pour répondre à votre question.


1

Un point qui n'a pas encore été mentionné est que les filtres IIR peuvent être subdivisés en deux styles: ceux où les étapes peuvent être classées, de sorte que chaque étape dépend entièrement de ses propres valeurs antérieures et de celles des étapes précédentes, et celles où les les étapes ne peuvent pas être classées (car deux ou plusieurs étapes dépendent les unes des autres). Il est possible que les étapes d'un filtre FIR fassent référence aux sorties précédentes d'autres étapes, à condition qu'elles puissent être classées comme dans l'ancien style de l'IIF, et aucune étape ne fait référence à sa propre sortie précédente.

Si les étapes d'un filtre IIR peuvent être classées et si l'amplitude totale des coefficients d'auto-rétroaction pour une étape donnée est inférieure à un, le filtre IIR est garanti stable. Si, par exemple, un étage comprend une certaine quantité de signal des étages précédents, plus la moitié de la valeur précédente de cet étage et 1/4 de la valeur avant cela, moins 1/8 de la valeur avant cela, la magnitude totale de l'auto la rétroaction sera de 7/8, donc en l'absence de nouvelles entrées des étages inférieurs, l'ampleur de la contribution de l'auto-rétroaction diminuerait de 12,5% à chaque itération.


0

Une FIR, fait ses calculs sur un nombre fini d'éléments, disons 32 ou 12 ou un certain nombre, mais c'est ce que fait le calcul, prendre un nombre fini d'éléments et effectuer le filtre uniquement sur ceux-ci.

Un IIR fait son calcul sur tous les échantillons que vous lui donnez. Si vous lui donnez 10 échantillons et que vous l'arrêtez, cela a fonctionné sur 10 échantillons, si vous l'avez alimenté à 1 000 000 000 d'échantillons, les calculs ont fonctionné à 1 000 000 000 d'échantillons. Et si vous laissez la chose fonctionner indéfiniment, approchant de l'infini (laissez-la fonctionner indéfiniment), le nombre d'éléments est également indéfini approchant l'infini. Parce que le mot fini s'applique clairement à l'autre modèle, et que le modèle IIR est destiné à ne pas avoir un nombre fini d'échantillons, le mot infini comme l'opposé de fini sonne juste mieux que indéfini ou un autre de ces mots.


"opéré sur 1.000.000.000 d'échantillons". Eh bien, pas directement. Étant donné qu'une partie de la sortie est utilisée dans le calcul de l'échantillon suivant, il y aura toujours des traces d'échantillons précédents. Le filtre contiendra toujours un nombre très limité d'échantillons. Et ce n'est pas "indéfini"; c'est déterministe, même s'il peut être instable.
stevenvh

c'est ce que j'impliquais que chaque échantillon a des effets, mais faibles, sur tous les échantillons qui l'ont précédé, pour l'IIF.
old_timer

Le nombre infini vs fini d'éléments dans le calcul n'est pas la différence entre IIR et FIR. L'IIF le plus simple ne fonctionne que sur 2 éléments de données: 1 de l'entrée, 1 de la sortie.
radagast

L'infini ne provient pas du nombre d'entrées mais du nombre de cycles accumulés, le fini ne prend que N échantillons d'échantillons pour une seule entrée dans les mathématiques, l'infini fonctionne efficacement à chaque cycle. Nombre fini de cycles vs nombre infini de cycles pour une seule entrée.
old_timer
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.