il existe une classe de filtres FIR appelés filtres "Truncated IIR" (TIIR). vous pouvez google cela et vous trouverez des trucs de Julius Smith et Avery Wang. un autre exemple de filtres TIIR est le filtre Somme mobile ou Moyenne mobile ou le filtre CIC (tous des noms assez différents pour la même chose). ce qui fait de ce filtre récursif une FIR, c'est l'annulation du pôle zéro. tel qu'implémenté, il y a des pôles internes et s'ils étaient instables, le filtre pourrait exploser à l'intérieur, mais vous ne le verriez pas dans la sortie tant que les limites numériques n'auraient pas été dépassées.
robert bristow-johnson
1
quelles sont les limites numériques?
Black Yasmin
dépend du type numérique (flottant ou fixe) et de la largeur du mot. ce truc peut être recherché. . ( par exemple, pour les flotteurs IEEE-754 pour fixe, cela dépend de combien de bits, , sont laissés du point binaire, à peu près ± 2 n I - 1 .nI±2nI−1
Robert Bristow-johnson
merci encore messieurs pour toute aide! ça aide beaucoup, je suis content d'avoir trouvé ce site web
Black Yasmin
2
@AnthonyParks: Vous dites : " pourquoi les gens compliquent-ils la chose ... c'est clairement un IIR car le premier terme du filtre a une portion de rétroaction. "? Je dis : " pourquoi les gens ne prennent pas la peine de comprendre les concepts de base du DSP "? Le filtre IIR implique toujours la forme récursive, mais FIR ne signifie pas nécessairement que le filtre est non récursif. C'est la seule bonne réponse et vous confondez les concepts ici. Si c'était la question de l'examen, vous échoueriez en disant que c'est un IIR. Oppenheim explique ce sujet dans son livre sur DSP.
jojek
Réponses:
18
Il s'agit du filtre FIR , bien qu'il ressemble à un IIR. Si vous calculez les coefficients, vous obtenez une réponse impulsionnelle finie:
h = [ 1 ]
Cela se produit en raison de l'annulation du pôle zéro:
Oui( z) - 0,5 Y( z) z- 1= X( z) - 0,5 X( z) z- 1
H( z) = Y( z)X( z)= 1 - 0,5 z- 11 - 0,5 z- 1= 1
Oui, cela peut être délicat. Voir les coefficients dans LCCDE (Linear Constant Coefficients Difference Equation) ne signifie pas nécessairement qu'il s'agit d'un filtre IIR. Ce pourrait être juste un filtre FIR récursif.y[ n - k ]
merci pour la reconnaissance! J'ai été dupe de dire IIR, sans jamais regarder attentivement les coefficients ... J'ai supprimé ma réponse.
Fat32
Néanmoins, si vous implémentez les équations comme indiqué à l'origine, il ne se comportera pas exactement comme H (z) = 1 en raison des effets de longueur de mot finie (bien que l'annulation du pôle zéro soit exacte dans ce cas).
Oscar
C'est vrai @Oscar, mais ce sont des problèmes numériques qui n'ont rien à voir avec le filtre étant F / IIR.
jojek
1
@jojek: vous avez bien sûr tout à fait raison. Cependant, l'utilisation de filtres FIR récursifs pose pas mal de problèmes si vous n'êtes pas au courant de ces choses (ce que de nombreux chercheurs, même de «haute qualité», sont). D'où mon commentaire. Idéalement, il devrait également y avoir une discussion entre l'algorithme et la fonction de transfert.
Oscar
jojek je lis votre réponse à cette question vous avez répondu mais je ne peux pas commenter. dsp.stackexchange.com/questions/17605/… puis-je utiliser une fenêtre différente?
Black Yasmin
14
La réponse de Jojek est bien sûr correcte. Je voudrais juste ajouter quelques informations car j'ai trop souvent vu les termes "IIR" et "récursif" confondus. Les implications suivantes sont toujours valables:
IIRnon récursif⟹ récursif⟹ FIR
c'est-à-dire que chaque filtre IIR (c'est-à-dire un filtre à temps discret ayant une réponse impulsionnelle infiniment longue) doit être implémenté récursivement (sauf si vous avez une mémoire infinie disponible), et chaque système LTI non récursif a une réponse impulsionnelle finie (encore une fois, sauf si vous avez une infinie Mémoire).
Cependant, l'inverse n'est généralement pas vrai. Un filtre récursif peut avoir une réponse impulsionnelle finie, comme c'est le cas pour l'exemple de la question. Un autre exemple célèbre est un filtre à moyenne mobile. Il s'agit d'une implémentation non récursive d'une moyenne mobile (nécessairement FIR):
Concis et précis comme toujours, +1;) Merci d'avoir soulevé le cas MA.
jojek
1
@jojek: oui, je pense que c'est un classique que tout le monde devrait connaître.
Matt L.
Et alors que je pensais principalement au bruit d'arrondi dans le commentaire de la réponse de jojek, pour MA, le débordement sera un problème potentiel qui doit être soigneusement examiné. Facilement résolu par l'arithmétique du complément à deux et une longueur de mot suffisante.
Oscar
1
@Oscar: Eh bien, après avoir fait une analyse très simple avec une précision à double virgule flottante, j'ai eu une erreur de 8,881784197001252e-16 . Ceci après avoir traité l'équivalent d'un an d'audio à une fréquence d'échantillonnage de 44,1 kHz. Les données d'entrée sont un bruit gaussien avec une distribution normalisée. Voici le code pour reproduire le résultat ! Cliquez! (Cela peut prendre 3 jours). À condition que cela soit correct, je pense qu'il n'y a rien à craindre.
jojek
1
@jojek: Trois choses. 1) Je faisais référence au filtre de moyenne mobile de la réponse, pas à celui de la question d'origine. 2) Oui, c'est correct pour l'audio (mais pas exact, donc aucune raison de mettre "non" en gras), mais je préfère que mon traitement de signal critique de sécurité fonctionne indépendamment du signal d'entrée ayant des propriétés synthétiques. 3) Ce qui est intéressant, c'est que le filtre avec lequel vous avez simulé n'aura pas les problèmes que j'ai décrits (car le pôle est à l'intérieur du cercle unitaire, pas dessus), mais aura toujours des erreurs d'arrondi indépendantes de la représentation (ce qui peut être évité dans le cas de la moyenne mobile).
Réponses:
Il s'agit du filtre FIR , bien qu'il ressemble à un IIR. Si vous calculez les coefficients, vous obtenez une réponse impulsionnelle finie:
Cela se produit en raison de l'annulation du pôle zéro:
Oui, cela peut être délicat. Voir les coefficients dans LCCDE (Linear Constant Coefficients Difference Equation) ne signifie pas nécessairement qu'il s'agit d'un filtre IIR. Ce pourrait être juste un filtre FIR récursif.y[ n - k ]
la source
La réponse de Jojek est bien sûr correcte. Je voudrais juste ajouter quelques informations car j'ai trop souvent vu les termes "IIR" et "récursif" confondus. Les implications suivantes sont toujours valables:
c'est-à-dire que chaque filtre IIR (c'est-à-dire un filtre à temps discret ayant une réponse impulsionnelle infiniment longue) doit être implémenté récursivement (sauf si vous avez une mémoire infinie disponible), et chaque système LTI non récursif a une réponse impulsionnelle finie (encore une fois, sauf si vous avez une infinie Mémoire).
Cependant, l'inverse n'est généralement pas vrai. Un filtre récursif peut avoir une réponse impulsionnelle finie, comme c'est le cas pour l'exemple de la question. Un autre exemple célèbre est un filtre à moyenne mobile. Il s'agit d'une implémentation non récursive d'une moyenne mobile (nécessairement FIR):
la source