Conception du filtre FIR: Window vs Parks McClellan and Least Squares


21

Y a-t-il des avantages à utiliser une approche de fenêtre par rapport à Parks-McClellan (plus abrégé ici en PMcC) ou aux algorithmes des moindres carrés pour la conception du filtre FIR d'un filtre passe-bas? Supposons avec la puissance de calcul d'aujourd'hui que la complexité des algorithmes eux-mêmes ne soit pas un facteur.

Cette question ne compare pas PMcC aux moindres carrés, mais spécifiquement s'il y a une raison d'utiliser une technique de conception FIR de fenêtre au lieu de ces algorithmes, ou les techniques de fenêtrage pour filtrer la conception sont-elles obsolètes par ces algorithmes et reléguées à des fins didactiques?

Voici une comparaison où j'avais comparé une fenêtre de Hamming à mon approche de conception préférée avec Least-Squared, en utilisant le même nombre de prises. J'ai élargi la bande passante dans l'approche Least Squared pour qu'elle corresponde étroitement à celle de la fenêtre Hamming, et dans ce cas, il était tout à fait clair que le Least-Squared surpasserait (offrant beaucoup plus de rejet de bande d'arrêt). Je ne l'ai pas fait avec toutes les fenêtres, ce qui m'amène à me demander si vous pourriez jamais dépasser les PMcC et les moindres carrés, ou s'il existe d'autres applications pour un filtre passe-bas FIR où une approche de fenêtrage serait préférée?

entrez la description de l'image ici


2
je pourrais suggérer de comparer Kaiser -windowed sinc à firpm()et à firls().
robert bristow-johnson

Réponses:


16

Je conviens que la méthode de conception du filtre de fenêtrage n'est plus l'une des méthodes de conception les plus importantes, et il se pourrait en effet qu'elle soit surreprésentée dans les manuels traditionnels, probablement pour des raisons historiques.

Cependant, je pense que son utilisation peut être justifiée dans certaines situations. Je ne suis pas d'accord pour dire que la complexité informatique n'est plus un problème. Cela dépend de la plateforme. Assis sur notre ordinateur de bureau et concevant un filtre, nous n'avons en effet pas à nous soucier de la complexité. Cependant, sur des plates-formes spécifiques et dans des situations où la conception doit être effectuée en temps quasi réel, la complexité de calcul est un problème, et une technique de conception sous-optimale simple sera préférée à une technique optimale beaucoup plus complexe. À titre d'exemple, j'ai déjà travaillé sur un système de formation de faisceaux où le filtre (formateur de faisceaux) devrait être repensé à la volée, et la complexité de calcul était donc un problème.

Je suis également convaincu que dans de nombreuses situations pratiques, nous n'avons pas à nous soucier de la différence entre la conception optimale et la conception sous-optimale. Cela devient encore plus vrai si nous devons utiliser l'arithmétique à virgule fixe avec des coefficients quantifiés et des résultats quantifiés d'opérations arithmétiques.

Un autre problème est la stabilité numérique des méthodes optimales de conception de filtres et de leurs implémentations. J'ai rencontré plusieurs cas où l'algorithme de Parks-McClellan (je devrais dire l' implémentation que j'ai utilisée) n'a tout simplement pas convergé. Cela se produira si la spécification n'a pas beaucoup de sens, mais cela peut également arriver avec des spécifications totalement raisonnables. Il en va de même pour la méthode de conception des moindres carrés où un système d'équations linéaires doit être résolu, ce qui peut devenir un problème mal conditionné. Dans ces circonstances, la méthode de fenêtrage ne vous laissera jamais tomber.

Une remarque sur votre comparaison entre la méthode des fenêtres et la conception des moindres carrés: je ne pense pas que cette comparaison montre une supériorité générale de la méthode des moindres carrés sur la méthode du fenêtrage. Tout d'abord, vous semblez regarder l'atténuation de la bande d'arrêt, qui n'est pas un objectif de conception pour l'une ou l'autre des deux méthodes. La méthode de fenêtrage n'est en aucun cas optimale et la conception des moindres carrés minimise l'énergie de la bande d'arrêt et ne se soucie pas du tout de la taille de l'ondulation de la bande d'arrêt. Ce qui peut être vu, c'est que le bord de la bande passante de la conception de la fenêtre est plus grand que celui de la conception des moindres carrés, tandis que le bord de la bande d'arrêt est plus petit. Par conséquent, la largeur de bande de transition du filtre conçu par fenêtrage est plus petite, ce qui entraînera des ondulations de bande d'arrêt plus élevées. La différence de largeur de bande de transition peut être faible, mais les propriétés du filtre sont très sensibles à ce paramètre. Il ne fait aucun doute que le filtre des moindres carrés surpasse l'autre filtre lorsqu'il s'agit d'arrêter l'énergie de la bande, mais ce n'est pas aussi facile à voir que la taille de l'ondulation. Et la question demeure si cette différence ferait réellement une différence dans une application pratique.

Permettez-moi de vous montrer que de telles comparaisons peuvent souvent être faites pour ressembler à ce que l'on souhaiterait. Dans la figure ci-dessous, je compare un filtre passe-bas optimal des moindres carrés conçu avec la fonction Matlab / Octave firls.m(bleu) à un filtre passe-bas conçu avec la méthode de fenêtre utilisant une fenêtre Kaiser (rouge).

entrez la description de l'image ici

D'après la figure, on pourrait même conclure que le filtre conçu par fenêtrage est légèrement meilleur que le filtre optimal des moindres carrés. Ceci est bien sûr insensé car nous n'avons même pas défini «mieux», et le filtre des moindres carrés doit avoir une erreur d'approximation quadratique moyenne plus petite. Cependant, vous ne voyez pas cela directement dans la figure. Quoi qu'il en soit, c'est juste pour étayer mon affirmation selon laquelle il faut être très prudent et clair lors de ces comparaisons.

En somme, en plus d'être utile à apprendre pour les étudiants DSP pour des raisons purement didactiques, je pense que malgré les avancées technologiques depuis les années 1970, l'utilisation de la méthode du fenêtrage peut être justifiée dans certains scénarios pratiques, et je ne pense pas que cela changer très bientôt.


Bonne réponse Matt- Quelques clarifications / questions: En ce qui concerne la complexité, pouvez-vous trouver un exemple réel? Je peux voir que c'est un problème avec la mise en œuvre, mais en trouvant les coefficients, je ne peux pas penser à une raison pour laquelle je ferais la conception sur une plate-forme inférieure (d'où ma question). En ce qui concerne la comparaison, les moindres carrés sont clairement meilleurs; pour la même ondulation et transition, vous obtenez une meilleure atténuation de la bande d'arrêt. J'avais augmenté la largeur de bande passante pour correspondre aux deux; le bord est légèrement plus grand car c'est là que j'ai arrêté de faire la correspondance, mais je pourrais me rapprocher pour conclure.
Dan Boschen

