De combien de prises un filtre FIR a-t-il besoin?


20

Je cherche à concevoir un ensemble de filtres FIR pour implémenter un filtre passe-bas. J'essaie également de réduire la latence du signal à travers le filtre, donc je me demande quel pourrait être le nombre minimum de taps que je peux utiliser.

Je sais que plus de taps peuvent conduire à une coupure plus nette de la fréquence et à une meilleure réjection de la bande d'arrêt, etc. Cependant, ce qui m'intéresse est plus fondamental - si je veux implémenter un filtre passe-bas avec coupure à Fs100 disent cela signifie-t-il que j'ai besoin d'au moins 100 taps pour atténuer les signaux de basse fréquence? Ou puis-je m'en tirer avec moins de robinets et si oui, y a-t-il une limite inférieure théorique?

Réponses:


24

Citant le traitement numérique classique des signaux de Bellanger - Théorie et pratique , le point n'est pas où est votre fréquence de coupure, mais combien d'atténuation dont vous avez besoin, combien d'ondulation dans le signal que vous souhaitez préserver, vous pouvez tolérer et, surtout, comment rétrécissez votre transition de la bande passante à la bande d'arrêt (largeur de transition).

Je suppose que vous voulez un filtre de phase linéaire (bien que vous spécifiez une latence minimale, je ne pense pas qu'un filtre de phase minimum soit une bonne idée, en général, à moins que vous sachiez bien ce que vous allez faire avec votre signal par la suite) . Dans ce cas, l'ordre de filtrage (qui est le nombre de prises) est

N23log10[110δ1δ2]fsΔf

avec

fs the sampling rateΔf the transition width, ie. the difference between end of pass band and start of stop bandδ1 the ripple in passband, ie. "how much of the original amplitude can you afford to vary"δ2 the suppresion in the stop band.

Connectons quelques chiffres! Vous avez spécifié une fréquence de coupure de , je vais donc continuer et déclarer que votre largeur de transition ne sera pas supérieure à la moitié, donc .fs100Δf=fs200

Issu de la technologie SDR / RF, une suppression de 60 dB est généralement tout à fait suffisante - le matériel, sans coûts fous, ne sera pas meilleur pour garder les signaux indésirables hors de votre entrée, alors meh, ne gaspillons pas le processeur avec un filtre fantastique qui est meilleur que ce que votre matériel peut faire. Par conséquent, δ2=60 dB=103 .

Disons que vous pouvez vivre avec une variation d'amplitude de 0,1% dans la bande passante (si vous pouvez vivre avec plus, envisagez également de rendre l'exigence de suppression moins stricte). C'est δ1=104 .

Donc, en branchant ceci:

NFiltre de Tommy23Journaldix[1dixδ1δ2]FsΔF=23Journaldix[1dixdix-4dix-3]FsFs200=23Journaldix[1dixdix-sept]200=23Journaldix[1dix-6]200=23(Journaldixdix6)200=236200=800 .

Donc, avec vos 200 taps, vous êtes loin, si vous utilisez une bande passante extrêmement étroite dans votre filtre comme je le pensais.

Notez que cela n'ont un problème - tout d'abord, un filtre 800-tap est effrayant, mais franchement, seulement à première vue:

  • Comme je l'ai testé dans cette réponse sur StackOverflow : le processeur est aujourd'hui rapide , si vous utilisez l'implémentation FIR optimisée par le processeur de quelqu'un. Par exemple, j'ai utilisé l' implémentation FFT-FIR de GNU Radio avec exactement le contour de spécification de filtre ci-dessus. J'ai obtenu une performance de 141 millions d'échantillons par seconde - cela pourrait ou pourrait ne pas vous suffire. Voici donc notre cas de test spécifique à la question (qui m'a pris quelques secondes à produire):Filtrage FIR FFT basé sur GNU Radiorésultats de taux: rate_avg = 1.40982e + 08
  • MMM=50120050=24
  • 96kSsridiculement141MMEs
  • 1100

3
Lake DSP réalisait 256 000 filtres FIR en temps réel du milieu au début des années 90. 1200 robinets? Phfffft! ;-)
Peter K.

