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
N≈23log10[110δ1δ2]fsΔf
avec
fsΔfδ1δ2 the sampling rate the transition width, ie. the difference between end of pass band and start of stop band the ripple in passband, ie. "how much of the original amplitude can you afford to vary" 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=10−3 .
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=10−4 .
Donc, en branchant ceci:
NFiltre de Tommy≈ 23Journaldix[ 110 δ1δ2]FsΔ f= 23Journaldix[ 110 ⋅ 10- 4⋅ 10- 3]FsFs200= 23Journaldix[ 110 ⋅ 10- 7]200= 23Journaldix[ 1dix- 6]200= 23( journaldixdix6)200= 23⋅ 6 ⋅ 200= 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):
- MMM= 50120050= 24
- 96kSs≪ridiculement141MMEs
- 1100
Pour une estimation rapide et très pratique, j'aime la règle d'or de Fred Harris:
où:
Atten est l'atténuation souhaitée en dB,
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.
Jouer avec ces chiffres peut également démontrer l'importance de la réduction du traitement en utilisant des approches de décimation.
la source
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é.
la source
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é.
la source