Outils pour utilisateurs

Outils du site


francois:traitement_numerique_du_signal_avec_scilab

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
francois:traitement_numerique_du_signal_avec_scilab [2013/04/06 21:14] – francoisfrancois:traitement_numerique_du_signal_avec_scilab [2013/04/06 21:20] (Version actuelle) – francois
Ligne 1: Ligne 1:
 ====== introduction au traitement du signal avec scilab ====== ====== introduction au traitement du signal avec scilab ======
  
 +====== Synthèse des filtres à réponse impulsionnelle infinie ======
 +
 +===== Méthode de l’invariance impulsionnelle =====
 +<file iir_invar.sce>
 +//
 +clear
 +//
 +// définition des constante
 +Te=1e-3; w0=.01*2*%pi/Te; A=1;
 +//
 +// variable temps
 +t=Te*(0:128);
 +//
 +// réponse impulsionnelle
 +h=w0*exp(-w0*t);
 +//
 +// description du filtre par la transformée en z, numérateur puis dénominateur
 +H1n=A*w0*poly([0 1],'z','c');H1d= poly([-exp(-w0*Te) 1],'z','c');
 +//
 +// description d’un second filtre en ajustant le gain basse fréquence
 +A=(1-exp(-Te*w0))/w0;
 +//
 +H2n=A*w0*poly([0 1],'z','c');H2d= poly([-exp(-w0*Te) 1],'z','c');
 +//
 +//
 +//
 +// calcul de la réponse fréquentielle des deux filtres précédents
 +f=(0:.001:.05);
 +hdf1=freq(H1n,H1d,exp(2*%pi*%i*f));
 +hdf2=freq(H2n,H2d,exp(2*%pi*%i*f));
 +//
 +// affichage
 +xbasc(); xset("font size",4);
 +xsetech([0,0,1,.3]);plot2d(t,h, style=-9);plot2d3(t,h);xtitle("réponse impulsionnelle");
 +xsetech([0,1/3,1,.3]);plot2d(f,hdf1);xtitle("réponse fréquentielle pour A=1");
 +xsetech([0,2/3,1,.3]);plot2d(f,hdf2);xtitle("réponse fréquentielle corrigée");
 +</file>
 +
 +===== Transformation bilinéaire =====
 +
 +<file bilin.sce>
 +clear
 +//
 +// définition des constantes
 +Te=1e-3; Fcd=200;
 +//
 +// filtre analogique équivalent
 +Ga=analpf(6,'cheb1',[.1,0],2*%pi*Fcd);
 +//
 +// filtre analogique pour le calcul
 +teta=Fcd*(2*Te)*%pi;
 +Fcad=(2/Te*tan(teta/2))/(2*%pi);
 +Gad=analpf(6,'cheb1',[.1,0],2*%pi*Fcad);
 +//
 +// définition de la variable z
 +z=poly(0,'z');
 +//
 +// transformation bilinéaire
 +Gd=horner(Gad,2/Te*(z-1)/(z+1));
 +//
 +// calcul des points du filtre analogique équivalent
 +fa=(100:10:300);
 +Gain_a=freq(Ga(2),Ga(3),%i*2*%pi*fa);
 +//
 +// calcul des points du filtre numérique
 +fd=(.1:.01:.3);
 +Gain_d=freq(Gd(2),Gd(3),exp(%i*2*%pi*fd));
 +//
 +// affichage
 +xbasc(); xset("font size",4);
 +//
 +xsetech([0,0,1,.5]);plot2d(fa,20*log10(abs(Gain_a)), rect=[100, -60 300, 10]);
 +xtitle("réponse fréquentielle du filtre analogique équivalent","fréquence", "gain en dB");
 +//
 +xsetech([0,1/2,1,.5]);plot2d(fd,20*log10(abs(Gain_d)) ,rect=[0.1, -60 0.3, 10]);
 +xtitle("réponse fréquentielle du filtre numérique","f normalisée","gain en dB");
 +</file>
francois/traitement_numerique_du_signal_avec_scilab.1365282860.txt.gz · Dernière modification : (modification externe)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki