Filter (FPScript)
Filtre un ensemble de données avec un filtre à réponse impulsionnelle finie (FIR) ou à réponse impulsionnelle infinie (IIR).
Syntaxe
Filter(DataSet, b, [ a ] [ , PhaseCorrection = FALSE ])
ou
Filter(DataSet, FilterCoefficients [ , PhaseCorrection = FALSE ])
La syntaxe de la fonction Filter se compose des éléments suivants :
Section |
Description |
---|---|
DataSet |
L'ensemble de données à filtrer. Les structures de données autorisées sont Séries de données, Matrice de données, Signal et Série de signaux. Tous les types de données numériques sont autorisés. Si l'argument est une liste, alors la fonction est exécutée pour chaque élément de la liste et le résultat est également une liste. |
b |
Une série de données avec des coefficients numérateurs de la fonction de transfert du filtre. Dans le cas d'un filtre IIR, on peut également spécifier une matrice à trois lignes avec les coefficients des numérateurs d'une cascade de filtres d'ordre 2. Les structures de données autorisées sont Séries de données, Matrice de données et Liste. Tous les types de données numériques sont autorisés, à l'exception de Temps calendaire et Période de temps. |
a |
Une série de données avec des coefficients de dénominateur de la fonction de transfert du filtre. On peut aussi utiliser une matrice à trois rangées avec les coefficients des dénominateurs d'une cascade de filtres du deuxième ordre. Les structures de données autorisées sont Séries de données, Matrice de données et Liste. Tous les types de données numériques sont autorisés, à l'exception de Temps calendaire et Période de temps. |
FilterCoefficients |
Une liste avec les coefficients du numérateur et du dénominateur de la fonction de transfert du filtre. Vous devez nommer les éléments de la liste "b" et "a". Celles-ci peuvent être présentées sous la forme d'une série de données ou d'une matrice de données à trois lignes pour les coefficients d'une cascade de filtres d'ordre 2. Si vous ne spécifiez pas de nom, le premier élément de la liste sera utilisé comme "a" et le second comme "b". Si DataSet est une liste, alors vous avez la possibilité de faire passer cet argument pour une liste de listes. Les structures de données autorisées sont Liste. Tous les types de données numériques sont autorisés, à l'exception de Temps calendaire et Période de temps. |
PhaseCorrection |
La valeur TRUE précise qu'une correction de phase aura lieu après le filtrage. Les filtres à réponse impulsionnelle infinie (IIR) sont filtrés deux fois dans ce cas : une fois vers l'avant et une fois vers l'arrière. Avec les filtres à réponse impulsionnelle finie (FIR), la correction de phase s'effectue selon la formule t = T/2 (L - 1) si le filtre est impair ou t = LT/2 si le filtre est pair (L = longueur du filtre). La correction de phase n'est disponible qu'avec la licence de l'option Filtres Numériques. Les structures de données autorisées sont Scalaire. Les types de données pris en charge sont Valeur booléenne. Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété. Si l'argument n'est pas spécifié, il est défini à la valeur par défaut FALSE . |
Remarques
Le résultat a la même structure et la même unité que l'argument DataSet.
Avant le filtrage, les valeurs sont converties en valeurs réelles ou complexes à virgule flottante de 64 bits. Le type de données du résultat est toujours une valeur réelle ou complexe à virgule flottante de 64 bits. Si les coefficients du dénominateur a sont spécifiés, la première valeur de cette série de données doit être égale à un, ou dans chaque cas, la première ligne d'une matrice à trois lignes (si un affichage en cascade) doit être égale à un. Si ce n'est pas le cas, les coefficients de filtrage sont normalisés à l'aide de la valeur spécifiée. La première valeur de a ne peut pas être égale à zéro. Dans le cas d'un affichage en cascade, la première ligne de toutes les colonnes de la matrice à trois rangées ne doit pas contenir de zéro. La fonction met en œuvre le filtre en tant que système LTI avec "forme directe transposée II" selon le schéma fonctionnel suivant :
La structure correspond au système suivant d'équations différentielles :
Disponible dans
FlexPro Basic, Professional, Developer Suite
Exemples
Filter(Signal, 0.25 # 4) |
Lisse un signal avec une moyenne glissante avec une largeur de lissage de 4. |
Filter(Signal, [<b> {-0.245, -0.245}, <a> {-1, 0.509} ]) |
Effectue un filtrage passe-bas avec un filtre IIR unipolaire. |
Voir aussi
Objet d'analyse Filtre FIR (méthode Equiripple)
Objet d'analyse Filtre FIR (méthode de la fenêtre)
Littérature
[1] "Oppenheim, A. V. and Schafer, R. W.": "Discrete-Time Signal Processing, 2nd Edition". "Prentice Hall, New Jersey",1999.ISBN 0-13-754920-2.