[Users-fr] Filtrer des données
Binoyte
binoyte at gmail.com
Mer 11 Déc 11:37:22 CET 2013
Le 10 décembre 2013 09:17, Serge Steer <Serge.Steer at scilab.org> a écrit :
> Le 10/12/2013 08:24, Binoyte a écrit :
>
> Bonjour,
>
>
> Je fais face aujourd'hui à une problématique de traitement du signal, ce
> qui n'est pas du tout ma spécialité. J'ai fait l'acquisition d'un signal
> qui est assez propre mais quand je le dérive, ça devient inexploitable tant
> le bruit est important.
>
> Je décide donc de filtrer le signal avant la dérivée en appliquant un
> filtre passe-bas de type Butterworth ayant une fréquence de coupure de 1/3
> F échantillonnage.
>
> Je défini d'abord l'objet filtre `oFiltre` :
>
> [pols , gain] = zpbutt(ordre, omega_c);
> oFiltre = gain / real(poly(pols,'s'));
> oFiltre.dt='c';
>
> zpbutt produit un filtre analogique (temps continu) et votre signal
> est discret (echantillonné) il vous faut donc convertir votre filtre en son
> "équivalent " discret
> oFiltred=dscr(oFiltre,1/F)
> vous pouvez ensuite appliquer le filtre avec
> filtree=flts(donnees,oFiltred);
>
> Pourquoi n'utilisez vous pas directement un filtre discret (voir iir ou
> eqiir)
>
Parce que là ça dépasse déjà mes compétences. A part les filtres
analogiques avec ampli op en TP de prépa, je ne connais pas grand chose
d'autre. Je suis plutôt mécanicien de formation. Mais je vais regarder
quand même, si ça m'évite quelques lignes dans le script.
Merci pour votre aide et votre réactivité. J'ai réussi à obtenir ce que je
souhaitais.
Benoît
>
> Serge Steer
> INRIA
>
> J'applique ensuite ce filtre à mes données :
>
> num = coeff( numer(oFiltre) );
> den = coeff( denom(oFiltre) );
> filtrees = filter(num, den, donnees);
>
> Les résultats ne sont pas du tout satisfaisants. En comparant avec ce que
> j'obtiens avec d'autres logiciels, comme Labview par exemple, je constate
> que les réponses en fréquence des filtres Scilab et Labview sont
> identiques, mais que les données filtrées sont différentes.
>
> Je pense qu'il y a une erreur dans mon script Scilab, car un détail me
> dérange. Nul part n’apparaît la fréquence d'échantillonnage. La variable
> `donnees` n'est qu'un vecteur et la fonction `filter()` n'a aucun moyen
> pour deviner le pas de temps. Je pense qu'il doit me manquer une mise à
> l'échelle, à l'instar de la fonction `diff()`
>
> diff(y,deg) * fs;
>
> Si quelqu'un à des pistes je suis preneur !
>
> Merci d'avance,
>
> Benoît
>
>
>
>
> _______________________________________________
> users-fr mailing listusers-fr at lists.scilab.orghttp://lists.scilab.org/mailman/listinfo/users-fr
>
>
>
> _______________________________________________
> users-fr mailing list
> users-fr at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users-fr
>
>
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <https://lists.scilab.org/pipermail/users-fr/attachments/20131211/58b143ca/attachment.htm>
Plus d'informations sur la liste de diffusion users-fr