Étant donné que la discussion dans les réponses et commentaires existants a principalement porté sur ce que sont réellement les filtres Savitzky-Golay (ce qui était très utile), je vais essayer d'ajouter aux réponses existantes en fournissant quelques informations sur la façon de choisir réellement un filtre de lissage, qui est, à ma connaissance, sur quoi porte réellement la question.
Tout d'abord, je voudrais répéter ce qui est devenu clair dans la discussion résultant des autres réponses: la catégorisation des filtres de lissage dans la question en filtres FIR / IIR linéaires et invariants dans le temps (LTI) d'une part, et D'autre part, les filtres Savitzky-Golay sont trompeurs. Un filtre Savitkzy-Golay n'est qu'un filtre FIR standard conçu selon un critère spécifique (approximation polynomiale locale). Tous les filtres mentionnés dans la question sont donc des filtres LTI.
La question restante est de savoir comment choisir un filtre de lissage. Si la complexité de calcul et / ou la mémoire sont un problème, les filtres IIR peuvent être préférables aux filtres FIR, car ils permettent généralement une suppression du bruit comparable (c'est-à-dire une atténuation de la bande d'arrêt) avec un ordre de filtrage beaucoup plus faible que les filtres FIR. Mais notez que si un traitement en temps réel est nécessaire, un inconvénient possible des filtres IIR est qu'ils ne peuvent pas avoir une réponse de phase exactement linéaire. Le signal souhaité subira donc des distorsions de phase. Pour le traitement hors ligne, les distorsions de phase peuvent être évitées, même avec des filtres IIR, en appliquant un filtrage de phase zéro .
En dehors des considérations discutées dans le paragraphe précédent, c'est principalement le critère de conception qui importe, pas tant si le filtre est FIR ou IIR, car tout filtre IIR (stable) peut être approximé avec une précision arbitraire par un filtre FIR, et tout Le filtre FIR peut être approximé par un filtre IIR, même si ce dernier peut être beaucoup plus difficile. Le critère de conception approprié dépend évidemment des propriétés des données et du bruit. En ce qui concerne le lissage, nous supposons généralement des données suffisamment suréchantillonnées (c'est-à-dire lissées). Si le bruit a principalement des composantes à haute fréquence, c'est-à-dire s'il y a peu de chevauchement spectral entre les données et le bruit, nous voulons maximiser l'atténuation de la bande d'arrêt, ou minimiser l'énergie de la bande d'arrêt, tout en préservant le signal souhaité aussi bien que possible. Dans ce cas, nous pourrions choisir un filtre FIR à phase linéaire conçu selon un critère minimax en utilisant l'algorithme de Parks-McClellan. Nous pourrions également minimiser l'énergie de la bande d'arrêt (c'est-à-dire minimiser la puissance du bruit dans la bande d'arrêt) en choisissant une méthode des moindres carrés. Un mélange entre les deux critères (minimax et moindres carrés) est possible en choisissant unconception des moindres carrés contraints , qui minimise l'énergie de la bande d'arrêt tout en limitant l'erreur d'approximation maximale dans la bande passante.
Si le spectre de bruit chevauche considérablement le spectre du signal, une approche plus prudente est requise et l'atténuation par force brute ne fonctionnera pas bien car soit vous laissez trop de bruit (en choisissant la fréquence de coupure trop élevée), soit vous déformez la valeur souhaitée. trop de signal. Dans ce cas, les filtres Savitzky-Golay (SG) peuvent être un bon choix. Le prix à payer est une atténuation médiocre de la bande d'arrêt, mais un avantage est que certaines propriétés du signal sont très bien préservées. Cela a à voir avec le fait que les filtres SG ont une réponse en bande passante plate, c'est-à-dire
rékH( ej ω)réωk|ω = 0= 0k = 1 , 2 , … , r(1)
où est l'ordre du polynôme approximatif et est la réponse en fréquence du filtre. La propriété garantit que les premiers moments du signal d'entrée sont préservés dans la sortie, ce qui signifie que la largeur et la hauteur des pics dans le signal souhaité sont bien préservées.rH( ej ω)( 1 )r
Bien entendu, il existe également un compromis entre les deux types de filtres de lissage évoqués ci-dessus (forte atténuation de la bande d'arrêt et SG). Nous pourrions concevoir un filtre FIR avec un certain degré de planéité à et utiliser les degrés de liberté restants pour maximiser l'atténuation de la bande d'arrêt ou minimiser l'énergie de la bande d'arrêt. Dans le cas des filtres FIR, le problème de conception qui en résulte est suffisamment simple (et convexe), et des routines d'optimisation générales disponibles dans plusieurs logiciels peuvent être utilisées pour obtenir le filtre optimal pour l'application donnée.ω = 0
Pour ceux qui s'intéressent à la théorie des filtres SG, les références les plus pertinentes que je peux recommander sont les suivantes:
REMARQUE
ma réponse précédente (avant cette modification) dénotant le filtre Savitzky-Golay (SG) comme un filtre non linéaire dépendant des données d'entrée était erronée, en raison d'une mauvaise interprétation prématurée de la façon dont un filtre Savitzky-Golay (SG) calcule sa sortie selon le lien wiki fourni. Alors maintenant, je le corrige pour le bénéfice de ceux qui verraient également comment les filtres SG sont implémentables par le filtrage FIR-LTI. Merci à @MattL. pour sa correction, le grand lien qu'il a fourni et la patience qu'il a eu (que je n'aurais jamais pu montrer) lors de mon enquête sur la question. Bien que je préfère honnêtement une objection plus verbeuse qui n'est clairement pas nécessaire néanmoins. Veuillez également noter que la bonne réponse est l'autre, celle-ci est juste pour une clarification supplémentaire de la propriété LTI des filtres SG.
Maintenant, il n'est pas surprenant que lorsque quelqu'un (qui n'a jamais utilisé ces filtres auparavant) fait face à la définition du filtre SG comme un ajustement polynomial LSE d'ordre inférieur à des données données, il / elle saute immédiatement à la conclusion que ceux-ci sont dépendants des données, non linéaires et filtres adaptatifs variant dans le temps (décalage).
Pourtant, la procédure d'ajustement polynomial est intelligemment interprétée par SG eux-mêmes, de sorte qu'elle permet un filtrage linéaire complètement indépendant des données, invariable dans le temps, rendant ainsi SG un filtre LTI-FIR fixe.
Ce qui suit est un résumé le plus court du lien fourni par MattL. Pour tout détail qui semble manquer, veuillez consulter le document d'origine, ou demander à clarifier. Mais je ne voudrais pas reproduire tout le document ici.
Maintenant, pour ceux qui connaissent la procédure de polyfit LSE, je vais simplement écrire l'équation de matrice résultante (à partir du lien) qui définit l'ensemble de coefficients optimal:
Maintenant, penchons-nous un instant et discutons d'un point ici.
... Ceci (le polyfit LSE) peut être répété à chaque échantillon de l'entrée, produisant à chaque fois un nouveau polynôme et une nouvelle valeur de la séquence de sortie y [n] ...
Alors, comment surmonter cette surprenante surprise? En interprétant et en définissant la sortie du filtre SG comme suit:
COMMENTAIRE
CODE MATLAB / OCTVE
La sortie est:
J'espère que cela clarifie le problème.
la source