filterDesign
Description
L'action filterDesign est l'architecte de vos filtres numériques au sein de SAS Viya. Elle permet de calculer les coefficients et de définir la structure de filtres classiques comme Butterworth ou Chebyshev. C'est un peu comme fabriquer un tamis sur mesure pour vos données : vous décidez de ce qui passe et de ce qui reste à la porte des fréquences, sans avoir besoin d'un diplôme en traitement du signal (enfin, presque) !
Paramètres Clés
| Nom du paramètre | Description |
|---|---|
| filterCutoff1 | Spécifie la fréquence de coupure basse du filtre. C'est une valeur entre 0 et 1, où 1 représente la fréquence de Nyquist. Obligatoire pour tous les types de filtres. |
| filterCutoff2 | Spécifie la fréquence de coupure haute. Ce paramètre est requis uniquement si vous utilisez un type de filtre 'bandpass' (passe-bande) ou 'bandstop' (coupe-bande). |
| filterName | Le nom du design du filtre : 'butter' ou 'butterworth', 'cheby1' (Chebyshev Type I) ou 'cheby2' (Chebyshev Type II). |
| filterOrder | L'ordre du filtre, un entier positif (maximum 200). Plus l'ordre est élevé, plus la transition entre la bande passante et la bande coupée est nette. |
| filterType | Le type de filtrage souhaité : 'lowpass' (passe-bas), 'highpass' (passe-haut), 'bandpass' (passe-bande) ou 'bandstop' (coupe-bande). |
| filterOutTable | Désigne la table CAS de sortie qui contiendra la définition technique du filtre conçu. |
| filterRp | Spécifie l'ondulation (ripple) autorisée dans la bande passante en décibels (dB). Requis uniquement pour les filtres Chebyshev Type I. |
| filterRs | Spécifie l'atténuation dans la bande coupée en décibels (dB). Requis uniquement pour les filtres Chebyshev Type II. |
| casOut | Table de sortie optionnelle pour stocker les paramètres spécifiques du filtre. |
| inputVarName | Nom de la variable d'entrée associée au filtre (par défaut 'signal'). |
| smoothedVarName | Nom de la variable de sortie lissée (par défaut 'output'). |
Préparation des données
Préparation de l'environnement
Comme cette action génère un design de filtre plutôt que de traiter des données existantes, nous créons simplement une bibliothèque pour recevoir les résultats.
| 1 | cas mysess; |
| 2 | caslib _all_ assign; |
Exemples d'utilisation
Conception d'un filtre passe-bas Butterworth
Cet exemple crée un filtre de Butterworth d'ordre 4 avec une fréquence de coupure à 0.2.
| 1 | PROC CAS; |
| 2 | timeFilters.filterDesign / |
| 3 | filterName="butter", |
| 4 | filterType="lowpass", |
| 5 | filterOrder=4, |
| 6 | filterCutoff1=0.2, |
| 7 | filterOutTable={name="butter_low"}; |
| 8 | RUN; |
Résultat Attendu :
Design avancé d'un filtre passe-bande Chebyshev Type I
Ici, on conçoit un filtre plus complexe pour isoler une bande de fréquence spécifique (0.1 à 0.4) avec une ondulation contrôlée de 3dB.
| 1 | PROC CAS; |
| 2 | timeFilters.filterDesign / |
| 3 | filterName="cheby1", |
| 4 | filterType="bandpass", |
| 5 | filterOrder=8, |
| 6 | filterCutoff1=0.1, |
| 7 | filterCutoff2=0.4, |
| 8 | filterRp=3, |
| 9 | inputVarName="MaSerie", |
| 10 | smoothedVarName="SerieLissée", |
| 11 | filterOutTable={name="cheby_band", replace=true}, |
| 12 | casOut={name="cheby_params", replace=true}; |
| 13 | RUN; |