2
@DanBoschen: Bien sûr, dans la plupart des cas, la conception est effectuée hors ligne et la complexité n'est pas un problème. Cependant, je suis tombé sur des applications où les filtres devraient être repensés en temps quasi réel (c'était une application de formation de faisceaux), donc là vous avez le problème de la complexité.
Matt L.

1
Et quant aux économies réelles de nombre de robinets grâce à une conception optimale par rapport à une conception de fenêtre, les résultats que j'ai vus sont souvent décevants. Souvent, seulement 1 ou 2 taps, ce qui, pour de nombreuses implémentations, ne ferait pas beaucoup de différence.
Matt L.

1
OK, pour les conceptions hors ligne et si la stabilité numérique ne pose aucun problème (pour cette conception spécifique; en général, cela reste un problème), le fenêtrage ne serait pas utile. Mais en général, nous ne pouvons pas toujours compter sur des conceptions hors ligne, et plus important encore, nous ne pouvons pas toujours éviter les problèmes numériques. Je pense donc que le mot «obsolète» est encore un peu trop fort.
Matt L.

3
Très bien dit. La chose à retenir est que l'ingénierie consiste à trouver une implémentation suffisamment bonne pour répondre à vos besoins. La méthode window est simple à implémenter et fonctionne toujours. D'autres méthodes ont des implémentations plus compliquées et peuvent avoir des cas où elles sont difficiles à travailler. J'ai travaillé avec plusieurs systèmes qui doivent concevoir des filtres à la volée, et la méthode de la fenêtre est la solution idéale pour ces situations.
Jason R

