francois:traitement_numerique_du_signal_avec_scilab
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| francois:traitement_numerique_du_signal_avec_scilab [2013/04/06 21:11] – Fichier généré par le plugin odt2dw à partir du fichier introduction au traitement du signal avec scilab.odt francois | francois: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 ====== | ||
| - | < | ||
| - | **Introduction au traitement du signal avec Scilab** | + | ====== Synthèse |
| - | + | ||
| - | **__Représentation d’un signal sinusoïdal dans les domaines temporel et fréquentiel.__** | + | |
| - | + | ||
| - | // les commentaires sont précédés de deux barres | + | |
| - | + | ||
| - | // on peut utiliser indifféremment majuscules et minuscule, mais « s » n’est pas « S » | + | |
| - | + | ||
| - | // la séparation de la partie entière d’un nombre et des décimales se fait par « . » et non « , » | + | |
| + | ===== Méthode de l’invariance impulsionnelle ===== | ||
| + | <file iir_invar.sce> | ||
| // | // | ||
| - | |||
| clear | clear | ||
| - | |||
| - | nb_pts=16 | ||
| - | |||
| - | // si on ne souhaite pas voir le résultat s’afficher, | ||
| - | |||
| - | pas=2e-3 | ||
| - | |||
| // | // | ||
| - | |||
| - | t=pas*(0 : | ||
| - | |||
| - | // t est un vecteur ligne allant de 0 à nb_pts par pas de 1, multiplié par « pas » | ||
| - | |||
| - | // l’incrément étant par défaut unitaire, il peut être omis ici | ||
| - | |||
| - | // | ||
| - | |||
| - | amp=3 ; f=100 ; | ||
| - | |||
| - | s=amp*sin(2*%pi*f*t) | ||
| - | |||
| - | // les constantes prédéfinies (pi, j, e etc) sont précédées de « % » | ||
| - | |||
| - | //s est un vecteur ligne, de même nombre de points que t | ||
| - | |||
| - | // | ||
| - | |||
| - | // initialisation des paramètres d’affichage | ||
| - | |||
| - | xbasc() ; xset(" | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | plot2d(t,s) // affichage de s en fonction du temps | ||
| - | |||
| - | // commentaires divers | ||
| - | |||
| - | xtitle (" | ||
| - | |||
| - | // initialisation de l’affichage | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | // gestion du premier graphe dans la fenêtre, position (0,0), largeur 1, hauteur 1/2 | ||
| - | |||
| - | xsetech([0, 0, 1,1/2]); | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | plot2d(t, | ||
| - | |||
| - | // commentaires divers | ||
| - | |||
| - | xtitle (" | ||
| - | |||
| - | // | ||
| - | |||
| - | // gestion du second graphe dans la fenêtre, position (0,1/2), largeur 1, hauteur 1/2 | ||
| - | |||
| - | xsetech([0, 1/2, 1,1/2]); | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | plot2d(s) | ||
| - | |||
| - | // commentaires divers | ||
| - | |||
| - | xtitle (" | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des constantes, nombre de points, période d’échantillonnage et fréquence du signal | ||
| - | |||
| - | N=1000 ; Te=0.1e-3 ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // description du vecteur temps et vecteur signal | ||
| - | |||
| - | t=Te*(0: | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc() ; xset(“font size”,5); | ||
| - | |||
| - | plot2d(t, | ||
| - | |||
| - | // définition d'une variable fréquence pour l' | ||
| - | |||
| - | // le premier point correspond au continu | ||
| - | |||
| - | // le dernier à la fréquence d' | ||
| - | |||
| - | f=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul de la transformation | ||
| - | |||
| - | sf=fft(s, | ||
| - | |||
| - | // | ||
| - | |||
| - | // initialisation de l' | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage du module brut de forme | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage du module corrigé de 0 à fe/2 | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | // zoom sur la raie, de la fréquence nulle à fe/5 | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | **__Représentation d’un signal périodique quelconque__** | ||
| - | |||
| - | clear | ||
| - | |||
| - | // définition des constantes : nombre d' | ||
| - | |||
| - | // nombre total de points, fréquence d' | ||
| - | |||
| - | Nech_symb=10 ; Nsymb=12 ; N=Nech_symb*Nsymb ; Fe=1e3 ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // variable temps | ||
| - | |||
| - | t=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // écriture d'un symbole +/- 5 | ||
| - | |||
| - | symb=5*[ ones(1, Nech_symb/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // répétion du symbole pour constituer le signal | ||
| - | |||
| - | S=matrix(symb' | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); xset ("font size", 4); | ||
| - | |||
| - | plot2d2(t, | ||
| - | |||
| - | **__Modulation d’amplitude__** | ||
| - | |||
| - | ===== **__Modulation sans porteuse__** ===== | ||
| - | |||
| - | clear | ||
| - | |||
| - | // définition des constantes | ||
| - | |||
| - | N=500 ; fe=500e3 ; fp=50e3 ; finf=4e3; | ||
| - | |||
| - | // | ||
| - | |||
| - | // description des vecteurs temps, fréquence (pour l’affichage de la fft) et signal | ||
| - | |||
| - | t=(0: | ||
| - | |||
| - | sinf=2*sin(2*%pi*finf*t); | ||
| - | |||
| - | // | ||
| - | |||
| - | // initialisation de l' | ||
| - | |||
| - | xbasc() ; xset( "font size", 4); | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage du signal informatif | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage du signal porteur | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage du signal modulé | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // calcul des modules des fft | ||
| - | |||
| - | Sinf=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // initialisation de l' | ||
| - | |||
| - | xbasc() ; xset( "font size", 4); | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage du signal informatif | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage du signal porteur | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage du signal modulé | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | clear ; | ||
| - | |||
| - | // définition des constantes | ||
| - | |||
| - | N=500 ; fe=500e3 ; fp=50e3 ; finf1=4e3; finf2=2e3; finf3=5e3; | ||
| - | |||
| - | // | ||
| - | |||
| - | // description des vecteurs temps, fréquence (pour l’affichage de la fft) et signal | ||
| - | |||
| - | t=(0: | ||
| - | |||
| - | // | ||
| - | |||
| - | sinf=2*sin(2*%pi*finf2*t)+1*sin(2*%pi*finf1*t)+1.5*sin(2*%pi*finf3*t); | ||
| - | |||
| - | spor=5*sin(2*%pi*50e3*t); | ||
| - | |||
| - | smod=spor.*sinf; | ||
| - | |||
| - | // | ||
| - | |||
| - | // initialisation de l' | ||
| - | |||
| - | xbasc() ; xset( "font size", 4); | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage du signal informatif | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage du signal modulé | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // calcul des modules des fft | ||
| - | |||
| - | Smod=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // initialisation de l' | ||
| - | |||
| - | xbasc() ; xset( "font size", 4); | ||
| - | |||
| - | // affichage du signal informatif | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage du signal modulé | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | clear | ||
| - | |||
| - | // définition des constantes | ||
| - | |||
| - | N=500 ; fe=500e3 ; fp=50e3 ; finf1=4e3; finf2=10e3; finf3=15e3; | ||
| - | |||
| - | // | ||
| - | |||
| - | // description du vecteur temps | ||
| - | |||
| - | t=(0: | ||
| - | |||
| - | // | ||
| - | |||
| - | // les fréquences en vecteur colonne | ||
| - | |||
| - | frequence=[4e3; | ||
| - | |||
| - | // | ||
| - | |||
| - | // les amplitudes en vecteur ligne | ||
| - | |||
| - | amplitude=[1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul du signal modulé | ||
| - | |||
| - | sinf_2=amplitude*sin(2*%pi*frequence*t); | ||
| - | |||
| - | // | ||
| - | |||
| - | //affichage | ||
| - | |||
| - | xbasc(); plot2d(t, | ||
| - | |||
| - | ===== **__Modulation en bande latérale unique__** ===== | ||
| - | |||
| - | clear | ||
| - | |||
| - | // définition des constantes | ||
| - | |||
| - | N=5000 ; fe=500e3 ; fp=50e3 ; finf1=4e3; finf2=3e3; finf3=5e3; | ||
| - | |||
| - | // | ||
| - | |||
| - | // description des vecteurs temps, fréquence (pour l’affichage de la fft) et signal | ||
| - | |||
| - | t=(0: | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des différents signaux informatif, porteur et double bande | ||
| - | |||
| - | sinf=2*sin(2*%pi*finf2*t)+1*sin(2*%pi*finf1*t)+1.5*sin(2*%pi*finf3*t); | ||
| - | |||
| - | spor=5*sin(2*%pi*50e3*t); | ||
| - | |||
| - | smod=spor.*sinf; | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul de la fonction de transfert du filtre et des valeurs de cette fonction sur la gamme de fréquence | ||
| - | |||
| - | G=analpf(8,' | ||
| - | |||
| - | gain=freq( G(2), G(3), %i*2*%pi*f); | ||
| - | |||
| - | // | ||
| - | |||
| - | // filtrage par multiplication dans le domaine fréquentiel | ||
| - | |||
| - | Smod=fft(smod, | ||
| - | |||
| - | Sblu=Smod.*gain; | ||
| - | |||
| - | // | ||
| - | |||
| - | //affichage dans le domaine spectral | ||
| - | |||
| - | xbasc() ; xset( "font size", 4); | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // définition des paramètres d' | ||
| - | |||
| - | Nmin=N/50 ; Nmax=N/5; f_aff=f(Nmin: | ||
| - | |||
| - | // | ||
| - | |||
| - | Smod_dB=20*log10(1/ | ||
| - | |||
| - | gain_dB=20*log10( abs(gain(Nmin: | ||
| - | |||
| - | Sblu_dB= 20*log10(1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage en dB | ||
| - | |||
| - | xbasc(); xset( "font size", 4); | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | // retour dans l' | ||
| - | |||
| - | Sblu=Sblu(1: | ||
| - | |||
| - | Sblu=[Sblu(1 : | ||
| - | |||
| - | sblu=fft(Sblu, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage dans le domaine temporel | ||
| - | |||
| - | xbasc() ; xset( "font size", 4); | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // définition des constantes | ||
| - | |||
| - | N=5000 ; fe=500e3 ; fp=50e3 ; finf1=4e3; finf2=3e3; finf3=5e3; | ||
| - | |||
| - | // | ||
| - | |||
| - | // description du vecteur temps | ||
| - | |||
| - | t=(0: | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des différents signaux informatif, modulé bande supérieure et inférieure | ||
| - | |||
| - | s_inf=2*sin(2*%pi*(finf2)*t)+1*sin(2*%pi*(finf1)*t)+1.5*sin(2*%pi*(finf3)*t); | ||
| - | |||
| - | sblu_inf=5*cos(2*%pi*(fp-finf2)*t)+2.5*cos(2*%pi*(fp-finf1)*t)+3.75*cos(2*%pi*(fp-finf3)*t); | ||
| - | |||
| - | sblu_sup=-5*cos(2*%pi*(fp+finf2)*t)-2.5*cos(2*%pi*(fp+finf1)*t)-3.75*cos(2*%pi*(fp+finf3)*t); | ||
| - | |||
| - | s_dif=sblu_sup-sblu_inf; | ||
| - | |||
| - | // | ||
| - | |||
| - | xbasc() ; xset( "font size", 4); | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | **__Modulations angulaires__** | ||
| - | |||
| - | ===== **__Visualisation temporelle d’un signal modulé en phase__** ===== | ||
| - | |||
| - | clear | ||
| - | |||
| - | // définition des constantes | ||
| - | |||
| - | N=400 ; fe=1e6 ; fp=50e3 ; finf=5e3; ind=5; | ||
| - | |||
| - | // | ||
| - | |||
| - | // description des vecteurs temps et signal | ||
| - | |||
| - | t=(0: | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | sinf=1*sin(2*%pi*finf*t); | ||
| - | |||
| - | smod= 1*sin(2*%pi*fp*t + ind*sinf); | ||
| - | |||
| - | // | ||
| - | |||
| - | // initialisation de l' | ||
| - | |||
| - | xbasc() ; xset( "font size", 4); | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage du signal informatif | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage du signal modulé | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | clear | ||
| - | |||
| - | // constante de suréchantillage | ||
| - | |||
| - | N=16; | ||
| - | |||
| - | // vecteur de symboles | ||
| - | |||
| - | s_symb=[1 0 1 1 0 0 1 0]; | ||
| - | |||
| - | // vecteur temps | ||
| - | |||
| - | t=(0 : 8*N-1); | ||
| - | |||
| - | // signal modulant | ||
| - | |||
| - | s_nrz=matrix(ones(N, | ||
| - | |||
| - | xbasc(); plot2d(t, | ||
| - | |||
| - | ===== **__Signal modulé en fréquence__** ===== | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des constantes et du temps | ||
| - | |||
| - | N=1000 ; fe=1e6 ;f0=1e3; t=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du vecteur fréquence | ||
| - | |||
| - | fp=f0*ones(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition de la phase (vecteur colonne) | ||
| - | |||
| - | for i=1:N, | ||
| - | |||
| - | theta(i)=2*%pi/ | ||
| - | |||
| - | end; | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul du sinus par les deux méthodes | ||
| - | |||
| - | // | ||
| - | |||
| - | s1=sin(theta' | ||
| - | |||
| - | s2=sin(2*%pi*f0*t); | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| - | // augmentation de la taille de la mémoire allouée à Scilab | ||
| - | |||
| - | stacksize(1.5e6); | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des constantes et du temps | ||
| - | |||
| - | N=1000 ; fe=1e6 ;f0=1e3; t=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du vecteur fréquence | ||
| - | |||
| - | fp=f0*ones(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du vecteur phase | ||
| - | |||
| - | theta=2*%pi/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul du sinus par les deux méthodes | ||
| - | |||
| - | s1=sin(theta); | ||
| - | |||
| - | s2=sin(2*%pi*f0*t); | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | clear; stacksize(1.5e6); | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des constantes et du temps | ||
| - | |||
| - | N=500 ; fe=1e6 ; fp=50e3 ; Finf=4e3; Uinf=2; t=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du signal informatif | ||
| - | |||
| - | sinf=Uinf*sin(2*%pi*Finf*t); | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du vecteur fréquence | ||
| - | |||
| - | f_inst=fp*ones(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition de la phase (vecteur colonne) | ||
| - | |||
| - | theta=2*%pi/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul du signal modulé | ||
| - | |||
| - | smod=sin(theta); | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | ===== **__Observation spectrale__** ===== | ||
| - | |||
| - | clear; stacksize(1.5e6); | ||
| - | |||
| - | // définition des constantes et du temps | ||
| - | |||
| - | N=1000 ; fe=1e6 ; fp=50e3 ; Finf=2e3; Uinf=2; t=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du signal informatif et de la fréquence instantanée | ||
| - | |||
| - | sinf=Uinf*sin(2*%pi*Finf*t); | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition de la phase et calcul du signal modulé | ||
| - | |||
| - | theta=2*%pi/ | ||
| - | |||
| - | smod=sin(theta' | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition de l' | ||
| - | |||
| - | f=fe/ | ||
| - | |||
| - | S=fft(smod, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | ====== **__Annexe 4 : la programmation__** ====== | ||
| - | |||
| - | // " | ||
| - | |||
| - | // met sous forme -fe/2, fe/2, et génère le vecteur fréquence pour l' | ||
| - | |||
| - | // | ||
| - | |||
| - | function[S, f]=tfcbi(s, | ||
| - | |||
| - | N=length(s) | ||
| - | |||
| - | S1=1/ | ||
| - | |||
| - | S=[S1(N/ | ||
| - | |||
| - | f=fe/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // " | ||
| - | |||
| - | // | ||
| - | |||
| - | function[S]=repet(s, | ||
| - | |||
| - | S=matrix(s' | ||
| - | |||
| - | // | ||
| - | |||
| - | clear; | ||
| - | |||
| - | // | ||
| - | |||
| - | // chargement du fichier texte des fonctions | ||
| - | |||
| - | getf(' | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des constantes | ||
| - | |||
| - | a=10 ; N=1000 ;Te=1e-3 ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // description du signal | ||
| - | |||
| - | // | ||
| - | |||
| - | s1=[ones(1, a), zeros(1, N-a)] ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // appel de la fonction | ||
| - | |||
| - | [S1, f]=tfcbi(s1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul de la transformée avec seulement la fonction fft (pour comparaison) | ||
| - | |||
| - | S=fft(s1, | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | ====== **__Annexe 5 : polynômes et fonctions de transfert__** ====== | ||
| - | |||
| - | | clear;\\ //\\ // définition des paramètres\\ w0=10; z=.3;\\ //\\ // définition des pôles et zéro\\ pole_d=-w0*(z+%i*sqrt(1-z^2)); | ||
| - | | //\\ // définition de la fonction de transfert\\ h=n/d\\ h =\\ .06p\\ -----------------\\ 1 + .06p + .01p2| | ||
| - | |||
| - | --> | ||
| - | |||
| - | ans = | ||
| - | |||
| - | ! - 3. + 9.539392i ! | ||
| - | |||
| - | ! - 3. - 9.539392i ! | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition de la plage de variation | ||
| - | |||
| - | f=[.01: | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul des points | ||
| - | |||
| - | h=freq(n, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(""," | ||
| - | |||
| - | | clear;\\ w0=10; z=.3;\\ p=poly(0,' | ||
| - | |||
| - | clear; | ||
| - | |||
| - | w0=10; z=.3; | ||
| - | |||
| - | p=poly([ 0, 1],' | ||
| - | |||
| - | h=(2*z*p/ | ||
| - | |||
| - | h = | ||
| - | |||
| - | .06p | ||
| - | |||
| - | ----------------- | ||
| - | |||
| - | 1 + .06p + .01p2 | ||
| - | |||
| - | clear; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition de la variable p | ||
| - | |||
| - | p=poly(0,' | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition de la fonction de transfert | ||
| - | |||
| - | h1=(1+0.1119*p^2)/ | ||
| - | |||
| - | h2=(1+0.5788*p^2)/ | ||
| - | |||
| - | h3=(1+0.8003*p^2)/ | ||
| - | |||
| - | h=h1*h2*h3 ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition d’un système linéaire continu | ||
| - | |||
| - | h1=syslin(' | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage de h1 pour des fréquences allant de 0,01 à 10 Hz par pas de 0,01 | ||
| - | |||
| - | xbasc(); | ||
| - | |||
| - | ====== **__Annexe 6 : fonctions de Bessel__** ====== | ||
| - | |||
| - | clear ; stacksize(1.5e6); | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du nombre points, de l' | ||
| - | |||
| - | N=500; Mmax=12; harmo=8; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition de l' | ||
| - | |||
| - | theta=%pi/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition de la plage de variation de l' | ||
| - | |||
| - | m=Mmax/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition d'une matrice contenant les différents indices | ||
| - | |||
| - | J=zeros(harmo+1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // initialisation de l' | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | xtitle (" | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul et affichage des fonctions pour 8 fréquences harmoniques et la porteuse | ||
| - | |||
| - | for n=0:harmo, | ||
| - | |||
| - | J(n+1,:)= 1/N*(sum (cos(m' | ||
| - | |||
| - | plot2d(m, | ||
| - | |||
| - | end; | ||
| - | |||
| - | **Traitement du signal avec Scilab : convolution et approche du filtrage numérique** | ||
| - | |||
| - | clear ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition de la fréquence d' | ||
| - | |||
| - | // du nombre d' | ||
| - | |||
| - | Fe=2 ; Te=1/Fe; N=300 ; Ne=50; | ||
| - | |||
| - | t=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition de la réponse impulsionnelle du filtre | ||
| - | |||
| - | f0=.02 ; w0=2*%pi*f0 ; | ||
| - | |||
| - | h=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des entrées | ||
| - | |||
| - | e1=ones(1, | ||
| - | |||
| - | e2=10*sin(w0*t); | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul des sorties et ajustement du nombre de points | ||
| - | |||
| - | s1=convol(e1, | ||
| - | |||
| - | s2=convol(e2, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage sur la fenêtre 0 | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([0 , | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | xsetech([0 , | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | xsetech([0 , | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | ===== **__Approche de la transformation en z__** ===== | ||
| - | |||
| - | ===== **__Tracé de la réponse fréquentielle__** ===== | ||
| - | |||
| - | // définition d’un polynôme en z à partir des coefficients de h | ||
| - | |||
| - | H=poly(h,' | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition de la variation de la pulsation, qui n’a de signification que pour un intervalle 0 0,5 | ||
| - | |||
| - | w=(0: | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul des valeurs particulières de H | ||
| - | |||
| - | ft=freq(H, | ||
| - | |||
| - | // affichage sur la fenêtre 1 | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([0 , | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | xsetech([0 , | ||
| - | |||
| - | plot2d(w(2: | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | ====== **__Annexe 1 : programmes des illustrations__** ====== | ||
| - | |||
| - | clear ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des constantes, nombre de points, nombre d’impulsions élémentaires | ||
| - | |||
| - | // durée d’une impulsion, nombre d’échantillon sur une réponse élémentaire | ||
| - | |||
| - | N=200 ; Nrep=30; inc=4; Ne=80 ; | ||
| - | |||
| - | f0=.01 ; w0=2*%pi*f0 ; | ||
| - | |||
| - | n=[0:Ne-1]; | ||
| - | |||
| - | // | ||
| - | |||
| - | // impulsion et réponse impulsionnelle | ||
| - | |||
| - | e0=ones(1, | ||
| - | |||
| - | h0=w0*exp(-w0*n); | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des matrices où seront placé les impulsions et réponse | ||
| - | |||
| - | h=zeros(Nrep, | ||
| - | |||
| - | e=zeros(Nrep, | ||
| - | |||
| - | // | ||
| - | |||
| - | // initialisation de l’affichage pour la fenêtre 0 | ||
| - | |||
| - | xset(“window”, | ||
| - | |||
| - | // | ||
| - | |||
| - | // boucle de calcul et d’affichage des impulsions et réponses | ||
| - | |||
| - | for i=0: | ||
| - | |||
| - | h(i+1, : )=[zeros(1, | ||
| - | |||
| - | e(i+1, : )=[zeros(1, | ||
| - | |||
| - | xsetech([0 , | ||
| - | |||
| - | xsetech([0 , | ||
| - | |||
| - | end | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul de la sortie | ||
| - | |||
| - | s=sum(h, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage de la sortie et des commentaires | ||
| - | |||
| - | xsetech([0 , | ||
| - | |||
| - | xtitle (“somme des réponses élémentaires”); | ||
| - | |||
| - | xsetech([0 , | ||
| - | |||
| - | xsetech([0 , | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage des impulsions et réponses décalées sur la fenêtre 1 | ||
| - | |||
| - | xset(“window”, | ||
| - | |||
| - | xsetech([0 , | ||
| - | |||
| - | xtitle (“impulsion à n=0”); | ||
| - | |||
| - | xsetech([0 , | ||
| - | |||
| - | xsetech([1/ | ||
| - | |||
| - | xtitle (“impulsion à n=k”); | ||
| - | |||
| - | xsetech([1/ | ||
| - | |||
| - | **Traitement du signal avec Scilab : Signaux échantillonnés** | ||
| - | |||
| - | ====== **__Etude générale__** ====== | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des constantes, nombre de points par périodes de dirac, largeur du dirac, nombre de diracs, nombre de points total, fréquence et temps de calcul, | ||
| - | |||
| - | // fréquence et période du peigne de dirac et fréquence du signal | ||
| - | |||
| - | Npp=40 ; a=1; Nd=80; N=Npp*Nd; | ||
| - | |||
| - | Fe=16e3; Te=1/Fe; Fc=Fe*Npp; Tc=1/Fc; F=1000; | ||
| - | |||
| - | // | ||
| - | |||
| - | // description du vecteur temps | ||
| - | |||
| - | t=Tc*(0: | ||
| - | |||
| - | // | ||
| - | |||
| - | // signal à échantillonner | ||
| - | |||
| - | ve=5*sin(2*%pi*F*t); | ||
| - | |||
| - | // | ||
| - | |||
| - | // une période du dirac de rapport cyclique a/Npp | ||
| - | |||
| - | d=[ones(1, a), zeros(1, (Npp-a))]; | ||
| - | |||
| - | // | ||
| - | |||
| - | // peigne de dirac sur Nd périodes | ||
| - | |||
| - | imp=matrix(d' | ||
| - | |||
| - | // | ||
| - | |||
| - | // signal échantillonné | ||
| - | |||
| - | se=ve .* imp; | ||
| - | |||
| - | // | ||
| - | |||
| - | // réponse impulsionnelle du bloqueur | ||
| - | |||
| - | b=ones(1, Npp); | ||
| - | |||
| - | // | ||
| - | |||
| - | // signal en sortie du bloqueur, réajusté sur N points | ||
| - | |||
| - | v1= convol(b, | ||
| - | |||
| - | v1=v1(1 : N); | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul du filtre passe bas, butteworth d' | ||
| - | |||
| - | G=analpf(8,' | ||
| - | |||
| - | f=Fc/N*[0 : N-1]; | ||
| - | |||
| - | GAIN=freq(G(2), | ||
| - | |||
| - | G=[GAIN(1: | ||
| - | |||
| - | hpb=fft(G, 1); | ||
| - | |||
| - | // | ||
| - | |||
| - | // filtrage | ||
| - | |||
| - | v2=convol(hpb, | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“signal entré, peigne de Dirac”, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“signal échantillonné”, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“signal bloqué”, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“signal de sortie filtré”, | ||
| - | |||
| - | ====== **__Etude du modulateur__** ====== | ||
| - | |||
| - | clear ; | ||
| - | |||
| - | // rappel des paramètres, | ||
| - | |||
| - | Npp=40 ; a=20; Nd=20; N=Npp*Nd; | ||
| - | |||
| - | Fe=16e3; Te=1/Fe; Fc=Fe*Npp; Tc=1/Fc; | ||
| - | |||
| - | // description du vecteur temps | ||
| - | |||
| - | t=Tc*(0: | ||
| - | |||
| - | // | ||
| - | |||
| - | // une période du dirac de rapport cyclique a/Npp | ||
| - | |||
| - | d=[ones(1, a), zeros(1, (Npp-a))]; | ||
| - | |||
| - | // | ||
| - | |||
| - | // peigne de dirac d’amplitude 1/a sur Nd périodes | ||
| - | |||
| - | tau=a*Te/ | ||
| - | |||
| - | imp=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // analyse de Fourier | ||
| - | |||
| - | f=Fc/ | ||
| - | |||
| - | IMP=1/ | ||
| - | |||
| - | IMP=IMP(1: | ||
| - | |||
| - | // | ||
| - | |||
| - | // génération du sinus cardinal | ||
| - | |||
| - | S=abs(Fe*(sin(tau*%pi*f)./ | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“signal en fonction du temps”, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | plot2d(f(1 : | ||
| - | |||
| - | xtitle(“signal en fonction de la fréquence”, | ||
| - | |||
| - | // signal à échantillonner | ||
| - | |||
| - | F=3000 ; ve=5*sin(2*%pi*F*t); | ||
| - | |||
| - | // | ||
| - | |||
| - | // signal échantillonné | ||
| - | |||
| - | se=ve .* imp; | ||
| - | |||
| - | VE=1/ | ||
| - | |||
| - | VE=VE(1: | ||
| - | |||
| - | // | ||
| - | |||
| - | SE=1/ | ||
| - | |||
| - | SE=SE(1: | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“signal en entrée”, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“impulsions”, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“signal échantillonné”, | ||
| - | |||
| - | ====== **__Etude du démodulateur__** ====== | ||
| - | |||
| - | clear ; | ||
| - | |||
| - | // rappel des paramètres | ||
| - | |||
| - | Npp=40 ; a=1; Nd=160; N=Npp*Nd; Fe=16e3; Te=1/Fe; Fc=Fe*Npp; Tc=1/Fc; | ||
| - | |||
| - | // | ||
| - | |||
| - | // description du vecteur temps et fréquence avec un « zoom » pour la fréquence | ||
| - | |||
| - | t=Tc*(0: | ||
| - | |||
| - | z=10 ; f=Fc/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // peigne de dirac d’amplitude 1/a sur Nd périodes | ||
| - | |||
| - | tau=a*Te/ | ||
| - | |||
| - | d=[1*ones(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // signal à échantillonner et échantillonnage | ||
| - | |||
| - | F1=2000 ; | ||
| - | |||
| - | se=ve .* imp; | ||
| - | |||
| - | // | ||
| - | |||
| - | // réponse impulsionnelle du bloqueur | ||
| - | |||
| - | b=ones(1, Npp);b2=[b, zeros(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // analyse de Fourier | ||
| - | |||
| - | IMP=1/ | ||
| - | |||
| - | VE=1/ | ||
| - | |||
| - | SE=1/ | ||
| - | |||
| - | B=1/ | ||
| - | |||
| - | V1=SE.*B ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“spectre du signal en entrée”, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“réponse fréquentielle du bloqueur”, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“spectre du signal en sortie du bloqueur”, | ||
| - | |||
| - | // calcul du filtre et filtrage | ||
| - | |||
| - | G=analpf(8,' | ||
| - | |||
| - | GAIN=freq(G(2), | ||
| - | |||
| - | V2=GAIN.*V1 ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“spectre du signal en entrée”, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“signal modulé”, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“spectre du signal en sortie du bloqueur”, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“réponse fréquentielle du filtre”, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“spectre du signal restitué”, | ||
| - | |||
| - | ====== **__Annexe 1 : le sinus cardinal__** ====== | ||
| - | |||
| - | clear ; | ||
| - | |||
| - | Delta=0.01 ; | ||
| - | |||
| - | x=(0: | ||
| - | |||
| - | // | ||
| - | |||
| - | // génération du sinus cardinal | ||
| - | |||
| - | S=sin(x)./ | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“sinc(x)=sin(x)/ | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(“sinus cardinal au carré”, | ||
| - | |||
| - | **Traitement du signal avec Scilab : la transformée de Fourier discrète** | ||
| - | |||
| - | ====== **__Efficacité de l’algorithme de la fonction « fft »__** ====== | ||
| - | |||
| - | clear ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // nombre d’échantillons, | ||
| - | |||
| - | N=4 ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // vecteur temps et signal | ||
| - | |||
| - | t=(0 : | ||
| - | |||
| - | // | ||
| - | |||
| - | // début de la temporisation | ||
| - | |||
| - | timer() ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // notre algorithme | ||
| - | |||
| - | Sf1=sum(s’ * ones(1, | ||
| - | |||
| - | timer() | ||
| - | |||
| - | // lire la valeur retournée | ||
| - | |||
| - | // | ||
| - | |||
| - | // nouvelle temporisation pour l’algorithme fft cette fois | ||
| - | |||
| - | timer() ; | ||
| - | |||
| - | Sf2=fft(s, | ||
| - | |||
| - | timer() | ||
| - | |||
| - | // lire la valeur et comparer à la précédente | ||
| - | |||
| - | ====== **__Vérification expérimentale__** ====== | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| - | // paramètres de l’acquisition | ||
| - | |||
| - | // nombre de points, fréquence du signal, amplitude, fréquence d’échantillonnage | ||
| - | |||
| - | N=32; Fx=26e3 ; A=1 ; Fe=64e3 ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // paramètre de l’échelle analogique : | ||
| - | |||
| - | Na=1024 ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du vecteur temps et du vecteur fréquence normalisé à N | ||
| - | |||
| - | ta=N/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du signal temporel | ||
| - | |||
| - | sa= A*exp(2*%i*%pi*Fx*ta) ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // échelle des temps et fréquence numérique | ||
| - | |||
| - | tn=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // échantillonnage du signal temporel, calcul de la fft | ||
| - | |||
| - | sn=A*exp(2*%i*%pi*Fx*tn) ; | ||
| - | |||
| - | Sf=abs(fft(sn, | ||
| - | |||
| - | // | ||
| - | |||
| - | // expression théorique de la DFT d’une exponentielle | ||
| - | |||
| - | x=k/ | ||
| - | |||
| - | S= A*sin(N*x*%pi) . / (sin(x*%pi)+(x==0)) + (x==0)*N; | ||
| - | |||
| - | // | ||
| - | |||
| - | // précision sur l’échelle des fréquences des points affichables | ||
| - | |||
| - | pts=zeros(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([ 0, 0, 1, 1/2]); | ||
| - | |||
| - | plot2d(ta, real(sa), rect=[0, -1.1*A, N/Fe, 1.1*A], style=0) ; | ||
| - | |||
| - | plot2d3(tn, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([ 0, 1/2, 1, 1/2]) ; | ||
| - | |||
| - | plot2d(k, abs(S), style=0, rect=[0, 0, N, 1.1*A*N]) ; | ||
| - | |||
| - | plot2d3(fn, Sf) ; | ||
| - | |||
| - | plot2d(fn, pts, style=-3) ; | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | clear | ||
| - | |||
| - | // paramètre de l’acquisition | ||
| - | |||
| - | // nombre de points, fréquence du signal, amplitude | ||
| - | |||
| - | N=128; Fx=26e3 ; A=1 ; Fx2=27e3 ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // paramètre de l’échelle analogique | ||
| - | |||
| - | // nombre de points, fréquence d’échantillonnage | ||
| - | |||
| - | Na=1024 ; Fe=64e3 ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du vecteur temps et du vecteur fréquence normalisé à N | ||
| - | |||
| - | ta=N/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du signal temporel | ||
| - | |||
| - | sa= A*(exp(2*%i*%pi*Fx*ta)+ exp(2*%i*%pi*Fx2*ta)) ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // échantillonnage du signal temporel, calcul de la fft | ||
| - | |||
| - | tn=1/ | ||
| - | |||
| - | sn=A*(exp(2*%i*%pi*Fx*tn)+ exp(2*%i*%pi*Fx2*tn)) ; | ||
| - | |||
| - | Sf=abs(fft(sn, | ||
| - | |||
| - | // | ||
| - | |||
| - | // expression théorique de la DFT d’une exponentielle | ||
| - | |||
| - | x=k/ | ||
| - | |||
| - | x2=k/ | ||
| - | |||
| - | S= A*sin(N*x*%pi). / (sin(x*%pi)+(x==0)) + (x==0)*N; | ||
| - | |||
| - | S2= A*sin(N*x2*%pi). / (sin(x2*%pi)+(x2==0)) + (x2==0)*N; | ||
| - | |||
| - | // précision sur l’échelle des fréquences des points affichables | ||
| - | |||
| - | pts=zeros(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([ 0, 1/2, 1, 1/2]) ; | ||
| - | |||
| - | plot2d(k, abs(S), style=0, rect=[0, 0, N, 1.1*A*N]) ; | ||
| - | |||
| - | plot2d(k, abs(S2), style=0) ; | ||
| - | |||
| - | plot2d3(fn, Sf) ; | ||
| - | |||
| - | plot2d(fn, pts, style=-3) ; | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | xsetech([ 0, 0, 1, 1/2]); | ||
| - | |||
| - | plot2d(ta, real(sa), style=0) ; | ||
| - | |||
| - | plot2d3(tn, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | plot2d(k(0.33*Na : | ||
| - | |||
| - | plot2d(k(0.33*Na : | ||
| - | |||
| - | plot2d3(fn(0.33*N : | ||
| - | |||
| - | plot2d(fn(0.33*N : | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | ====== **__Annexe : | ||
| - | |||
| - | clear; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des constantes, rapport cyclique, nombre de points affichés | ||
| - | |||
| - | // période et fréquence d’échantillonnage, | ||
| - | |||
| - | // largeur de l’affichage (en nombre paire de périodes), constantes d’affichage | ||
| - | |||
| - | // vecteur temps | ||
| - | |||
| - | a=20 ; N=100 ;Te=10e-3 ; Fe=1/Te; Amp=5 ; | ||
| - | |||
| - | P=2; At=N*P*Te/ | ||
| - | |||
| - | t=Te*(-N/2: N/2-1); | ||
| - | |||
| - | // | ||
| - | |||
| - | // description du signal porte | ||
| - | |||
| - | s=Amp*[zeros(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // transformé de Fourier sous forme bi-lattérale et vecteur fréquence | ||
| - | |||
| - | S1=1/ | ||
| - | |||
| - | S=[S1(N/ | ||
| - | |||
| - | f=Fe/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage du signal et de sa transformée de Fourier | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | plot2d2(t, s, rect=[-At, 0, At, 1.2*Amp]); | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | xsetech([0, 1/ | ||
| - | |||
| - | plot2d(f, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | // périodisation de la transformée de Fourier | ||
| - | |||
| - | // définition d’une nouvelle échelle de fréquence | ||
| - | |||
| - | S1=[S(N/ | ||
| - | |||
| - | S2=Fe*matrix(S1' | ||
| - | |||
| - | f2=Fe/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | // signal échantillonné, | ||
| - | |||
| - | se= Amp*[zeros(1, | ||
| - | |||
| - | t2=Te*(-P*N/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage du signal échantillonné et de sa transformée | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | plot2d3(t, s, rect=[-At, 0, At, 1.2*Amp]); | ||
| - | |||
| - | plot2d (t2, se, style=-9); | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | xsetech([0, 1/ | ||
| - | |||
| - | plot2d(f2, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | // effet de la troncature, le spectre d’origine est multiplié par N | ||
| - | |||
| - | S2=N*Te*S2; | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage du signal tronqué | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | plot2d3(t, s, rect=[-At, 0, At, 1.2*Amp]); | ||
| - | |||
| - | plot2d (t, s, style=-9); | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | xsetech([0, 1/ | ||
| - | |||
| - | plot2d(f2, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | // signal temporel périodisé | ||
| - | |||
| - | s1=[s(N/ | ||
| - | |||
| - | s2=N*Te*matrix(s1' | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage du signal temporel périodique | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | plot2d3(t2, N/Fe*s2, rect=[-At, 0, At, 1.2*N/ | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | xsetech([0, 1/ | ||
| - | |||
| - | plot2d3(f2, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | **Traitement du signal avec Scilab : puissance et densité spectrale de puissance** | ||
| - | |||
| - | ===== **__Application à un signal NRZ aléatoire__** ===== | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| - | // constantes : | ||
| - | |||
| - | // nombre de points, période et fréquence d' | ||
| - | |||
| - | cse=8; Nb=128; N=Nb*cse ; Te=1e-3; Fe=1/Te; A=5 ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // vecteur temps de l' | ||
| - | |||
| - | // | ||
| - | |||
| - | ind=(0: | ||
| - | |||
| - | t_nrz=Te*(0: | ||
| - | |||
| - | f=Fe/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // signal aléatoire à + ou –1, répartition « normale » | ||
| - | |||
| - | s=sign(rand(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // sur-échantillonnage de s | ||
| - | |||
| - | s_nrz=A*(matrix(ones(cse, | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul de la DSP | ||
| - | |||
| - | DSP=(1/ | ||
| - | |||
| - | DSPdB=10*log10( DSP(1:N/2) +%eps); | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([ 0, 0, 1, 1/3]) ; plot2d3(ind, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([ 0, 1/3, 1, 1/3]) ; plot2d2(t_nrz, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([ 0, 2/3, 1, 1/3]) ; plot2d(f, DSPdB) ; | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul de la puissance moyenne et vérification de Parseval | ||
| - | |||
| - | PMOY_T=1/ | ||
| - | |||
| - | PMOY_F=sum(DSP) | ||
| - | |||
| - | **Traitement du signal avec Scilab : signaux aléatoires et bruits** | ||
| - | |||
| - | ====== **__Application__** ====== | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des constantes | ||
| - | |||
| - | loi=' | ||
| - | |||
| - | // | ||
| - | |||
| - | // génération du bruit | ||
| - | |||
| - | bruit=sqrt(p)*rand(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul de la DSP | ||
| - | |||
| - | dsp=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // courbe théorique de probabilité | ||
| - | |||
| - | p_g=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([ 0, 0, 1, 1/3]) ; plot2d(bruit) ; | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([ 0, 1/3, 1, 1/ | ||
| - | |||
| - | histplot(x, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([ 0, 2/3, 1, 1/3]); plot2d(10*log10(abs(dsp))) | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul des puissances | ||
| - | |||
| - | puissance_f=1/ | ||
| - | |||
| - | puissance_t=1/ | ||
| - | |||
| - | ====== **__Annexe : | ||
| - | |||
| - | clear; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des constantes et variable d’ordonnées | ||
| - | |||
| - | mx=10 ; pas=0.1 ; | ||
| - | |||
| - | x=(-mx : pas : mx); | ||
| - | |||
| - | m=0 ; sig=2.5 ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // variable gaussienne | ||
| - | |||
| - | p_g=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // variable uniforme | ||
| - | |||
| - | n=6 ; | ||
| - | |||
| - | p_u=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // variable discrète | ||
| - | |||
| - | nb=2 ; | ||
| - | |||
| - | p_disc=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([ 0, 1/3, 1, 1/3]) ; ; plot2d(x, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([ 0, 0, 1, 1/3]) ; plot2d2((-mx : | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([ 0, 2/3, 1, 1/3]) ; ; plot2d3((-mx : | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | clear; | ||
| - | |||
| - | m=-2 ; sig=2.5 ; | ||
| - | |||
| - | x=-10: .1 :6; | ||
| - | |||
| - | p=1/ | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | plot2d(x,p) ; | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | **Traitement du signal avec Scilab : corrélation** | ||
| - | |||
| - | **__Réalisation pratique en numérique__** | ||
| - | |||
| - | clear ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du temps et des signaux | ||
| - | |||
| - | t=(0 : | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc() ; xset(«font size», | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | clear ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du temps et des signaux | ||
| - | |||
| - | t=(-10 : | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc() ; xset(«font size», | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | **__Exemples de solutions__** | ||
| - | |||
| - | ====== **__Théorème de Wiener-Kintchine pour un signal aléatoire__** ====== | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | bruit=sqrt(3)*rand(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul de la DSP avec pspect | ||
| - | |||
| - | [dsp1]=10*log10(pspect(128, | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul de l’autocorrélation et de sa transformation de Fourier | ||
| - | |||
| - | [cov]=corr(bruit, | ||
| - | |||
| - | dsp2=10*log10(abs(fft(cov, | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([.5, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([.5, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | **__Périodicité d’un signal NRZ pseudo-aléatoire__** | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | s=sign(rand(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // génération du signal NRZ à partir des informations binaires par suréchantillonnage. | ||
| - | |||
| - | s_nrz=5*(matrix(ones(64, | ||
| - | |||
| - | // | ||
| - | |||
| - | // autocorrélation | ||
| - | |||
| - | [cov]=corr(s_nrz, | ||
| - | |||
| - | // | ||
| - | |||
| - | //affichage des résultats | ||
| - | |||
| - | t=(0: | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| - | //signal de base NRZ de 64 bits suréchantillonné d’un rapport 8 | ||
| - | |||
| - | s=sign(rand(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // 8 périodes de signal 64 bits | ||
| - | |||
| - | s_per=matrix(s_nrz' | ||
| - | |||
| - | // | ||
| - | |||
| - | // autocorrélation | ||
| - | |||
| - | [cov_per]=corr(s_per, | ||
| - | |||
| - | // | ||
| - | |||
| - | //affichage des résultats | ||
| - | |||
| - | t=(0: | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | **__Détection d’un signal noyé dans du bruit__** | ||
| - | |||
| - | |||
| - | |||
| - | clear; | ||
| - | |||
| - | // définition du temps | ||
| - | |||
| - | t=1e-6*(1: | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du rapport signal sur bruit et des signaux | ||
| - | |||
| - | SB=.1; b=sqrt((5^2)/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // autocorrélation | ||
| - | |||
| - | [cov]=corr(se, | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | clear; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du temps | ||
| - | |||
| - | t=1e-6*(1: | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du rapport signal sur bruit et des signaux | ||
| - | |||
| - | SB=.001; | ||
| - | |||
| - | b=sqrt((5^2)/ | ||
| - | |||
| - | s=5* sqrt(2)*sin(2*%pi*10e3*t); | ||
| - | |||
| - | se=s+b; | ||
| - | |||
| - | s_recep=5*sin(2*%pi*10e3*t+%pi/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // corrélation | ||
| - | |||
| - | [cov]=corr(se, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | **Traitement du signal avec Scilab : transmission numérique en bande de base** | ||
| - | |||
| - | **__Cas d’un canal non bruité de bande passante réduite__** | ||
| - | |||
| - | |||
| - | |||
| - | **__Aspect fréquentiel__** | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des constantes | ||
| - | |||
| - | // période d’un symbole, coefficient de sur échantillonnage, | ||
| - | |||
| - | Ts=1e-3; Sech=16 ; fc=800 ; | ||
| - | |||
| - | // période d’échantillonnage, | ||
| - | |||
| - | Te=Ts/Sech ; Nbit=256 ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du vecteur temps | ||
| - | |||
| - | t=Te*(0: Nmax-1); | ||
| - | |||
| - | // | ||
| - | |||
| - | // signal aléatoire, puis sur échantillonnage pour obtenir un signal NRZ | ||
| - | |||
| - | se=sign(rand(1, | ||
| - | |||
| - | se_sur=(matrix(ones(Sech, | ||
| - | |||
| - | // | ||
| - | |||
| - | // élaboration d’un filtre analogique de Chebycheff, d’ordre 4, d’ondulation 0,1 | ||
| - | |||
| - | // de fréquence de coupure 800 Hz | ||
| - | |||
| - | Ge=analpf(4,' | ||
| - | |||
| - | // | ||
| - | |||
| - | // préparation du tracé de la réponse fréquentielle du filtre | ||
| - | |||
| - | f=1/ | ||
| - | |||
| - | gain=freq(Ge(2), | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul des DSP du signal NRZ et signal NRZ filtré | ||
| - | |||
| - | DSPe=(1/ | ||
| - | |||
| - | DSPr=DSPe.*abs(gain).^2; | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | // troncature de grandeurs à afficher pour effet zoom | ||
| - | |||
| - | f_aff=f(.11/ | ||
| - | |||
| - | gain_aff=abs(gain(.11/ | ||
| - | |||
| - | DSPe_aff=DSPe(.11/ | ||
| - | |||
| - | DSPr_aff=DSPr(.11/ | ||
| - | |||
| - | // | ||
| - | |||
| - | //affichage fréquentiel | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | plot2d(f_aff, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | plot2d(f_aff, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | plot2d(f_aff, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | **__Aspect temporel__** | ||
| - | |||
| - | // calcul de la fft et filtrage | ||
| - | |||
| - | Se_sur=1/ | ||
| - | |||
| - | Sr=Se_sur .* gain ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul de la fft inverse en respectant les symétrie | ||
| - | |||
| - | Sr=[Sr(1 : | ||
| - | |||
| - | sr= Nmax*fft(Sr, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // troncature des signaux | ||
| - | |||
| - | se2=se(1: | ||
| - | |||
| - | se_sur2=se_sur(1: | ||
| - | |||
| - | sr2=sr(1: | ||
| - | |||
| - | t2=t(1: | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | **__Diagramme de l’œil__** | ||
| - | |||
| - | // Diagramme de l’œil | ||
| - | |||
| - | // | ||
| - | |||
| - | // mise en forme de la matrice du signal | ||
| - | |||
| - | s_oeil=matrix(sr, | ||
| - | |||
| - | // | ||
| - | |||
| - | // mise en forme de la matrice du temps | ||
| - | |||
| - | t_oeil=Te*(1: | ||
| - | |||
| - | // | ||
| - | |||
| - | // mise en place des styles, tous identiques | ||
| - | |||
| - | style=ones(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | plot2d(t_oeil, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | **__Suppression de l’interférence entre symbole__** | ||
| - | |||
| - | |||
| - | |||
| - | // Réponse impulsionnelle du filtre | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des constantes, dont le facteur d' | ||
| - | |||
| - | Ts=1e-3; Sech=16 ; Te=Ts/Sech; r=.6; Ne=128; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du vecteur temps pour 128 échantillons | ||
| - | |||
| - | t=Te*(-Ne/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul de la réponse impulsionnelle du filtre | ||
| - | |||
| - | h1=cos(%pi*r*t/ | ||
| - | |||
| - | h2=(sin(%pi*t/ | ||
| - | |||
| - | h=h1.*h2; | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | plot2d3(t, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // Réponse fréquentielle | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des constantes | ||
| - | |||
| - | Ts=1e-3; Nbpt=4096; pas=1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du vecteur fréquence | ||
| - | |||
| - | f=pas*(1: | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul par zones de la réponse | ||
| - | |||
| - | z1=Ts*ones(1, | ||
| - | |||
| - | z2=Ts/ | ||
| - | |||
| - | z22=z2(Nbpt*(1-r)/ | ||
| - | |||
| - | z3=zeros(1, Nbpt*(1-(1+r)/ | ||
| - | |||
| - | H=[z1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | plot2d(f, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // Réponses impulsionnelles paramètrées par r | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des constantes | ||
| - | |||
| - | Ts=1e-3; Sech=16 ; Te=Ts/Sech; r=(0: | ||
| - | |||
| - | // | ||
| - | |||
| - | // vecteur temps | ||
| - | |||
| - | t=Te*(-Ne/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul des réponses | ||
| - | |||
| - | h1=cos(%pi*r*t/ | ||
| - | |||
| - | h2a=(sin(%pi*t/ | ||
| - | |||
| - | h2=ones(3, | ||
| - | |||
| - | h=h1.*h2; | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | h_aff=h'; | ||
| - | |||
| - | style=(1: | ||
| - | |||
| - | t_aff=t' | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | plot2d(t_aff, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // Réponse impulsionnelle du filtre | ||
| - | |||
| - | clear ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // constantes | ||
| - | |||
| - | Ts=1e-3; Sech=8 ; Nech=64; Te=Ts/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // vecteur temps | ||
| - | |||
| - | t=Te*(1: | ||
| - | |||
| - | // | ||
| - | |||
| - | // réponse impulsionnelle du filtre | ||
| - | |||
| - | Tf=Te*(-Nech/ | ||
| - | |||
| - | h1=cos(%pi*r*Tf/ | ||
| - | |||
| - | h2=(sin(%pi*Tf/ | ||
| - | |||
| - | h=h1.*h2; | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage de la réponse | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | plot2d3((1: | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // Signaux obtenus | ||
| - | |||
| - | // | ||
| - | |||
| - | // signaux binaire et NRZ | ||
| - | |||
| - | se=sign(rand(1, | ||
| - | |||
| - | se_sur=(matrix([1; | ||
| - | |||
| - | // | ||
| - | |||
| - | // signal filtré reçu par le récepteur | ||
| - | |||
| - | sr=convol(h, | ||
| - | |||
| - | // | ||
| - | |||
| - | // suppression des échantillons introduit par la convolution | ||
| - | |||
| - | sr_aff=sr(1: | ||
| - | |||
| - | // | ||
| - | |||
| - | // dilatation des échelles d’affichage | ||
| - | |||
| - | se2=se(1: | ||
| - | |||
| - | se_sur2=se_sur(1: | ||
| - | |||
| - | sr_aff2=sr_aff(1+Nech/ | ||
| - | |||
| - | t2=t(1: | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | |||
| - | |||
| - | // Génération du signal NRZ par convolution | ||
| - | |||
| - | // | ||
| - | |||
| - | // réponse impulsionnelle du filtre | ||
| - | |||
| - | h_symb=ones(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // convolution | ||
| - | |||
| - | s_symb=convol(se_sur2, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // Diagramme de l’œil | ||
| - | |||
| - | // | ||
| - | |||
| - | // suppression des effets de bord | ||
| - | |||
| - | sr_rec=sr(1+Nech/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // mise en forme de la matrice | ||
| - | |||
| - | s_oeil=matrix(sr_rec, | ||
| - | |||
| - | // | ||
| - | |||
| - | // matrice du temps de du style | ||
| - | |||
| - | t_oeil=(1: | ||
| - | |||
| - | style=ones(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xset(" | ||
| - | |||
| - | plot2d(t_oeil, | ||
| - | |||
| - | **__Cas d’un canal bruité de bande passante infinie__** | ||
| - | |||
| - | // Réponse à une impulsion et à un symbole du filtre adapté | ||
| - | |||
| - | clear; | ||
| - | |||
| - | // | ||
| - | |||
| - | // constantes, débit, facteur de sur échantillonnage, | ||
| - | |||
| - | // nombres de bits émis, nombre de points | ||
| - | |||
| - | // rapport signal sur bruit, constante du temps du filtre adapté | ||
| - | |||
| - | Ts=1e-3; Sech=16 ; Te=Ts/Sech; | ||
| - | |||
| - | Nbit=2; Nbpt=Nbit*Sech; | ||
| - | |||
| - | SB=100; t0=3*Ts/2; | ||
| - | |||
| - | // | ||
| - | |||
| - | // vecteurs temps | ||
| - | |||
| - | t=Te*(1: | ||
| - | |||
| - | // | ||
| - | |||
| - | // donnée 1 suivie de 0, puis signal NRZ correspondant | ||
| - | |||
| - | se=[1 0]; | ||
| - | |||
| - | se_sur=(matrix(ones(Sech, | ||
| - | |||
| - | // | ||
| - | |||
| - | // réponse du filtre adapté | ||
| - | |||
| - | gr=[zeros(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // signal en sortie du filtre | ||
| - | |||
| - | sf=convol(gr, | ||
| - | |||
| - | // | ||
| - | |||
| - | // adaptation du temps pour l’affichage complet du signal filtré | ||
| - | |||
| - | tsf=Te*(1: | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // Réponse d’une chaîne complète avec filtre adapté | ||
| - | |||
| - | // | ||
| - | |||
| - | clear; | ||
| - | |||
| - | // | ||
| - | |||
| - | // constantes | ||
| - | |||
| - | Ts=1e-3; Sech=8 ; Te=Ts/Sech; Nbit=16; Nbpt=Nbit*Sech; | ||
| - | |||
| - | // | ||
| - | |||
| - | // données et signal NRZ correspondant | ||
| - | |||
| - | se=sign(rand(1, | ||
| - | |||
| - | se_sur=(matrix(ones(Sech, | ||
| - | |||
| - | // | ||
| - | |||
| - | // signal fictif permettant de repérer les instants idéaux d’échantillonnage et les valeurs attendues | ||
| - | |||
| - | // suréchantillonnage par des 0 du signal de donnée | ||
| - | |||
| - | se_surd=(matrix([1; | ||
| - | |||
| - | // | ||
| - | |||
| - | // synchronisation avec les maxima et minima de la réponse et troncature pour l’affichage | ||
| - | |||
| - | ck=3*[zeros(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // génération du bruit | ||
| - | |||
| - | b=sqrt(1/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // | ||
| - | |||
| - | // ajout du bruit au signal utile | ||
| - | |||
| - | sr=se_sur+b; | ||
| - | |||
| - | // | ||
| - | |||
| - | // réponse du filtre | ||
| - | |||
| - | gr=[zeros(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // filtrage et troncature pour l’affichage | ||
| - | |||
| - | sf=convol(gr, | ||
| - | |||
| - | // | ||
| - | |||
| - | // extraction du signe de la valeur au moment de l’échantillonnage, | ||
| - | |||
| - | sortie=sign(sf.*abs(ck)) ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // mise sous forme NRZ par convolution de la valeur et troncature pour affichage | ||
| - | |||
| - | s_basc=convol(ones(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | **Traitement du signal avec Scilab : analyse et synthèse des filtres numériques** | ||
| - | |||
| - | **__Analyse de quelques filtres__** | ||
| - | |||
| - | ==== **__Filtre passe bas__** ==== | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| - | // constante | ||
| - | |||
| - | a=.5; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du numérateur | ||
| - | |||
| - | h1=poly([1 1],' | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition du dénominateur | ||
| - | |||
| - | h2=poly([-a 1],' | ||
| - | |||
| - | // | ||
| - | |||
| - | // gamme de fréquence normalisée par rapport à la fréquence d’échantillonnage | ||
| - | |||
| - | f=(0: | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul des différents points de la fonction de transfert | ||
| - | |||
| - | hf=freq(h1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // gamme de fréquence normalisée par rapport à la fréquence d’échantillonnage | ||
| - | |||
| - | f=(0: | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul des différents points de la fonction de transfert | ||
| - | |||
| - | hf=freq(h1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| - | // constantes et vecteur temps | ||
| - | |||
| - | a=.5; TE=1e-3; | ||
| - | |||
| - | t=TE*(0: | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition d'une entrée | ||
| - | |||
| - | x=5*sin(2*%pi*0.01/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition de la fonction en z | ||
| - | |||
| - | h=poly([1 1],' | ||
| - | |||
| - | // | ||
| - | |||
| - | // création d’un système linéaire | ||
| - | |||
| - | hz=syslin(' | ||
| - | |||
| - | // | ||
| - | |||
| - | // filtrage | ||
| - | |||
| - | y=flts(x, | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | **__Synthèse par la méthode des fenêtres__** | ||
| - | |||
| - | clear ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des constantes | ||
| - | |||
| - | Te=1e-3 ; Nb=15; Fc=.25/Te; | ||
| - | |||
| - | // | ||
| - | |||
| - | // paramètres " | ||
| - | |||
| - | t=Te*(-(Nb-1)/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // réponse impulsionnelle | ||
| - | |||
| - | g=2*Fc*Te*(sin(2*%pi*t*Fc)./ | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul de la réponse fréquentielle à partir le transformée en z | ||
| - | |||
| - | f=(0: | ||
| - | |||
| - | h=poly(g,' | ||
| - | |||
| - | H=freq(h, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | // | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | ==== **__Linéarité de la phase__** ==== | ||
| - | |||
| - | clear ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des constantes | ||
| - | |||
| - | Te=1e-3 ; Nb=15; Fc=.25/Te; | ||
| - | |||
| - | // | ||
| - | |||
| - | // paramètres " | ||
| - | |||
| - | t=Te*(-(Nb-1)/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // réponse impulsionnelle | ||
| - | |||
| - | g=2*Fc*Te*(sin(2*%pi*t*Fc)./ | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul de la réponse fréquentielle à partir le transformée en z | ||
| - | |||
| - | f=(-1: | ||
| - | |||
| - | h=poly(g,' | ||
| - | |||
| - | H=freq(h, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | clear ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // définition des constantes | ||
| - | |||
| - | Te=1e-3 ; Nb=16; Fc=.25/Te; | ||
| - | |||
| - | // | ||
| - | |||
| - | // paramètres " | ||
| - | |||
| - | t=Te*(-(Nb-1)/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // réponse impulsionnelle | ||
| - | |||
| - | g=2*Fc*Te*(sin(2*%pi*t*Fc)./ | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul de la réponse fréquentielle à partir le transformée en z | ||
| - | |||
| - | f=(-1: | ||
| - | |||
| - | h=poly(g,' | ||
| - | |||
| - | H=freq(h, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); xset(" | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | ==== **__Choix d’une fenêtre__** ==== | ||
| - | |||
| - | clear ; | ||
| - | |||
| - | // | ||
| - | |||
| - | // fenêtre rectangulaire | ||
| - | |||
| - | [hrc, | ||
| - | |||
| - | // | ||
| - | |||
| - | // fenêtre de Kaiser avec b=5,6 | ||
| - | |||
| - | [hkc, | ||
| - | |||
| - | // | ||
| - | |||
| - | // fenêtre de Hamming avec a=0,54 | ||
| - | |||
| - | [hhc, | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc() ; xset ("font size", | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | xsetech([0, | ||
| - | |||
| - | **__Méthode de l’échantillonnage en fréquence__** | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| - | // gabarit analogique synthétisé du filtre | ||
| - | |||
| - | Ha=[0*ones(1, | ||
| - | |||
| - | // | ||
| - | |||
| - | // calcul de la réponse fréquentielle réelle | ||
| - | |||
| - | Hd=fsfirlin(Ha, | ||
| - | |||
| - | // | ||
| - | |||
| - | // paramètres d' | ||
| - | |||
| - | fd=0.5/ | ||
| - | |||
| - | fa=0.5/ | ||
| - | |||
| - | // | ||
| - | |||
| - | // affichage | ||
| - | |||
| - | xbasc(); | ||
| - | |||
| - | plot2d(fa, | ||
| - | |||
| - | plot2d(fd, | ||
| - | |||
| - | xtitle(" | ||
| - | |||
| - | **__Synthèse des filtres récursifs à réponse impulsionnelle infinie__** | ||
| - | |||
| - | ====== **__Méthode de l’invariance impulsionnelle__** ====== | ||
| - | |||
| - | // | ||
| - | |||
| - | clear | ||
| - | |||
| - | // | ||
| - | |||
| // définition des constante | // définition des constante | ||
| - | |||
| Te=1e-3; w0=.01*2*%pi/ | Te=1e-3; w0=.01*2*%pi/ | ||
| - | |||
| // | // | ||
| - | |||
| // variable temps | // variable temps | ||
| - | |||
| t=Te*(0: | t=Te*(0: | ||
| - | |||
| // | // | ||
| - | |||
| // réponse impulsionnelle | // réponse impulsionnelle | ||
| - | |||
| h=w0*exp(-w0*t); | h=w0*exp(-w0*t); | ||
| - | |||
| // | // | ||
| - | |||
| // description du filtre par la transformée en z, numérateur puis dénominateur | // description du filtre par la transformée en z, numérateur puis dénominateur | ||
| - | |||
| H1n=A*w0*poly([0 1],' | H1n=A*w0*poly([0 1],' | ||
| - | |||
| // | // | ||
| - | |||
| // description d’un second filtre en ajustant le gain basse fréquence | // description d’un second filtre en ajustant le gain basse fréquence | ||
| - | |||
| A=(1-exp(-Te*w0))/ | A=(1-exp(-Te*w0))/ | ||
| - | |||
| // | // | ||
| - | |||
| H2n=A*w0*poly([0 1],' | H2n=A*w0*poly([0 1],' | ||
| - | |||
| // | // | ||
| - | |||
| // | // | ||
| - | |||
| // | // | ||
| - | |||
| // calcul de la réponse fréquentielle des deux filtres précédents | // calcul de la réponse fréquentielle des deux filtres précédents | ||
| - | |||
| f=(0: | f=(0: | ||
| - | |||
| hdf1=freq(H1n, | hdf1=freq(H1n, | ||
| - | |||
| hdf2=freq(H2n, | hdf2=freq(H2n, | ||
| - | |||
| // | // | ||
| - | |||
| // affichage | // affichage | ||
| - | |||
| xbasc(); xset(" | xbasc(); xset(" | ||
| - | |||
| xsetech([0, | xsetech([0, | ||
| - | |||
| xsetech([0, | xsetech([0, | ||
| - | |||
| xsetech([0, | xsetech([0, | ||
| + | </ | ||
| - | **__Transformation bilinéaire__** | + | ===== Transformation bilinéaire ===== |
| + | <file bilin.sce> | ||
| clear | clear | ||
| - | |||
| // | // | ||
| - | |||
| // définition des constantes | // définition des constantes | ||
| - | |||
| Te=1e-3; Fcd=200; | Te=1e-3; Fcd=200; | ||
| - | |||
| // | // | ||
| - | |||
| // filtre analogique équivalent | // filtre analogique équivalent | ||
| - | |||
| Ga=analpf(6,' | Ga=analpf(6,' | ||
| - | |||
| // | // | ||
| - | |||
| // filtre analogique pour le calcul | // filtre analogique pour le calcul | ||
| - | |||
| teta=Fcd*(2*Te)*%pi; | teta=Fcd*(2*Te)*%pi; | ||
| - | |||
| Fcad=(2/ | Fcad=(2/ | ||
| - | |||
| Gad=analpf(6,' | Gad=analpf(6,' | ||
| - | |||
| // | // | ||
| - | |||
| // définition de la variable z | // définition de la variable z | ||
| - | |||
| z=poly(0,' | z=poly(0,' | ||
| - | |||
| // | // | ||
| - | |||
| // transformation bilinéaire | // transformation bilinéaire | ||
| - | |||
| Gd=horner(Gad, | Gd=horner(Gad, | ||
| - | |||
| // | // | ||
| - | |||
| // calcul des points du filtre analogique équivalent | // calcul des points du filtre analogique équivalent | ||
| - | |||
| fa=(100: | fa=(100: | ||
| - | |||
| Gain_a=freq(Ga(2), | Gain_a=freq(Ga(2), | ||
| - | |||
| // | // | ||
| - | |||
| // calcul des points du filtre numérique | // calcul des points du filtre numérique | ||
| - | |||
| fd=(.1: | fd=(.1: | ||
| - | |||
| Gain_d=freq(Gd(2), | Gain_d=freq(Gd(2), | ||
| - | |||
| // | // | ||
| - | |||
| // affichage | // affichage | ||
| - | |||
| xbasc(); xset(" | xbasc(); xset(" | ||
| - | |||
| // | // | ||
| - | |||
| xsetech([0, | xsetech([0, | ||
| - | |||
| xtitle(" | xtitle(" | ||
| - | |||
| // | // | ||
| - | |||
| xsetech([0, | xsetech([0, | ||
| - | |||
| xtitle(" | xtitle(" | ||
| - | + | </ | |
| - | + | ||
francois/traitement_numerique_du_signal_avec_scilab.1365282697.txt.gz · Dernière modification : (modification externe)
