INITIATION À SCILAB Scilab manipule essentiellement des...

51
INITIATION À SCILAB Eclipse à Chéraute Scilab manipule essentiellement des vecteurs et des matrices réelles ou complexes. Pour rentrer un nombre complexe, on utilise la syntaxe suivante (on peut se passer des crochets [] pour rentrer un scalaire, donc il faut des crochets pour un vecteur) : -->c=1 + 2*%i // scalaire complexe c = 1. + 2.i -->Y = [ 1 + %i , -2 + 3*%i ; -1 , %i]  // matrice 2x2 complexe Y = ! 1. + i     - 2. + 3.i ! ! - 1.                      i ! -->A=[1 1 1;2 4 8;3 9 27]  // on sépare les éléments d'une ligne avec des espaces ou des « , » A = ! 1. 1. 1. ! ! 2. 4. 8. ! ! 3. 9. 27. ! -->x = linspace(0,1,5) // je forme un vecteur ligne, 5 valeurs répartie linéairement de 0 à 1 . -->x = linspace(0,1,5)’ // je forme un vecteur colonne grâce à « ' », 5 valeurs répartie linéairement de 0 à 1 . x = ! 0. ! ! 0.25 ! ! 0.5 ! ! 0.75 ! ! 1. ! -->a=[0:0.2:1]//Je forme un vecteur ligne  a=[début=0:pas=0.2:Fin=1]  a  =    0.    0.2    0.4    0.6    0.8    1. !  -->b=[0:0.2:1]'////Je forme un vecteur colonne grâce à « ' »  b=[début=0:pas=0.2:Fin=1]'  b  =    0.  !   0.2 !   0.4 !   0.6 !   0.8 !   1.  ! MULTIPLICATION ET DIVISION MATRICIELLE ET CLASSIQUE //« * » est la multiplication matricielle et « .* » est la multiplication élément par élément : //" / » est la « division matricielle1 » et « ./ » est la division élément par élément : //Attention au piège suivant : « 1./x » est considéré comme « 1. / x » et il faut mettre //un espace entre « 1 » et « . » pour utiliser la division élément par élément : « 1 ./x ».    Physique Appliquée-Lycée du Pays de soule       19/08/12-initScilab.odt-Djl-Page:  1 / 51

Transcript of INITIATION À SCILAB Scilab manipule essentiellement des...

INITIATION À SCILAB  Eclipse à Chéraute 

Scilab manipule essentiellement des vecteurs et des matrices réelles ou complexes.Pour rentrer un nombre complexe, on utilise la syntaxe suivante (on peut se passer des crochets []pour rentrer un scalaire, donc il faut des crochets pour un vecteur) :

­­>c=1 + 2*%i // scalaire complexec =1. + 2.i

­­>Y = [ 1 + %i , ­2 + 3*%i ; ­1 , %i]  // matrice 2x2 complexeY =! 1. + i     ­ 2. + 3.i !! ­ 1.                      i !

­­>A=[1 1 1;2 4 8;3 9 27]  // on sépare les éléments d'une ligne avec des espaces ou des « , »A =! 1. 1. 1. !! 2. 4. 8. !! 3. 9. 27. !­­>x = linspace(0,1,5) // je forme un vecteur ligne, 5 valeurs répartie linéairement de 0 à 1 .

­­>x = linspace(0,1,5)’ // je forme un vecteur colonne grâce à « ' », 5 valeurs répartie linéairement de 0 à 1 . x =! 0. !! 0.25 !! 0.5 !! 0.75 !! 1. !

­­>a=[0:0.2:1]//Je forme un vecteur ligne  a=[début=0:pas=0.2:Fin=1] a  = !   0.    0.2    0.4    0.6    0.8    1. ! ­­>b=[0:0.2:1]'////Je forme un vecteur colonne grâce à « ' »  b=[début=0:pas=0.2:Fin=1]' b  = !   0.  !!   0.2 !!   0.4 !!   0.6 !!   0.8 !!   1.  !

MULTIPLICATION ET DIVISION MATRICIELLE ET CLASSIQUE //« * » est la multiplication matricielle et « .* » est la multiplication élément par élément :

//" / » est la « division matricielle1 » et « ./ » est la division élément par élément :

//Attention au piège suivant : « 1./x » est considéré comme « 1. / x » et il faut mettre

//un espace entre « 1 » et « . » pour utiliser la division élément par élément : « 1 ./x ».

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 1 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Opérations sur les matrices(connaissance indispensable pour les courbes 2D, 3D multiples):Beaucoup d'autres exemples ici: http://www.scilab.org/doc/Scilabpratique/node32.html

Addition de matrices: Uniquement possible si les matrices ont même dimension . 

­1­>x=R*cos(t) x  = !   2.    0.6180340  ­ 1.618034  ­ 1.618034    0.6180340    2. !­1­>y=R*sin(t) y  = !   0.    1.902113    1.1755705  ­ 1.1755705  ­ 1.902113  ­ 4.898E­16 !­1­>z1=R*sin(2*t)+cos(2*t) z1  = !   1.    0.3665535  ­ 1.593096    2.21113  ­ 1.9845875    1. !­1­>x+y //l' addition des matrices(1x6) x et y donne une matrice (1x6) ans  = !   2.    2.520147  ­ 0.4424635  ­ 2.7936045  ­ 1.284079    2. !

Produits de matrices X*Y :  Uniquement possible si nb Col X = nb Lign Y

Avec les mêmes matrices x(1x6) et y(1x6) précédentes :­1­>z=x'*y//on transforme x en matrice 1 col (6x1) avec le « ' », pour respecter la compatibilité pour le produit .  z  =          column 1 to 5 !   0.    3.8042261    2.351141   ­ 2.351141   ­ 3.8042261 !!   0.    1.1755705    0.7265425  ­ 0.7265425  ­ 1.1755705 !!   0.  ­ 3.0776835  ­ 1.902113     1.902113     3.0776835 !!   0.  ­ 3.0776835  ­ 1.902113     1.902113     3.0776835 !!   0.    1.1755705    0.7265425  ­ 0.7265425  ­ 1.1755705 !!   0.    3.8042261    2.351141   ­ 2.351141   ­ 3.8042261 !         column 6 ! ­ 9.797E­16 !! ­ 3.027E­16 !!   7.926E­16 !!   7.926E­16 !! ­ 3.027E­16 !! ­ 9.797E­16 !

Concaténation de matrices : ­1­>A11=1

 A11  =     1.  

­1­>A12=[2 3 4] A12  = 

!   2.    3.    4. !

­1­>A21=[1;1;1] A21  = !   1. !!   1. !!   1. !

­1­>A22=[4,9,16;8,27,64;16,81,256] A22  = 

!   4.     9.     16.  !!   8.     27.    64.  !

!   16.    81.    256. !­1­>A=[A11,A12;A21,A22] // les 4 matrices concaténées . Le ; est le séparateur de lignes. ','» ou '  '  sépare les colonnes. A  = !   1.    2.     3.     4.   !!   1.    4.     9.     16.  !!   1.    8.     27.    64.  !!   1.    16.    81.    256. !

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 2 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Pour rechercher une commande ou sa syntaxe, des exemples, ... :

1/ Dans scilex, cliquer sur Help ­­> Help Browser­­­> icône de recherche/arborescence­­>taper « lemotachercher »

exemple: fft 