7

Les filtres Windowed Sinc peuvent être générés de manière adaptative à la volée sur des processeurs à peine assez puissants pour exécuter le filtre FIR associé. Les filtres Sinc fenêtrés peuvent être générés en temps limité.

La génération de quelques filtres Sinc fenêtrés simples peut être complètement décrite (et inspectée pour les logiciels malveillants, etc.) en quelques lignes de code , par opposition à l'utilisation aveugle d'une boîte à outils opaque.

Moins de connaissances mathématiques préalables sont nécessaires pour expliquer un filtre Sinc fenêtré, par rapport à celui requis pour coder un générateur de filtre PMcC à partir de zéro.

Les ondulations égales dans la réponse en fréquence d'un filtre PMcC peuvent provoquer des artefacts dans le domaine temporel qui sont différents (et peut-être moins souhaitables) que les artefacts produits par un simple filtre à fenêtre.


1
Oui bon point @ hotpaw2, l'ondulation de la bande passante entraîne des interférences intersymboles (échos arrière et avant). Merci
Dan Boschen

2
Nous avons parlé de Parks – McClellan avant et après l'écho sur comp.dsp en 2003 . Alexey Lukin a publié un exemple minimal de MATLAB:, f=[0 0.49 0.51 1]; a=[1 1 0 0]; b=remez(300,f,a)qui s'exécute également dans Octave. Une explication est qu'avec des filtres très raides, les ondulations peuvent être suffisamment régulières pour ressembler à un cosinus. L'équivalent dans le domaine temporel du cosinus dans le domaine fréquentiel serait les deux échos impulsifs.
Olli Niemitalo

6

Je vais montrer ici un avantage d'un design fenêtré et une astuce pour obtenir le même avantage de Parks – McClellan.

Pour les filtres demi-bande, quart de bande, etc., le fenêtrage conserve les zéros du domaine temporel de la fonction sinc mise à l'échelle, qui est le filtre passe-bas idéal prototype. Les zéros se retrouvent dans les coefficients, ce qui réduit le coût de calcul des filtres. Pour un filtre demi-bande, la conception fenêtrée donne un filtre avec chaque coefficient pair 0 à l'exception du coefficient moyen (qui est également considéré comme pair):

Sinc
Figure 1. La fonction Sinc étirée horizontalement d'un facteur 2 est le filtre passe-bas demi-bande prototype avec un gain de 2, adapté au suréchantillonnage d'un facteur 2.

Cependant, Parks – McClellan / Remez peut être trompé pour donner les mêmes avantages en concevant en utilisant un filtre avec un nombre pair de prises avec seulement une bande passante de gain unitaire définie. Les coefficients obtenus sont utilisés comme coefficients impairs d'un filtre plus long. Le coefficient moyen du filtre le plus long est défini sur 1 et les autres coefficients pairs sur 0. Ce filtre a un gain de 2 dans la bande passante et une ondulation symétrique dans les bandes passante et d'arrêt. En Python:

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
c0 = signal.remez(14, [0, 3500.0/8000], [1])
c = np.zeros(c0.size*2-1)
c[0::2] = c0
c[c0.size-1] = 1
freq, response = signal.freqz(c)
plt.semilogy(freq/(2*np.pi), np.abs(response))
plt.show()
plt.plot(range(-c0.size+1, c0.size, 1), c, 'x')
plt.grid(True)
plt.show()

Figure 2.
Figure 2. Coefficients du filtre demi-bande conçu indirectement à l'aide de Python scipy.signal.remez.

Figure 3.
Figure 3. Diagramme de réponse en fréquence d'amplitude du filtre demi-bande conçu indirectement en utilisant scipy.signal.remez.

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.