2
@PeterK. C'est l'idée! Un profond respect pour cette FIR 256kT - la précision numérique avec laquelle ils ont construit doit être aussi époustouflante que la taille du design. Étant trop jeune pour en profiter moi-même sur le plan technologique, le début des années 90 a dû être une période intéressante. Parlé à un ingénieur il y a quelque temps qui a fait des circuits intégrés DFT à l'époque; le besoin d'ASIC DSP spécifiques à l'application semblait juste être élevé alors que les gens réalisaient ce qui était possible avec les plates-formes informatiques pour gérer les flux de données résultants, mais pas d'accélérateurs "polyvalents" (contrairement à aujourd'hui).
Marcus Müller

@PeterK., Oui, mais ces australiens nous tirent toujours la jambe.
robert bristow-johnson

@ robertbristow-johnson oy matey, qu'est-ce qui se passe ici: D?
Marcus Müller

2
@ MarcusMüller, bien qu'il semble y avoir eu une popularité accrue des ASIC à l'époque par rapport à aujourd'hui (et je pense que c'est parce que tout le monde qui était un spécificateur / concepteur ASIC utilise maintenant uniquement des FPGA), il y avait des DSP "polyvalents" au début Années 90. ce truc LakeDSP a été fait outa 6 DSP56001.
robert bristow-johnson

14

Pour une estimation rapide et très pratique, j'aime la règle d'or de Fred Harris:

Ntuneps=UNEtten22BT

où:

Atten est l'atténuation souhaitée en dB,

BTBT=Fstop-FpunessFs

FstopFpuness

Fs

Cela est très proche de ce que vous obtiendriez pour un filtre de phase linéaire avec une ondulation de bande passante de 0,1 dB. J'utilise souvent cette règle empirique pour me faire une première idée du nombre de prises nécessaires, puis je modifie par itération dans le processus de conception du filtre.

À noter également: cette règle empirique donne un excellent aperçu de ce qui motive réellement le nombre de taps: atténuation de la bande d'arrêt et raideur de la bande de transition (et ondulation de la bande passante, mais généralement - au moins pour les filtres que j'ai dû concevoir pour applications de communication sans fil - l'exigence d'atténuation l'emporterait sur l'ondulation). Donc, votre question en déclarant une coupure à Fs / 100 manque de savoir à quelle vitesse vous devez passer à une bande d'arrêt.

FsFpunessFstop

Ntuneps=60222/100=137

Jouer avec ces chiffres peut également démontrer l'importance de la réduction du traitement en utilisant des approches de décimation.


7

Ajoutant à la réponse acceptée, quelques références supplémentaires. Je n'écrirai pas les formules qui peuvent être impliquées. Ces formules fournissent principalement des règles de base ou des approximations pour commencer. Vous pouvez jouer avec ces chiffres pour votre conception actuelle.

L'une des origines de la conception de Bellanger est: Sur la complexité de calcul dans les filtres numériques, 1981, Proc. EUR. Conf. Circuit Theory Design, M. Bellanger. C'est assez difficile à obtenir, mais c'est faisable . Fait intéressant, il spécifie également des formules pour évaluer le nombre de bits par coefficient, qui doivent être pris en compte dans la mise en œuvre de l'arithmétique finie. Une version plus accessible en français est: Evaluation de la complexité des filtres numériques , 1982.

Plusieurs autres formules sont regroupées dans Finite impulse response filter design , Handbook for digital signal processing, 1993, T. Samamaki.

Plus récemment, vous pouvez lire Estimation précise de la longueur de filtre minimale pour des filtres numériques FIR optimaux , 2000, K. Ichige et al.

Enfin, le papier Conception efficace des filtres FIR avec des commandes de filtres minimales en utilisant l'optimisation de la norme l0 , 2014 revendique une conception où l'ordre est progressivement diminué.


4

minimiser max(|H(ω)|)pour tous ω dans la bande d'arrêt
sujet à1δ|H(ω)|δ pour tous ω dans la bande passante

Les principaux problèmes pratiques auxquels je peux penser seraient le nombre d'échantillons de fréquence utilisés lors de l'optimisation, car le comportement des échantillons inter-fréquences peut provoquer des effets indésirables. La qualité de l'ajustement dépend du nombre de tarauds. Je suppose que vous pourriez dire que le nombre minimum de prises est lorsque le problème devient irréalisable. Une solution serait donc de résoudre le problème de faisabilité.

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.