2/ Dans l'aide en ligne : http://www.scilab.org/product/man­fr­scilab­4.1/accueil.html cliquer sur la commande recherchée 

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 3 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Pour obtenir une démonstration de la plupart des fonctions1. Démarrer scilab, il apparaît la fenêtre principale (le Prompt), ici appelé scilex (fenêtre 

d'exécution de scilab)2. Demos­> fenêtre listant les démos: on choisis le type de démonstration. Ici Graphics­> 2D 

3D3. On choisit la démonstration:ici « param3d »4. on clique sur Ok ;5. Dans la fenêtre scilex, apparaît souvent le script qui a permis de réaliser la 

démonstration. 6. Fermer les fenêtre démonstrations(cancel)7. Cliquer sur Editor, et  copier/coller le script dans la fenêtre d'édition :

ici: Demo of param3dt=0:0.1:5*%pi;param3d(sin(t),cos(t),t/10,35,45,'X@Y@Z',[2,4]);On peut ainsi modifier ce script et donc essayer les fonctions, pour les adapter à ses besoins . Il suffit de sélectionner à la souris(bouton gauche),la zone apparaît en noir, puis de coller dans un éditeur de texte quelconque, en cliquant sur le bouton central/molette, ou les 2 Boutons en même temps, s'il est manquant . 

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 4 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Fenêtre principale et Script Tracé de la fonction sinus(x) de période 2 :

D'après : 

http://88.191.24.164:8081/docenligne/ressources/numerique/traitementsignalimages/laboratoire­scientifique­gratuit­scilab/intro_scilab.ppt/view

1. Ouvrir scilab, par exemple en console/terminal sous linux, en tapant simplement scilab.

Ici, on a utilisé scilab (fenêtre principale d'acceuil) comme calculatrice pour calculer (1+1) puis  4

.2. Cliquer sur le bouton de Menu ÉDITOR3. Taper le script dans l'éditeur de scilab(SCIPAD) qui s'ouvre, ou le copier/coller depuis un éditeur de texte .4. Sélectionner les lignes de script choisies puis EXECUTE ­­­> EVALUATE SELECTION OU Ctrl+Y

Pour copier de la fenêtre de commande silex vers un éditeur de texte(scipad, vim,kwrite...):C'est une méthode utilisable pour copier d'un terminal/shell vers un éditeur . :Sélectionner la zone à copier­­­> clic Bouton central de la souris ou les 2 boutons (souris 2 boutons)dans l'éditeur ou traitement de texte . ­3­>u1=umax*sin(2*%pi*t+phi) u1  = !   2.8284271 !!   2.8287825 !

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 5 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Introduction aux commandes et à l'organisation de Scilab.D'après: http://www.saphir-control.fr/articles/plot%20avance_lm30/lm_article.htmlet ici , très bonne introduction plus simple: http://cermics.enpc.fr/scilab_new/site/Initiation/intro_scilab_2/intro_scilab_2.htmlou encore, pas à pas avec beaucoup d'exemples: Nancy E.S.I.A.L.Université Henri Poincaré_Email : [email protected]

Scilab : Courbes et Surfaces

On peut copier/coller la fenêtre graphique par Alt+PrintScreen ou avec ksnapshot(capture d 'écran)Pour tester chaque ligne d'instruction: la sélectionner puis Execute dans Scipad ou la copier/coller vers Scilex .

1. Tracé des courbes de fonctions y=f(x)

2. Plusieurs courbes avec  toutes les données d'ordonnées y qui correspondent à la même discrétisation des abscisses x .Les coordonnées x, y sont respectivement les éléments du vecteur ligne x et des colonnes de y . 

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 6 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Courbes­La commande Plot, très simple . 

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 7 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Tracé rapide de courbes avec plothttp://cermics.enpc.fr/scilab_new/site/Initiation/intro_scilab_2/intro_scilab_2.html

Script à taper dans l’éditeur scilab :

//Tracé rapide de courbes avec plot;//Définition du vecteur ligne des valeurs x (abscisses)x=(0:5e-2:10);//0 départ, 0.1 pas , 10 fin y1=10*exp(-x/4).*sin(x);//calcul du vecteur ligne y1 (ordonnée)y2=10*exp(-x/6).*sin(x);y3=10*exp(-x/2).*sin(x);y4=10*exp(-(sin(x/4))/0.5).*sin(x).*cos(10*x);//(.*) est la multiplication élément par élément des vecteurs et non la multiplication matricielle (*) par défaut. clf;plot(x,y1,'b.--o');//voir l’aide en ligne pour ‘linespec’plot(x,y2,'r.-*');plot(x,y3,'g.--+');plot(x,y4,'k.-x');xtitle('ESSAI DE LA FONCTION SCILAB plot y1à4=10*exp(-x/to).*sin(x); ... y4=10*exp(-(sin(x/4))/0.5).*sin(x).*cos(10*x)','x','y1à4(x)');//mettre une légende en haut à D 'ur'...//avec le style de ligne , ici couleur car > 0...//2 bleu, 3 vert, 5 rouge, 1 noir legends(['o y1';'* y2';'+ y3';'x y4'],[2;5;3;1],'ur');xgrid();//Mettre la grille sur les graduations principales

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 8 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

TRACÉ DE FONCTIONS CONTENANT DES FRACTIONShttp://www.scilab.org/lycee/Familiarisation.pdf

//« * » est la multiplication matricielle et « .* » est la multiplication élément par élément ://" / » est la « division matricielle1 » et « ./ » est la division élément par élément ://Attention au piège suivant : « 1./x » est considéré comme « 1. / x » et il faut mettre//un espace entre « 1 » et « . » pour utiliser la division élément par élément : « 1 ./x ».

EXEMPLE TRACÉ DE f(t) = 2.t / (1+1/(t²))

//[début:pas:fin]'t=[ ­10:0.1:8]';function [u] = f(t);//« * » est la multiplication matricielle et « .* » est la multiplication élément par élément ://" / » est la « division matricielle1 » et « ./ » est la division élément par élément ://Attention au piège suivant : « 1./x » est considéré comme « 1. / x » et il faut mettre//un espace entre « 1 » et « . » pour utiliser la division élément par élément : « 1 ./x ».u=2*t ./(1+1 ./(t^2));endfunction;plot2d(t,f(t));

Export de graphiques avec scilab: depuis la fenêtre graphique­­>File­­>export

Le format postscript (.eps) est lisible par kghostview, kpdf, notamment, malheureusement verticalement .

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 9 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Courbes­La commande Plot et la synthèse de Fourier de signaux .

Reconstitution du signal carré symétrique.La phase des harmoniques est nulle . 

Reconstitution du signal carré symétrique.La phase des harmoniques est nulle . 

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 10 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Reconstitution du signal carré symétrique.La phase des harmoniques est /2. 

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 11 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Plusieurs courbes, plot2d, les coordonnées des points sont des éléments de matrices M et N :

M=[(0:0.1:10)' (5:0.1:15)' (10:0.1:20)'];//vecteurs colonnes, marqués d'une « ' », (0;0,1;...10); (5;5,1;..15);(10;10,1;..;20)N=[0.1*M(:,1).^2 log(M(:,2)) 0.5*M(:,3)];xbasc();plot2d(M,N);

M=[(0:0.1:10)' (5:0.1:15)' (10:0.1:20)'];N=[0.1*M(:,1)^2 0.5*M(:,2) log(1.5*M(:,3))];//vecteurs colonne 0,1M ²; 0,5M et log(1,5M),  calculé à partir des vecteurs colonnes de la  matrice M dans cet ordre . xbasc();plot2d(M,N);

On a inversé les colonnes 0,5M et log(1,5M)dans la matrice N . Les couleurs sont attribuées automatiquement .

M=[(0:0.1:10)' (5:0.1:15)' (10:0.1:20)'];

N=[7*sin(M(:,1)) 0.5*M(:,2)log(1.5*M(:,3))];

xbasc();plot2d(M,N);

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 12 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Plusieurs courbes, plot2d, signal carré avec  squarewave

t=(0:0.1:5*%pi)';// t est mis en vecteur colonne « ' »xbasc() // effacer le graphique précédent . xtitle(['plot2d de signaux de période 2pi:2*sin(t), 1.5*squarewave(t) carré alpha=0.5,squarewave(t,10)carré alpha=10%']);//on rajoute un titre au diagramme.plot2d(t,[2*sin(t),1.5*squarewave(t),squarewave(t,10)])// t en abscisse, tracé de 2*sin(t), puis, 1.5*squarewave(t) signal carré d'amplitude 1,5 symétrique;//squarewave(t,10) signal carré d'amplitude 1 de rapport cyclique 10% . +

// signaux sinusoïdaux et déphasage . t=[0:2e­5:2e­3]';//vecteur colonne 0 à 2e­3 par pas de 2e­5f=1e3;umax=4;phi=%pi/4;u=umax*sin(2*%pi*f*t+0*phi);u1=umax*sin(2*%pi*f*t+phi);u2=umax*sin(2*%pi*f*t­phi);xbasc();xtitle("Harmoniques et déphasage;u=umax*sin(2*%pi*f*t+phi)","t(s)","u(phi=0),u1(phi=pi/4),u2(phi=­pi/4)");plot2d(t,[u,u1,u2])//ou plot2d([t,t,t],[u,u1,u2]) //qui concatène les matrices de 3 vecteurs colonnes(abscisses 't,t,t',ordonnées'u,u1,u2')

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 13 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Quelques paramètres optionnels de plot2d: D'après: Une introduction à Scilab version 0.999Bruno Pinçon

● Style des marqueurs: 

 

Attention , quand on copie/colle du document pdf «  Une introduction à Scilab » , vers l'éditeur de scilab (scipad), les caractères peuvent changer, tel « ' » en « , ». 

● plot2d2 permet de dessiner des fonctions en escalier● plot2d3 dessine des diagrammes en bâtons● plot2d4 trace des vecteurs flêchés entre le point n­1 et le point n . 

//superposer 2 courbes dont un histogramme . xbasc()X = rand(100000,1,"normal"); classes = linspace(­5,5,21);histplot(classes,X)// on lui superpose le trac´e de la densit´e de N(0,1)x = linspace(­5,5,60)'; y = exp(­x.^2/2)/sqrt(2*%pi);plot2d(x,y, style=2, frameflag=0, axesflag=0)

// Des courbes superposees avec des abscisses differentesx1 = linspace(0,1,61)';x2 = linspace(0,1,31)';x3 = linspace(0.1,0.9,12)';y1 = x1.*(1­x1).*cos(2*%pi*x1);y2 = x2.*(1­x2);y3 = x3.*(1­x3) + 0.1*(rand(x3)­0.5); // idem a y2 avec une perturbationymin = min([y1 ; y2 ; y3]); ymax = max([y1 ; y2 ; y3]);dy = (ymax ­ ymin)*0.05; // pour se donner une margerect = [0,ymin ­ dy,1,ymax+dy]; // fenetre de visualisationxbasc() // effacement des graphiques precedentsplot2d(x1, y1, style=1, frameflag=5, rect=rect) // 1er appel qui impose l’´echelleplot2d(x2, y2, style=2, frameflag=0) // 2eme et 3 eme appel :plot2d(x3, y3, style=­1,frameflag=0) // on utilise l’echelle precedentextitle("Des courbes superposees avec des abscisses differentes","x","y")

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 14 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Exemple d'utilisation de plot2d avec presque toutes les options. //Exemple d'utilisation de plot2d avec presque toutes les options. t = linspace(0,2*%pi,60)';//on discrétise l'espace des temps de 0 à 2pi en 60 pointsx1 = 2*cos(t); y1 = sin(t); // une ellipsex2 = cos(t); y2 = y1; // un cerclex3 = linspace(­2,2,60)'; y3 = erf(x3); // la fct erreurMx=[x1 x2 x3];My=[y1 y2 y3];//matrices d'abscisses et d'ordonnées; Si même abscisse pour y1,y2,y3 ; Mx = x .

xmin=­2;xmax=2;ymin=­1;ymax=1;fenetre=[xmin,ymin,xmax,ymax];//définition taille fenêtre graphiquelegende = "ellipse@cercle@fct erreur";//legende des courbes//frameflag=4; //´echelle isométrique calculée via les max et min de Mx et My, pour cercle et ellipse,//frameflag=5; //pour calculer l'échelle à partir de rect avec adaptation éventuelle pour graduations//le style des courbes et marqueurs des points (>=0 trait continu+couleur;<0 symboles noirs)style=[­1 ­2 ­8];//axesflag=5;// sans boite mais avec axes et graduations (tracés en y  = 0 et x  = 0)linlog="nn"; //axes des x et des y non log, donc linéaire; ln (x log, y non log); ”n” (non log) ou ”l” (log)xbasc();subplot(1,2,1);//sous fenêtre  graphique 1ligne ,2 colonnes position 1plot2d(Mx,My,style=styl, frameflag=4, axesflag=5 ,rect=fenetre,leg=legende,logflag=linlog);//xtitle("l'essentiel des paramètres de plot2d","x(t)","y(t)");//valable pour une fenêtre plot2d

subplot(1,2,2);//sous fenêtre  graphique 1ligne ,2 colonnes position 2x = linspace(0,2*%pi,40)';y = sin(x);yp = sin(x) + 0.1*rand(x,"normal");//perturbation gaussienneplot2d(x, [yp y], style=[­8 2],frameflag=2, leg="y=sin(x)+perturbation@y=sin(x)");

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 15 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Adapter les échelles avec les unités , le nombre de graduations....● plotframe:

D'après aide en ligne : http://www.scilab.org/product/man­fr­scilab­4.1/index.html

  x=[­0.3:0.8:27.3]';  y=rand(x); rect=[min(x),min(y),max(x),max(y)]; tics=[4,10,2,5];    // graduations:4 x­intervalles et 2 y­intervalles; 10 x­sous intervalles; 5 y ­sous intervallesboite=[0,0,0.5,0.5];//taille de la boite contenant le graphique, ici xmax=0,5 x Fenêtre graphique, de même ymax;grille=[%t,%f]; //grille suivant x (verticale)titre=["My plot","x","y"]; xbasc();plotframe(rect,tics,grille,titre,boite)plot2d(x,y,2,"000");//plotframe est utilisée avec les fonctions plot2d ,... pour dessiner le cadre. //Elle doit être utilisée avant plot2d qui doit être ensuite appelée avec le mode de superposition "000".

● graduate

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 16 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

//signaux sinusoïdaux et déphasage ;//paramètres;f=1e3;phi1=0;phi2=­%pi/2u1max=1;u2max=2;//Travail à faire:Tracer uj(t) =u_{j(max)} . sin(2 . %pi .f.t+%phi_j )// discrétisation des instants (choix des instants t de calcul);t=[0:3*1e­5:2e­3]'; //définition des sinusoïdes (harmoniques);u1=u1max*sin(2*%pi*f*t+phi1);u2=u2max*sin(2*%pi*f*t+phi2);//définition de la fenêtre d'écran et paramètres des axes,xmin=0;xmax=2e­3;ymin=­1.1*u2max ; ymax=1.1* u2max;rect=[xmin,ymin,xmax,ymax];tics=[4,2,10,5];    // graduations:4 x­intervalles et 2 y­intervalles; 10 x­sous intervalles; 5 y ­sous intervallesboite=[0,0,0.8,0.8];//taille de la boite contenant le graphique, ici Lmax=0,5 x L­Fenêtre graphique, de même Hmax;grille=[%t,%f]; //grille suivant x (verticale)et y style=[­1,­8];//style du tracé des courbes.titre=["signaux sinusoidaux et dephasage de u2 par rapport à u1","u1(t)","u2(t)"]; xbasc();plotframe(rect,tics,grille,titre,boite);plot2d([t t],[u1,u2],style,"000");//plotframe est utilisée avec les fonctions plot2d ,... pour dessiner le cadre. //Elle doit être utilisée avant plot2d qui doit être ensuite appelée avec le mode de superposition "000".

Pour avoir une grille : plotframe

Nécessite l'appel de plot2d avec l'option « 000 ».Ne permet plus l'option //axesflag=5;// sans boite mais 

avec axes et graduations (tracés en y  = 0 et x  = 0)

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 17 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

x=[0:0.1:4*%pi]';       xbasc()xtitle("trace de sin(x)+x et cos(x)" , "x" , "y")plot2d([x x],[sin(x)+x cos(x)],[1,­1],"121","sin(x)+x@cos(x)")//­1 nous donne des croix au lieu d'une ligne continue.//"121"="abc" a=1=> légende, b=2 scilab calcule l'échelle, c=1, graduation des axes x et y  

//Signaux sinusoïdaux et déphasage . t=[0:1e­5:2e­3]';f=1e3;phi1=0phi2=%pi/2phi3=0u1=sin(2*%pi*f*t+phi1);u2=sin(2*%pi*f*t+phi2);u3=u1+u2;xbasc();xtitle("signal sinusoïdal et dephasage", "t(s)","u(t)");plot2d(t,[u1 u2 u3])

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 18 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

TRACÉ DE PLUSIEURS COURBES LÉGENDÉES AVEC TITRE //MODÉLISATION THERMIQUE MAISON MENDITTE //INFLUENCE DES RÉSISTANCE THERMIQUES SUR //LES PERTES THERMIQUES PAR CONDUCTIONS //À TRAVERS LES PAROIS//On utilise le modèle des résistances thermiques //Associées en dérivation avec l'hypothèse //des Tint(°C) et Text identiques pour chaque paroi. //ParamètresRmur=4; Smur=200;Rsol=4;Ssol=64;Rtoit=7;Stoit=76;Umen=1.4;Rmen=1/Umen;Smen=30;//Umen[W/(K.m²)]Tint=19; Text=-5 ; DeltaT=Tint-Text ; //Tint et Text (°C)//CalculsRthermEq=1/(1/Rmur+1/Rsol+1/Rtoit+1/Rmen);//Calcul RthermEq(K.m²/W) indicatif inutilisé dans Pth(W)Pth= DeltaT*(Smur/Rmur+Ssol/Rsol+Stoit/Rtoit+Smen/Rmen);//Pth(W) pertes thermiques par conduction dans les parois//Pth (Rthmur)Rmin=Rmur;Rmax=Rmin*1.5;Rpas=(Rmax-Rmin)/10;R = [Rmin:Rpas:Rmax];DeltaR=(R-Rmin)/Rmin*100;Pth_Rmin=DeltaT*(Smur/Rmin+Ssol/Rsol+Stoit/Rtoit+Smen/Rmen);Pth= DeltaT*(Smur./R+Ssol/Rsol+Stoit/Rtoit+Smen/Rmen);// attention à la division par R qui est un vecteur d'où "./" DeltaPthmur=abs(Pth-Pth_Rmin)/Pth_Rmin*100; //Diminution des pertes thermiques en % xgrid;//DeltaPth=abs(Pth-Pth(Rmin))/Pth(Rmin)*100; présente de curieuse erreurs de calcul (Voir à définir la fonction Pth(R) //Pth (Rthtoit)Rmin=Rtoit; Rmax=Rmin*1.5 ; Rpas=(Rmax-Rmin)/10;R = [Rmin:Rpas:Rmax];DeltaR=(R-Rmin)/Rmin*100;Pth_Rmin=DeltaT*(Smur/Rmur+Ssol/Rsol+Stoit/Rmin+Smen/Rmen);Pth= DeltaT*(Smur/Rmur+Ssol/Rsol+Stoit ./R+Smen/Rmen);// attention à la division par R qui est un vecteur d'où "./" DeltaPthtoit=abs(Pth-Pth_Rmin)/Pth_Rmin*100; //Diminution des pertes thermiques en % //Pth (Rthsol)Rmin=Rsol; Rmax=Rmin*1.5 ; Rpas=(Rmax-Rmin)/10;R = [Rmin:Rpas:Rmax];DeltaR=(R-Rmin)/Rmin*100;Pth_Rmin=DeltaT*(Smur/Rmur+Ssol/Rmin+Stoit/Rtoit+Smen/Rmen);Pth= DeltaT*(Smur/Rmur+Ssol ./R+Stoit/Rtoit+Smen/Rmen);// attention à la division par R qui est un vecteur d'où "./" DeltaPthsol=abs(Pth-Pth_Rmin)/Pth_Rmin*100; //Diminution des pertes thermiques en % //Pth (Rthmen)Rmin=Rmen; Rmax=Rmin*1.5 ; Rpas=(Rmax-Rmin)/10;R = [Rmin:Rpas:Rmax];DeltaR=(R-Rmin)/Rmin*100;Pth_Rmin=DeltaT*(Smur/Rmur+Ssol/Rsol+Stoit/Rtoit+Smen/Rmin);Pth= DeltaT*(Smur/Rmur+Ssol/Rsol+Stoit/Rtoit+Smen ./R);// attention à la division par R qui est un vecteur d'où "./" DeltaPthmen=abs(Pth-Pth_Rmin)/Pth_Rmin*100; //Diminution des pertes thermiques en %

//Tracé des courbes Pth (Rth) :clf; // clear fenêtre graphique plot(DeltaR,DeltaPthmur,'r.-s' );// "DeltaPth(DeltaRmur)" voir l’aide en ligne pour ‘linespec’plot(DeltaR,DeltaPthtoit,'k.-^');// "DeltaPth(DeltaRtoit)" , k blackplot(DeltaR,DeltaPthsol,'g.--pentagram' );// "DeltaPth(DeltaRsol)" ,g vert , m magenta. plot(DeltaR,DeltaPthmen,'b.--o');// legende "DeltaPth(DeltaRmen)"//titre, titre axe des x, titre axe y .Attention pas d'apostrophe dans le titre car c'est un séparateur !!xtitle("Diminution des pertes thermiques maison en fonction de isolation","DeltaRtherm(%)","DeltaPth(%)");//mettre une légende en haut à G 'ug'...//avec le style de ligne , ici couleur car > 0...//2 bleu, 3 vert, 5 rouge, 1 noir legends(['o DeltaPth(DeltaRmen';'* DeltaPth(DeltaRsol';'^ DeltaPth(DeltaRtoit)';'carré DeltaPth(DeltaRmur'],[2;3;1;5],'ul');xgrid();//Mettre la grille sur les graduations principales

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 19 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Vecteurs, incréments et fonction 

Scilab manipule des vecteurs et des matrices qui sont traitées comme de multiples vecteurs lignes .

t=[0:1e­5:2e­3]t=[0:1e­5:2e­3

Script à taper ou copier/coller dans un éditeur (scipad: dans scilex­­­>Editor)pour tracer la fonction :f(t) = sin (2**f*t+ ):

//tracé de f(t)=5sin(2pift+3pi/6); c'est donc 5cos(2pift)t=[0:1e­5:2e­3];// la variable vecteur t de coordonnées 0 à 2e­3 par pas de 1e­5f=1e3;// variable f = 1000phi=3*%pi/6;//variable phi (phase)umax=5; //valeur crête ft= umax*sin(2*%pi*f*t+phi);// variable vecteur ft 

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 20 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

FFT sous scilab 

Le tracé avec les fréquences affichées est à revoir : 

//tracé de f(t)=5sin(2pift+3pi/6); c'est donc 5cos(2pift)t=[0:1e­5:2e­3]';// la variable vecteur colonne t de coordonnées 0 à 2e­3 par pas de 1e­5f=1e3;// variable f = 1000phi=3*%pi/6;//variable phi (phase)umax=5; //valeur crête u1= umax*sin(2*%pi*f*t+phi);// variable vecteur ft xbasc(); //efface le graphique précédent//plot2d(t,u1) //tracé 2d avec t en abscisse et ft en ordonnée. 

u2= u1+umax*sin(2*%pi*20*f*t+phi);// variable vecteur ft xbasc(); //efface le graphique précédentxtitle( 'u1= umax*sin(2*%pi*f*t+phi) et u2= u1+umax*sin(2*%pi*20*f*t+phi)','t','u2(t)')plot2d(t,[u1,u2]) //tracé 2d avec t en abscisse et  u1,u2 en ordonnée. 

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 21 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

FFT sous scilab 

//tracé de f(t)=5sin(2pift+3pi/6); c'est donc 5cos(2pift)t=[0:1e­7:2e­3]';// la variable vecteur colonne t de coordonnées 0 à 2e­3 par pas de 1e­7f=1e3;// variable f = 1000phi=3*%pi/6;//variable phi (phase)umax=5; //valeur crête u1= umax*sin(2*%pi*f*t+phi);// variable vecteur ft xbasc(); //efface le graphique précédent//plot2d(t,u1) //tracé 2d avec t en abscisse et ft en ordonnée. 

u2= u1+umax*sin(2*%pi*20*f*t+phi);// variable vecteur ft xbasc(); //efface le graphique précédentxtitle( 'u1= umax*sin(2*%pi*f*t+phi) et u2= u1+umax*sin(2*%pi*20*f*t+phi)','t','u2(t)');plot2d(t,[u1,u2]) //tracé 2d avec t en abscisse et ft en ordonnée. 

//f1 =[0:1e2:2e3]';//variable fréquence de 0 à 2000 par pas de 100, en vecteur colonne.

f2 = 1 ./(t+1e­6);tf= fft(u2,­1);//transformée de fourier de la fonction u2xbasc();plot2d(f2,abs(tf));//tracé avec en abscisse f2 et en ordonnée, abs(tf), le spectre d'amplitude de u2.//le module de la FFT soit le spectre d'amplitude . //xbasc()//plot(abs(tf))

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 22 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

SCILAB ET SONS

// At first we create 0.5 seconds of sound parameters.t=soundsec(0.5);// Then we generate the sound.s=sin(440*t)+sin(220*t)/2+sin(880*t)/2;xbasc()plot(t,s)[nr,nc]=size(t);xbasc()s(nc/2:nc)=sin(330*t(nc/2:nc));analyze(s);

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 23 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

D'après: http://www.celles.net/wikini/wakka.php?wiki=ScilabTraitementSignal

 http://svn.berlios.de/viewcvs/*checkout*/openphysic/scilab/physique/traitement_signal/echantillonnage/shannon.sce

clear;

n=4; // 4 secondesf1=6000; // frq fondamentalfmin=20fmax=20000

rate=44100;t=soundsec(n, rate);s=cos(2*%pi*f1*t);

plot(t(1:100),s(1:100));

clear;n=4; // 4 secondesf1=6000; // frq fondamentalfmin=20fmax=20000rate=44100;t=soundsec(n, rate);s=cos(2*%pi*f1*t);xbasc();playsnd(s);//joue le son vers le haut parleur//savewave("son_sans_repliement.wav",s,rate);

analyze(s,fmin,fmax,rate);//analyse de fourier 

// 2 raies//  ­ une à 6000 Hz = 6 kHz//  ­ l'autre (repliement) à 22050­6000 =16050 Hz = 16,05 kclear;xbasc()n=4; // 4 secondesf1=6000; // frq fondamentalfmin=20fmax=20000rate=22050;t=soundsec(n, rate);s=cos(2*%pi*f1*t);

plot(t(1:100),s(1:100));

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 24 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

// 2 raies//  ­ une à 6000 Hz = 6 kHz//  ­ l'autre (repliement) à 22050­6000 =16050 Hz = 16,05 k

clear;xbasc()n=4; // 4 secondesf1=6000; // frq fondamentalfmin=20fmax=20000rate=22050;t=soundsec(n, rate);s=cos(2*%pi*f1*t);

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 25 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

clear;//quantification 

function sq=quantif(s,N) sq=round(s)

endfunction

n=0.005 // dureeN=3; // nb de bitsf=500rate=80000; // frq echantillonnage// rate assez élevée car on veut mettre en évidence// la quantification... pas l'échantillonnaget=soundsec(n, rate)';s=(2^N­1)*(sin(2*%pi*f*t)+1)/2; // signal échantillonné mais pas quantifiésq=quantif(s,N); // signal quantifiéerr=abs(s­sq)^2; // erreur (bruit) de quantification xbasc()//plot2d(t,[s,sq,err])//plot2d(t,[s,sq,err],style=[1,1,1],rect=[0,2e­3,0,8],leg='')//plot2d(t,[s,sq,err],frameflag=1,rect=[0,2e­3,0,8],leg='s@sq@err')plot2d(t,[s,sq,err],leg='s@sq@err',rect=[0,0,4e­3,8],style=[1,2,3])

//squarewave ­ generates a square wave with period 2*%pi 

//ici , on réalise un signal carré de période 1 . tmax=2;t=[0:tmax/1e4:tmax];u=(1+squarewave (2*%pi*t,50))/2;//signal carre de periode 1 xbasc();xtitle("signal carre (0­1) de rapport cyclique 1/2 et de PERIODE 1:u=(1+squarewave (2*%pi*t,50))/2",'t(s)','u(t)');plot2d(t,u, rect=[0,­0.1,tmax,1.1]);

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 26 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Les courbes 3D 1. À PARTIR D'UNE DÉMO : depuis scilex­>Demos­>graphics­>2D­3D­>plot3D

Les angles alpha et beta sont les angles de vue de la figure 3D . Ces angles peuvent être modifiés en cliquant BG sur le bouton 3D Rot. , puis sur le graphique . 

Ici, tracé de z = sin(x).cos(y)

commandes : t=­%pi:0.3:%pi;xtitle(['plot3d:Z=sin(x).cos(y)']);plot3d(t,t,sin(t)'*cos(t),35,45,'X@Y@Z',[2,2,4]);

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 27 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

2. Démo modifiée 

xbasc();// pour effacer la fenêtre.Indispensable sinon, le tracé s'additionne au précédent ! xtitle(['plot3d:Z=sin(x).cos(y)']);t=0:0.5:4*%pi;//définition de la variable t de 0 à 4pi par pas de 0,5 .plot3d(t,t,sin(t)'*cos(t),35,45,'X@Y@Z',[2,2,4]);//tracé de X=t, Y=t, Z=sin(x).cos(y),vecteur colonne.//'X@Y@Z' donne la légende du graphe, 35, 45 donne les angles de la vue en perspective . 

//xtitle('cercle: equation parametrique: plot2d(x,y)R=2;t=[0:2*%pi*1e­2:2*%pi]';x=R*cos(t);y=R*sin(t);z=R*sin(2*t)+cos(2*t);//matrices de même  dimension pour l'addition . xbasc()xtitle('cercle: equation parametrique: plot2d(x,y) ou plot3d (x,y,z)','x=R.cos(t)','y=R.sin(t)');//plot2d(x,[y,z])plot3d (x,y,z)

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 28 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Courbes paramétriques 2D­3D //xtitle(equations parametriques: plot2d(x,y)R=2;t=[0:2*%pi*1e­2:2*%pi]';//vecteur colonnex=R*cos(t);//vecteur colonne(n,1) car t l'est .y=R*sin(t);//vecteur colonne (n,1) car t l'est .z1=R*sin(2*t)+cos(2*t);//matrices de même dimension //pour l'addition . xbasc();//effacement des diagrammes précédents. xtitle('courbes parametriques: plot2d(x,[y,z1]); z1=R*sin(2*t)+cos(2*t)','x=R.cos(t)','y=R.sin(t)');plot2d(x,[y,z1])//on concatène (assemble les matrices) //y(n,1) et z1(n,1).Donc [y,z1] de dim (n,2)

//xtitle(equations parametriques: plot3d(x,y,z,[theta,alpha,leg(ende),flag,ebox])  clear;R=2;t=(0:2*%pi*1e­2:2*%pi);//vecteur lignex=R*cos(t);// car t l'est .y=R*sin(t);//vecteur 1 ligne car t l'est .

//produit: matrice (1 lign,n col)*matrice (n lign,1col) (A*B avec ncol A = nlign B obligatoire)

z=R*sin(2*t)'*cos(2*t);

xbasc();//effacement des diagrammes précédents. 

xtitle('courbes parametriques:plot3d(x,y,z,55,45,x=R.cos(t),y=R.sin(t)');

plot3d(x,y,z,55,45,'x=R.cos(t)@y=R.sin(t)@z')

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 29 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

D'après la Présentation de Wikipédia : http://fr.wikipedia.org/wiki/Scilab

Tracé de vecteurs Flêchés avec : Xarrows: http://fr.wikibooks.org/wiki/D%C3%A9couvrir_Scilab_Graphiques_et_sonsxbasc();nx=[0,1];//vecteur des abscisses des points du vecteur.ny=[0,1];//vecteur des ordonnées des points du vecteur.xarrows(nx,ny);//donne le « vecteur flêché » du point (0,0) au point (1,1)

Application au vecteur de Fresnel....

plot2d4 : tracé en « flèches » (pour un champ de vecteurs) ;

Une démonstration (demo) de plot2d4 est obtenue en tapant dans la femêtre de prompt de scilab et en validant :

­­>plot2d4()

Ici, le script pour avoir le champ ci­contre : champ(1:10,1:10,rand(10,10),rand(10,10),1.0);

La commande :  champ(), donne cette démo. 

Champ de vecteurs:deff("[xdot] = derpol(t,x)",..        ["xd1 = x(2)";..         "xd2 = ­x(1) + (1 ­ x(1)**2)*x(2)";..         "xdot = [ xd1 ; xd2 ]"])xf= ­1:0.1:1;yf= ­1:0.1:1;fchamp(derpol,0,xf,yf)clf()fchamp(derpol,0,xf,yf,1,[­2,­2,2,2],"011")

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 30 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Utilisation de plot2d4 pour tacer des vecteurs et flêches. xbasc();theta=[0:2*%pi/100:2*%pi];nx=[0,cos(theta)];ny=[0,sin(theta)];xbasc();subplot(1,2,1);//­­­­xarrows(nx,ny);subplot(1,2,2);//­­­­plot2d4(nx,ny);

Coordonnées polaires:t= 0:.01:2*%pi;clf();polarplot(sin(7*t),cos(8*t))

clf();polarplot([sin(7*t') sin(6*t')],[cos(8*t') cos(8*t')],[1,2])

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 31 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

// Représentation de fresnel d'un signal sinusoïdal . xbasc();U=3;t=[0:%pi/8:2*%pi];x=t;y=U*sin(t);nx=[0,U*cos(0),0,U*cos(1*%pi/8),0,U*cos(2*%pi/8),0,U*cos(3*%pi/8),0,U*cos(4*%pi/8),0,U*cos(5*%pi/8),0,U*cos(6*%pi/8)];//vecteur des abscisses des points du vecteur.ny=[0,U*sin(0),0,U*sin(1*%pi/8),0,U*sin(2*%pi/8),0,U*sin(3*%pi/8),0,U*sin(4*%pi/8),0,U*sin(5*%pi/8),0,U*sin(6*%pi/8)];//vecteur des ordonnées des points du vecteur.subplot (1,2,1);xarrows(nx,ny);//donne le « vecteur flêché » du point (0,U*cos(theta)) au point (1,U*sin(0theta)plot2d4 (nx,ny,rect=[­U,­U,U,U]);

subplot (1,2,2);plot2d4 (x,y,rect=[0,­U,2*%pi,U]);

// Représentation de fresnel d'un signal sinusoïdal . xbasc();U=3;theta=[0:%pi/8:2*%pi];t=[0:1:15]x=theta;y=U*sin(theta);nx=[[(1+squarewave (1*%pi*t,50))/2]'*U*cos(theta)];//vecteur des abscisses des 2 points extrêmes du vecteurny=[[(1+squarewave (1*%pi*t,50))/2]'*U*sin(theta)];//vecteur des ordonnées des 2 points extrêmes du vecteur.subplot (1,2,1);//xarrows(nx,ny);//donne le « vecteur flêché » du point (0,U*cos(theta)) au point (1,U*sin(0theta)plot2d4 (nx,ny,rect=[­U,­U,U,U]);

subplot (1,2,2);plot2d4 (x,y,rect=[0,­U,2*%pi,U]);

Génération d'un vecteur dont les coordonnées sont une fois sur 2 nulles:[0,Ucos theta,0,  cUostheta,....]nx=[[(1+squarewave (1*%pi*t,50))/2]'*U*cos(theta)];de même pour ny [0,sin theta,0,sin theta,...]ceci pour que l'origine du vecteur soit toujours (0,0)

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 32 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

clear; clf; deff('[z] = f(x, y)', 'z = sin(x) * cos(y)') xset('colormap', jetcolormap(32)) x = %pi * [­1:0.05:1]';y = x;z = feval(x, y, f); //(_,_,1) 1ère courbe tracée dans la case 1,1 de la fenêtre 2lignx2col.subplot(2, 2, 1)grayplot(x, y, z) subplot(2, 2, 2)contour2d(x, y, z, 5)

subplot(2, 2, 3)plot3d1(x, y, z, 0, 90) subplot(2, 2, 4)plot3d1(x, y, z, 70, 70)

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 33 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Scilab images et sons:http://fr.wikibooks.org/wiki/D%C3%A9couvrir_Scilab_Graphiques_et_sons#fleche1

SonsScilab peut générer ou analyser des sons. Il peut même lire et écrire des fichiers .WAV (voir Gestion des fichiers).Un son est en fait un vecteur dont les valeurs sont comprises entre ­1 et 1 ; les valeurs hors de cet interval sont ignorées (phénomène d'écrêtage).Si ƒs est la fréquence d'échantillonage en hertz, alors le pas d'échantillonage est 1/ƒs. L'instruction soundsec

permet de générer un vecteur correspondant au pas d'échantillonnage :t=soundsec(n, fs)où n est le nombre de secondes et ƒs est la fréquence. Si l'on omet ƒs, Scilab prend la valeur 22 050.

Si l'on a défini la fonction de son s (pression relative de l'air/tension d'alimentation normée du haut­parleur en fonction du temps), alors on peut générer un vecteur de valeurs u :u = s(t)et jouer le sonsound(u, fs)L'instruction analyze détermine le spectre sonore du son et trace le graphique.analyze(s)

//analyse et generation de sons//on genere 0,5s echantillonne à fech.//si ce temps est trop long, la mémoire sature.//message d'erreur: stack size exceededfs=22e3;t=soundsec(0.5,fs);//0.5s echant à fech

u = sin(1e3*t)+sin(0.3e3*t);sound(u, fs);//génère un son pur à w=1e3 rad/s,// additionné à un harmonique à 300 rad/s audible au Hparleur de l'ordinateur . xbasc();//xtitle("spectre d'amplitude de u(t)","w(rad/s)","u(t)");//analyze(u,fmin,fmax,fech(rate),nbpoints);analyze(u,10,1400,22050,7e3);

On obtient cette démo en tapant simplement dans l'éditeur scilab ou dans la fenêtre de prompt(scilex...): analyze()// At first we create 0.5 seconds of sound parameters.t=soundsec(0.5);// Then we generate the sound.s=sin(440*t)+sin(220*t)/2+sin(880*t)/2;sound(s, fech)//génère un son­>HP PC[nr,nc]=size(t);s(nc/2:nc)=sin(330*t(nc/2:nc));analyze(s);

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 34 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Scilab images et sons://analyse et generation de sons­//on genere 0,5s echantillonne(sampling) à fech.//si ce temps est trop long, la mémoire sature.//message d'erreur: stack size exceededfs=44e3;f=0.4e2;w=2*%pi*f;T=1/f;t=soundsec(0.5,fs);//0.5s echant à fechu3 = 1+2*sin(w*t)+2/3*sin(3*w*t)+2/5*sin(5*w*t);u4 = 1+2*sin(w*t)+2/3*sin(3*w*t)+2/5*sin(5*w*t)+2/7*sin(7*w*t);sound(u3, fs);//génère un son pur à la pulsation w(rad/s),// additionné à des harmoniques à n.w rad/s audible au Hparleur de l'ordinateur . xbasc();//efface diagramme précédent.//xtitle("spectre d'amplitude de u(t)","w(rad/s)","u(t)");subplot(2,2,1);­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­//plot2d([t]',u3,rect=[xmin,ymin,xmax,ymax]);plot2d([t]',u3,rect=[0,­1,2*T,3]);subplot(2,2,2);//­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­//analyze(u,fmin,fmax,fech(rate),nbpoints);analyze(u3,10,6*w,44e3,7e3);subplot(2,2,3);­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­//plot2d([t]',u,rect=[xmin,ymin,xmax,ymax]);plot2d([t]',u4,rect=[0,­1,2*T,3]);subplot(2,2,4);­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­//analyze(u,fmin,fmax,fech(rate),nbpoints);analyze(u4,10,8*w,44e3,7e3);

Synthèse et décomposition d'un signal carré . Attention: en abscisse du spectre, c'est ( / )rrr r =2..f et non f(Hz)On remarque que le spectre d'amplitude donné, ci dessous, donne des amplitudes normées à 1 . 

Il s'agit donc de valeurs d'amplitude  relatives à l'amplitude du fondamental : ici 2V .

ATTENTION: si ce temps de soundsec(0.5,fs), ici 0,5s est trop long, et/ou si la fréquence d'échantillonnage est trop forte(Max 44kHz pour les cartes son habituelles), la mémoire sature, d'où le message d'erreur: stack size exceeded, ainsi que l'affichage dans la fenêtre du prompt scilab(scilex):While executing a callback (en train d'exécuter une fonction de rappel).Il faut alors stopper ce calcul pour récupérer la fonction Audio. 

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 35 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

GÉNÉRER, ANALYSER ET JOUER DES SONS SUR LA CARTE SON AVEC SCILAB://GÉNÉRER, ANALYSER ET JOUER DES SONS SUR LA CARTE SON AVEC SCILAB: FICHIER SonsFFT.sce//a PARTIR DE http://fr.wikibooks.org/wiki/D%C3%A9couvrir_Scilab_Graphiques_et_sons#son1//soundsec permet de générer un vecteur correspondant au pas d'échantillonnage :// duree est le nombre de secondes et fech est la fréquence. Si l'on omet fech , Scilab prend la valeur 22 050.//fech est une valeur entière.

fech=22e3;duree=2; t=soundsec(duree,fech);

fh1 = 1e2; h1=1*sin(2*%pi*fh1*t);fh2 =50; h2=2*sin(2*%pi*fh2*t);fh3 =1e3; h3=2*sin(2*%pi*fh3*t);som=h1+h2+h3;

xbasc();subplot (2,2,1);plot2d([t,t],[h1,h2]);subplot (2,2,2);plot2d([t,t],[h3,som]);

//jouer le son u échantillonné //à la fréquence fechsound(h1,fech ); sound(h2,fech );sound(h3,fech );sound(som,fech );

subplot (2,2,3);analyze(h1);analyze(h2);analyze(h3);

subplot (2,2,4);

//L'instruction analyze détermine //le spectre sonore du son et //trace le graphique.;//analyze(h1);//analyze(h2);//analyze(h3);analyze(som);

//a partir de : http://fr.wikibooks.org/wiki/D%C3%A9couvrir_Scilab_Gestion_des_fichiers//sauver le fichier au format .wav; Microsoft PCM format dans le fichier harmoniq_umax=2.//mis par défaut dans /home/usersavewave('harmoniq_umax=2', som, fech);//charger le fichier harmoniq_umax=2 au format .wav; Microsoft PCM format dans la matrice v.//chaque ligne de la matrice correspondant alors à un canal.v=loadwave('harmoniq_umax=2');playsnd(v);

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 36 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Scilab et Gestion des fichiers: http://fr.wikibooks.org/wiki/D%C3%A9couvrir_Scilab_Gestion_des_fichiers#Images

mapsound(s,dt=0.1,simpl=1,fmin=100,fmax=3000,rate=fs)

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 37 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

//analyse et generation de sons­//on genere 0,5s echantillonne(sampling) à fech.//si ce temps est trop long, la mémoire sature.//message d'erreur: stack size exceededfs=22e3;t=soundsec(0.5,fs);//0.5s echant à fechu3 = 1+2*sin(1e2*t)+2/3*sin(3e2*t)+2/5*sin(5e2*t);u4 = 1+2*sin(1e2*t)+2/3*sin(3e2*t)+2/5*sin(5e2*t)+2/7*sin(7e2*t);sound(u3, fs);//génère un son pur à w=1e2 rad/s,// additionné à des harmoniques à n.100 rad/s audible au Hparleur de l'ordinateur . xbasc();//efface diagramme précédent.//xtitle("spectre d'amplitude de u(t)","w(rad/s)","u(t)");

subplot(2,3,1);//plot2d([t]',u3,rect=[xmin,ymin,xmax,ymax]);plot2d([t]',u3,rect=[0,­1,120e­3,3]);subplot(2,3,2);//analyze(u,fmin,fmax,fech(rate),nbpoints);analyze(u3,10,800,22050,7e3);subplot(2,3,3);//tracé du sonagramme(abscisse t(s), ordonnées w (rad/s)mapsound(u3,dt=0.1,simpl=1,fmin=50,fmax=1000,rate=fs)//­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­subplot(2,3,4);//plot2d([t]',u,rect=[xmin,ymin,xmax,ymax]);plot2d([t]',u4,rect=[0,­1,120e­3,3]);subplot(2,3,5);//analyze(u,fmin,fmax,fech(rate),nbpoints);analyze(u4,10,800,22050,7e3);subplot(2,3,6);mapsound(u4,dt=0.1,simpl=1,fmin=50,fmax=1000,rate=fs)

Graduation des axes :xgraduate 

[xi,xa,np1,np2,kMinr,kMaxr,ar]=xgraduate(xmi,xma)   

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 38 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Un fichier .WAV peut être mis dans une matrice avec la fonction loadwave :x=loadwave('nom_de_fichier')chaque ligne de la matrice correspondant alors à un canal. On peut ensuite jouer ce son dans Scilab avec l'instruction playsndplaysnd(x)

x=loadwave('./Documents/documents­Djl/prof/analyson/ADjl.Wav')playsnd(x)

//on charge dans le vecteur x le son provenant de la voyelle « A » de la voix d'une fille de 6ans . x=loadwave('./Documents/documents­Djl/prof/analyson/A­Df­micCravate.Wav')playsnd(x);xbasc()analyze(x, 10, 3e3,44e3,7e3);

La période de la voyelle « A » prolongée de la voix d'une enfant de 6ans est de période 4ms, soit 250Hz . Avec le Logiciel Libre (GPL)Audacity

Le spectre d'amplitude avec w(rad/s) en abscisse. La raie principale du spectre est à ~ 1300 rad/s, soit 250Hz

Voir .....scriptTtsignal.rtf

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 39 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

//GÉNÉRER, ANALYSER ET JOUER DES SONS SUR LA CARTE SON AVEC SCILAB://a PARTIR DE http://fr.wikibooks.org/wiki/D%C3%A9couvrir_Scilab_Graphiques_et_sons#son1//soundsec permet de générer un vecteur correspondant au pas d'échantillonnage :// duree est le nombre de secondes et fech est la fréquence. Si l'on omet fech , Scilab prend la valeur 22 050.//fech est une valeur entière.fech=22e3;duree=2; t=soundsec(duree,fech);N=duree*fech; //nb de points pour le tracé des spectres (permet le calcul du pas de f fh1 = 261.63;fh2 =293.66;fh3 =329.63;fh4=1e3;fh5=1.5e3; u1max=1;u2max=1;u3max=1;u4max=1;u5max=1;h1=u1max*sin(2*%pi*fh1*t); h2=u2max*sin(2*%pi*fh2*t); h3=u3max*sin(2*%pi*fh3*t);h4=u4max*sin(2*%pi*fh4*t); h5=u5max*sin(2*%pi*fh5*t);som=h1+h2+h3;//Définition de la fenêtre de tracé grahique plot2d:xmin=0;yminsom=-5;xmax=5e-3;ymaxsom=5 ; ymin1=-2.1 ; ymax1=2.1 ; xminFFT= 0;yminsomFFT=0;xmaxFFT=1.1*fh3;ymaxsomFFT=1 ; clf;subplot (2,2,1);plot2d([t,t],[h1,h2],rect=[xmin,ymin1,xmax,ymax1]);subplot (2,2,2);plot2d([t,t],[h3,som],rect=[xmin,yminsom,xmax,ymaxsom]);sound(h1,fech ); //jouer le son échantillonné à la fréquence fech//xclick attend un clic de souris dans la fenêtre graphique qui apparait . xclicksound(h2,fech );xclicksound(h3,fech );xclicksound(som,fech );//spectres avec la fonction fft:f=fech/N*(0:(N-1)) ;//de 0 à fechspectr_h1=2/N*fft(h1,-1);spectr_h1=2/N*fft(h2,-1);spectr_h1=2/N*fft(h3,-1);spectr_som=2/N*fft(som,-1);clf;subplot (2,2,3);//Affichage du module abs(spectr_h1) , soit le spectre d'amplitudeplot2d(f,abs(spectr_som),rect=[xminFFT,yminsomFFT,xmaxFFT,ymaxsomFFT]);

VOIR LA RÉSOLUTION , ICI fech/(durée*fech)=0,5Hz POUR AVOIR L’AMPLITUDE À 1.

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 40 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

fech=22e3;duree=2; t=soundsec(duree,fech);N=duree*fech; //nb de points pour le tracé des spectres (permet le calcul du pas de f)

fh1 = 261.63;fh2 =293.66;fh3 =329.63;fh4=1e3;fh5=1.5e3; u1max=1;u2max=1;u3max=1;u4max=1;u5max=1;h1=u1max*sin(2*%pi*fh1*t); h2=u2max*sin(2*%pi*fh2*t); h3=u3max*sin(2*%pi*fh3*t);h4=u4max*sin(2*%pi*fh4*t); h5=u5max*sin(2*%pi*fh5*t);som=h1+h2+h3;

//Définition de la fenêtre de tracé grahique plot2d:xmin=0;yminsom=-5;xmax=5e-3;ymaxsom=5 ; ymin1=-2.1 ; ymax1=2.1 ; xminFFT= 0.9*fh1;yminsomFFT=0;xmaxFFT=1.1*fh3;ymaxsomFFT=1 ;

subplot (2,2,3);//Affichage du module abs(spectr_h1) , soit le spectre d'amplitudeplot2d(f,abs(spectr_h1),rect=[xminFFT,yminsomFFT,xmaxFFT,ymaxsomFFT]);plot2d(f,abs(spectr_som),rect=[xminFFT,yminsomFFT,xmaxFFT,ymaxsomFFT]);plot2d(f,abs(spectr_h2),rect=[xminFFT,yminsomFFT,xmaxFFT,ymaxsomFFT]);plot2d(f,abs(spectr_h3),rect=[xminFFT,yminsomFFT,xmaxFFT,ymaxsomFFT]);

//analyze(h1);//L'instruction analyze détermine le spectre d'amplitude du son et trace le graphique.;//Exemple analyze(s,200,600,22050);default values fmin=100,fmax=1500,rate=22050,points=8192;//ATTENTION, ANALYZE NE TRAVAILLE QUE POUR 100<F<1500, MÊME SI ON MET FMIN ET FMAX EN DEHORS !!!subplot (2,2,4);analyze(h1,100,1600,22050);analyze(h2,100,1600,22050);analyze(h3,100,1600,22050);analyze(h5,100,1600,22050);analyze(h5,100,1600,22050);subplot (2,2,4);//analyze(som,rect=[xminFFT,,xmaxFFT,])pour essayer d'optimiser la fen tre d' cran;� �analyze(som,100,1600,22050);

En bas à Gauche : l’abscisse représente  la fréquence f en Hz (échelle linéaire)En bas à Droite : l’abscisse représente la fréquence f en Hz (échelle linéaire).Parfois, on met w(rad/s)=2*pi*f  , comme abscisse. 

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 41 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

//spectres avec la fonction fftstacksize ('max') ;// allows the user to increase the size of this stack to the maximum(Calcul scilab en fronction de RAM et SWAP).//On refait calculer les signaux avec une meilleure résolution en fréquence,//pour la représentation correcte des spectres d'amplitude FFT.//La résolution en fréquence est R(Hz)=Fech(fmax représentée)/N(points_calculés).//Soit R(Hz)=fech/(duree*fech)=1/duree.//La plus mauvaise résolution relative est R%=R(Hz)/fmin(spectre)//------------calculs des coordonnées de points des signaux _______

fech=22e3;duree=100; t=soundsec(duree,fech);N=duree*fech; //nb de points de calcul pour le tracé des spectres (permet le calcul du pas de f)

fh1 = 261.63;fh2 =293.66;fh3 =329.63;fh4=1e3;fh5=1.5e3; u1max=1;u2max=1;u3max=1;u4max=1;u5max=1;h1=u1max*sin(2*%pi*fh1*t); h2=u2max*sin(2*%pi*fh2*t); h3=u3max*sin(2*%pi*fh3*t);h4=u4max*sin(2*%pi*fh4*t); h5=u5max*sin(2*%pi*fh5*t);som=h1+h2+h3;produi=h1 .*h3 ;

//Calcul des spectres d'amplitude avec la fonction fftf=fech/N*(0:(N-1)) ;//Calcul du vecteur f de 0 à fechspectr_h1=2/N*fft(h1,-1);spectr_h2=2/N*fft(h2,-1);spectr_h3=2/N*fft(h3,-1);spectr_som=2/N*fft(som,-1);spectr_produi=2/N*fft(produi,-1);

subplot (2,2,3);//Affichage des modules abs(spectr_h1)... , soit les spectres d'amplitude.plot2d(f,abs(spectr_h1),rect=[xminFFT,yminsomFFT,xmaxFFT,ymaxsomFFT]);plot2d(f,abs(spectr_h2),rect=[xminFFT,yminsomFFT,xmaxFFT,ymaxsomFFT]);plot2d(f,abs(spectr_h3),rect=[xminFFT,yminsomFFT,xmaxFFT,ymaxsomFFT]);//som=h1+h2+h3plot2d(f,abs(spectr_som),rect= [xminFFT,yminsomFFT,xmaxFFT,ymaxsomFFT]);xtitle('spectres des Notes Do, Ré, Mi octave 3 et somme','f(Hz)','h1(t),h2(t),h3(t) et somme' );

subplot (2,2,4);//Tracé du spectre du produit des harmoniques h1*h3//produi=h1 .*h3 plot2d(f,abs(spectr_produi),rect=[xminFFT_produi,yminFFT_produi,xmaxFFT_produi,ymaxFFT_produi]);xtitle('spectres du produit des Notes Do et Mi octave 3 ','f(Hz)','produi=h1(t)*h3(t)' );

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 42 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

//~~~~~COMPARAISON DES FONCTIONS ANALYZE ET FFT~~~~~~~~~~~~~~~~~~~fech=22e3;duree=100; t=soundsec(duree,fech);N=duree*fech; //nb de points de calcul pour le tracé des spectres (permet le calcul du pas de f)

fh1 = 261.63;fh2 =293.66;fh3 =329.63;fh4=1e3;fh5=1.5e3; u1max=1;u2max=1;u3max=1;u4max=1;u5max=1;h1=u1max*sin(2*%pi*fh1*t); h2=u2max*sin(2*%pi*fh2*t); h3=u3max*sin(2*%pi*fh3*t);h4=u4max*sin(2*%pi*fh4*t); h5=u5max*sin(2*%pi*fh5*t);som=h1+h2+h3;produi=h1 .*h3 ;

//Calcul des spectres d'amplitude avec la fonction fftf=fech/N*(0:(N-1)) ;//Calcul du vecteur f de 0 à fechspectr_h1=2/N*fft(h1,-1);spectr_h2=2/N*fft(h2,-1);spectr_h3=2/N*fft(h3,-1);spectr_som=2/N*fft(som,-1);

//~~~~~COMPARAISON DES FONCTIONS ANALYZE ET FFT~~~~~~~~~~~~~~~~~~~//analyze(h1);//L'instruction analyze détermine le spectre d'amplitude du son et trace le graphique.;//Exemple analyze(s,200,600,22050);default values fmin=100,fmax=1500,rate=22050,points=8192;//ATTENTION, ANALYZE NE TRAVAILLE QUE POUR 100<F<1500, MÊME SI ON MET FMIN ET FMAX EN DEHORS !!!//La fonction analyse ne donne pas toujours l'amplitude attendue,//Celà dépend de la résolutionadoptée par la fonction . //Avec une résolution correcte, l'amplitude donnée est la moitié de l'amplitude de l'harmonique car le spectre est symétrique/ 0->y//Analyse adapte l'échelle et le pas de f pour la meilleure résolution en fréquence,A CONDITION QUE duree soit assez grande //pour une bonne résolution relative (Df/f~ 0,01 % ) pour les raies uniques (Un harmonique).

subplot (1,2,2);xtitle('spectre *analyse* de la somme des Notes Do, Ré, Mi octave 3 ','f(Hz)','h1(t)+h2(t)+h3(t)' );analyze(som,100,400); //adapte l'échelle pour les 3 harmoniques sommés

subplot (1,2,1);

xtitle('spectre *FFT* de la somme des Notes Do, Ré, Mi octave 3 ','f(Hz)','h1(t)+h2(t)+h3(t)' );plot2d(f,abs(spectr_som),rect=[xminFFT,yminsomFFT,xmaxFFT,ymaxsomFFT]);

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 43 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Scilab images et sons:Script Scilab pour Synthèse et décomposition d'un signal triangle . 

t=soundsec(0.5,fs);//0.5s echant à fechu1= 1+2*sin(1e2*t+%pi/2);­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­u2 =u1+2/3^2*sin(3e2*t+%pi/2);u3 =u2+2/5^2*sin(5e2*t+%pi/2);­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­sound(u3, fs);//génère un son pur à w=1e2 rad/s,// additionné à des harmoniques à n.100 rad/s audible au Hparleur de l'ordinateur . xbasc();//efface diagramme précédent.//xtitle("spectre d'amplitude de u(t)","w(rad/s)","u(t)");subplot(3,2,1);­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­//plot2d([t]',u1,rect=[xmin,ymin,xmax,ymax]);plot2d([t]',u1,rect=[0,­1,120e­3,3]);subplot(3,2,2);­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­//analyze(u1,fmin,fmax,fech(rate),nbpoints);analyze(u1,10,600,22050,7e3);subplot(3,2,3);­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­//plot2d([t]',u,rect=[xmin,ymin,xmax,ymax]);plot2d([t]',u2,rect=[0,­2,120e­3,4]);subplot(3,2,4);­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­//analyze(u,fmin,fmax,fech(rate),nbpoints);analyze(u2,10,600,22050,7e3);subplot(3,2,5);­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­//plot2d([t]',u,rect=[xmin,ymin,xmax,ymax]);plot2d([t]',u3,rect=[0,­2,120e­3,4]);subplot(3,2,6);­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­//analyze(u,fmin,fmax,fech(rate),nbpoints);analyze(u3,10,600,22050,7e3);

On remarque que le spectre d'amplitude donné, ci dessous, donne des amplitudes normées à 1 . La composante continue ou valeur moyenne(f=0Hz), n'est pas affichée . Il s'agit donc de valeur d'amplitude  relative à l'amplitude du fondamental : ici 2V .

Le signal triangle est pair. On aurait pu l'écrire comme somme de cosinus, mais on préfère garder l'écriture générale comme somme de sinus et ajouter la phase (/2),

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 44 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

SIMULATION AVEC LE MODULE SCICOS DE SCILAB1. FILTRE PASSE BAS DU 1ER ORDRE (RC ...):

Le module « Write AU... » écrit un fichier au format audio: nomdufichier.auOn peut cliquer Bouton Droit (BD) après sélection du bloc (BG)ou directement (BD), puis Help, pour avoir une aide sur le bloc . En double cliquant BG sur le bloc, on peut régler les paramètres, période, amplitude ....

On fera attention a bien ajuster « init time », inférieur à la durée de simulation, sans quoi , rien ne sera affiché.

Paramètre pour l'oscilloscope(Mscope) Horloge de période d'échantillonnage de l'oscilloscope

Horloge de ½ période du signal carré.

Durée de simulation (simulate->setup)

On voit que le filtre passe bas du 1er Ordre, avec = 10-3 a conservé uniquement les 2

harmoniques de fréquences les plus basses, dont le fondamental à la fréquence du signal carré. Voir le module FFT: PSPECSCOPE_c.sci

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 45 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

1.1.Filtre passe bas du 1er Ordre ,sans sortie sur fichier audio.

Horloge qui règle la ½ période du signal carré

Période d'échantillonage de l'oscilloscope donné par son « Horloge »

Réglage de l'oscilloscope « Mscope »

Réglage des paramètre de la fonction de tranfert.

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 46 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Exemple d’écrans, scilab lancé en console sur PC(1,2GHz;1,5Go RAM) GNU/LINUX debian6Squeeze , Bureau léger LXDE

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 47 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Gestion de fichiers, Import/Export d'images et sons:http://fr.wikibooks.org/wiki/D%C3%A9couvrir_Scilab_Gestion_des_fichiers#Images

Liens: scilab par la pratique :http://www.scilab.org/doc/Scilabpratique/node1.html

Scilab en lycée pour la méthode d'euler et le traitement des nuages de points:http://www.scilab.org/lycee/Secondaire.pdfÉchantillonnage ET SONS AVEC SCILAB:http://www.inln.cnrs.fr/IMG/pdf/Echant.pdf

Logiciel de modélisation et de simulation Scilab/Scicoshttp://quentin.quadrat.free.fr/tuto_scicos­fr.html

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 48 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

Fonctions, librairie de subroutine scilab . 

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 49 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

D'après : Une introduction à Scilabhttp://cermics.enpc.fr/~jpc/mopsi/scilab.pdf

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 50 / 51

INITIATION À SCILAB  Eclipse à Chéraute 

   Physique Appliquée­Lycée du Pays de soule        19/08/12­initScilab.odt­Djl­Page: 51 / 51