« Découvrir Scilab/Graphiques et sons » : différence entre les versions

Contenu supprimé Contenu ajouté
m Formatage, ajout de strong
Ligne 3 :
 
<br />
<big><big><bigspan style="font-size:25px;">5. Graphiques et sons</big></big></bigspan>
----
 
Ligne 15 :
 
Le tracé d’une fonction se fait en deux étapes
# définir l’étendue de la variable abscisse et le pas, sous la forme d’un <font id="vecteur_domaine_trace_1">vecteur</fontspan> ligne ou colonne, par exemple <br /><code>x = [''début'':''pas'':''fin'']</code>, ou <br /><code>x = <font id="linspace2">linspace(''début'', ''fin'', ''nombre_de_points'')</fontspan></code> ;
# tracer la fonction avec la commande <br /><code><font id="plot2">plot(x, f(x))</fontspan></code><br />si ƒ est la fonction.
 
On note qu'en fait, ƒ(''x'') est elle-même un vecteur. On peut de manière générale définir un vecteur des valeurs de ''x'' et un vecteur des valeurs de ''y'', et la fonction <code>plot(x, y)</code> tracera le nuage de points (''x''(''i'' ),''y''(''i'' )).
 
Si ƒ est une fonction externe (par exemple définie avec <code><font id="deff3">deff</fontspan></code> ou <code><font id="function3">function</fontspan></code>, voir ''[[Découvrir Scilab Calcul numérique#deff2|Calcul numérique]]''), alors on peut tracer directement la fonction avec
: <code><font id="fplot1">fplot2d(x, f)</fontspan></code>.
On peut aussi définir le vecteur ''y'' par
: <code>y = <font id="feval3">feval(x, f)</fontspan></code>,
puis tracer avec
: <code>plot(x,y)</code>.
 
Les fonctions <code><font id="plot2di1">plot2d''i''</fontspan></code>, utilisées à la place de <code>plot</code>, permettent de faire varier l’apparence générale du tracé :
* <code>plot2d()</code> : trait « normal » ; identique à <code>plot</code>, mais l’utilisation de marqueurs et des couleurs est différente (voir ci-après) ;
* <code>plot2d2()</code> : trait en escalier ;
* <code>plot2d3()</code> : tracé en barres ;
* <code>plot2d4()</code> : tracé en « <font id="fleche1">flèches</fontspan> » : les points adjacents sont reliés par une flèche.
Ces fonctions <code>plot2d''i''</code> acceptent des arguments modifiant le tracé, sous la forme
: <code>plot2d''i''(x, y, ''arguments'')</code>.
Ligne 100 :
On peut aussi simplement utiliser <code>plot(x, [cos(x), sin(x)])</code>.
 
Dans ce cas-là, Scilab utilise une couleur différente pour chaque courbe ; on peut inscrire une <font id="legende1">légende</fontspan> sous le graphique pour chaque couleur, avec la commande <code>legend()</code> :
<source lang="scilab">
legend("cosinus", "sinus");
Ligne 132 :
Avec les commandes <code>plot2d''i''</code>, on change le type de tracé (couleur, marqueur) en utilisant l’argument <code>style = ''n''</code> ou ''n'' est un entier positif ou négatif (par exemple <code>plot2d(x, y, style = 1)</code>) :
* un nombre négatif remplace les points par des marqueurs : une étoile pour -10, des ronds pour -9, …, des petits points pour 0 ; la liste s'obtient en tapant la commande <code id="getsymbol1">getsymbol()</code> ;
* un nombre positif indique un trait plein mais de <font id="couleur_2d1">couleur</fontspan> déterminée ; on peut voir la correspondance entre le nombre et la couleur (carte des couleurs) grâce à la commande <code>getcolor()</code> (voir ci-après pour la modification de la cartes de couleur).
Avec plusieurs courbes, on place les différents styles dans un vecteur ligne, par exemple
<source lang="scilab">
Ligne 144 :
==== En coordonnées polaires ====
 
La fonction <code><font id="polarplot1">polarplot</fontspan></code> permet en tracé en coordonnées polaires. La fonction ''r''(''theta'') se trace par la commande :
<source lang="scilab">
polarplot(r, theta)
Ligne 185 :
grayplot(x, y, z)
</source>
associe une couleur à chaque valeur de ''z'' et trace une <font id="carte_couleurs1">carte de couleurs</fontspan>, chaque point (''x''(''i'' ), ''y''(''j'' )) ayant la couleur associée au coefficient ''z''(''i'', ''j'' ). Si l'on veut afficher la légende des couleurs, il faut utiliser la commande <code>colobar()</code> ''avant'' la commande <code>grayplot()</code>, en lui indiquant les valeurs extrêmes :
<source lang="scilab" id="grayplot1">
zmin = min(z); zmax = max(z);
Ligne 223 :
fait une carte couleur des valeurs de la matrice A. L'abscisse ''x'' est le numéro de colonne, l'ordonnée ''y'' est le numéro de ligne, la première ligne étant en haut, respectant en cela l'organisation du tableau. Cette fonction utilise la couleur correspondante à la partie entière de la valeur.
 
Les <font id="colormap1">niveaux de couleur</fontspan> sont indiqués par la fonction
<source lang="scilab" id="set1">
set(gcf(), "color_map", cmap)
Ligne 318 :
==== Courbes de niveau ====
 
On peut tracer des <font id="courbe_niveau1">courbes de niveau</fontspan> avec la fonction
<source lang="scilab" id="contour2d1">
contour2d(x, y, z, n)</source>
Ligne 328 :
==== Champ de vecteurs ====
 
On peut également tracer un <font id="champ_vecteurs1">champ de vecteurs</fontspan>, sous la forme de <font id="fleche2">flèches</fontspan>. Pour cela, il faut un vecteur colonne ''vx'' ayant les composante selon ''x'' du champ de vecteur, un vecteur colonne ''vy'' ayant les composantes selon ''y'' de ce champ, et utiliser la fonction
<source lang="scilab" id="champ1">
champ(x, y, vx, vy)
Ligne 334 :
le vecteur de composantes (''vx''(''i'',''j'' ),''vy''(''i'',''j'' )) étant placé en (''x''(''i'' ), ''y''(''j'' )).
 
Avec la fonction <code>champ1</code>, les vecteurs tracés ont tous la même longueur, la norme du champ est indiquée par la <font id="couleur_vecteur1">couleur du vecteur</fontspan>, suivant le principe exposé pour <code>grayplot</code>.
 
=== Tracé 3D ===
Ligne 368 :
: Ici, la matrice X est une matrice colonne pour laquelle chaque valeur de ''x'' est répétée ''n'' fois (''n'' étant la taille du vecteur ''y''), la matrice Y est une matrice colonne pour laquelle la suite des valeurs de ''y'' est répétée ''m'' fois (''m'' étant la taille du vecteur ''x''), et la matrice Z résulte donc de toutes les combinaisons possibles de couples (''x<sub>i</sub>'', ''y<sub>j&thinsp;</sub>'').
 
Si ƒ est une fonction « externe » (par exemple définie par <code><font id="deff4">deff</fontspan></code> ou <code><font id="function4">function</fontspan></code>, voir ''[[Découvrir Scilab Calcul numérique#deff2|Calcul numérique]]''), on peut définir ''z'' avec la fonction <code><font id="feval4">feval</fontspan></code> (voir plus haut), ou bien utiliser
<source lang="scilab" id="fplot3d1">fplot3d(x, y, f)
</source>
Ligne 402 :
==== Niveaux de couleur ====
 
Les fonctions <code>plot3d1</code>, <code>fplot3d1</code> et <code>param3d1</code> permettent d’utiliser des <font id="carte_couleurs2">niveaux de couleurs</fontspan> pour indiquer la valeur de ''z''. L’utilisation est identique à celle de <code>plot3d</code>, mais les <font id="niveau_3d1">niveaux de couleur</fontspan> sont indiqués par la fonction
<source lang="scilab" id="set2">
set("colormap", cmap)
Ligne 432 :
==== Angle de vue de la surface ====
 
Le <font id="angle_vue1">point de vue</fontspan> de la surface 3D est défini par deux angles en degrés, θ, rotation autour de l’axe des ''z'', et α, rotation autour de l’axe « horizontal » (une fois effectuée la rotation en ''z'') : <code>plot3d(x, y, z, ''theta'', ''alpha'')</code>, <code>param3d(x, y, z, ''theta'', ''alpha'')</code>… ;
* <code>plot3d(x, y, z, 0, 0)</code> donne une vue de dessus, semblable aux cartes 2D, projection de la surface sur le plan ''xy'' selon l’axe ''z'' ; l'axe des ''x'' est vertical, l'axe des ''y'' est horizontal ;
* <code>plot3d(x, y, z, 90, 0)</code> donne aussi une vue de dessus, mais tournée de 90°, l'axe des ''x'' est horizontal, l'axe des ''y'' est vertical ;
Ligne 440 :
Plus exactement, (θ, α) désigne la direction d'observation en coordonnées sphériques.
 
On peut également définir les <font id="axe_limite_3d1">limites des axes</fontspan> avec le mot-clef <code>ebox</code> :
* <code>plot3d(x, y, z, ebox=[xmin, xmax, ymin, ymax, zmin, zmax])</code>
* <code>plot3d(x, y, z, theta, alpha, ebox=[xmin, xmax, ymin, ymax, zmin, zmax])</code>
Ligne 536 :
 
Les références de la police sont (voir l'aide ''graphics_fonts'') :
* <code>0</code> : police à chasse fixe (type <font style="font-family: monospace;">Courier</fontspan>) ;
* <code>1</code> : police de lettres grecques (type <font style="font-family: symbol;">Symbol</fontspan>) ;
* <code>2</code> à <code>5</code> : police à empattement (type <font style="font-family: times;">Times</fontspan>),
** <code>2</code> : <font style="font-family: serif; font-style: normal; font-weight: normal;">romaine, maigre</fontspan>,
** <code>3</code> : <font style="font-family: serif; font-style: italic; font-weight: normal;">italique, maigre</fontspan>,
** <code>4</code> : <font style="font-family: serif; font-style: normal; font-weight: bold;">romaine, gras</fontspan>,
** <code>5</code> : <font style="font-family: serif; font-style: italic; font-weight: bold;">italique, gras</fontspan> ;
* <code>6</code> à <code>9</code> : police sans empatement (type <font style="font-family: arial;">Arial</fontspan>),
** <code>6</code> : <font style="font-family: sans-serif; font-style: normal; font-weight: normal;">romaine, maigre</fontspan>,
** <code>7</code> : <font style="font-family: sans-serif; font-style: italic; font-weight: normal;">italique, maigre</fontspan>,
** <code>8</code> : <font style="font-family: sans-serif; font-style: normal; font-weight: bold;">romaine, gras</fontspan>,
** <code>9</code> : <font style="font-family: sans-serif; font-style: italic; font-weight: bold;">italique, gras</fontspan>.
Les tailles de police vont de <code>0</code> à <code>10</code> ; <code>0</code> correspond à un corps de 8 points, <code>1</code> à un corps de 10 points, …, <code>10</code> à un corps de 54 points.
 
Ligne 616 :
xarrows(nx, ny)
</source>
permet de tracer des <font id="fleche3">flèches</fontspan>. Deux cas se présentent :
* <code>nx</code> et <code>ny</code> sont des vecteurs : Scilab trace un polygone de flèches reliant les points (''n<sub>x</sub>''(''i''), ''n<sub>y</sub>''(''i'')) → (''n<sub>x</sub>''(''i''+1), ''n<sub>y</sub>''(''i''+1)) ;
* <code>nx</code> et <code>ny</code> sont des matrices de deux lignes et ayant le même nombre de colonnes :
Ligne 624 :
=== Propriétés des objets ===
 
Pour changer les <font id="style_trait1">propriétés des traits</fontspan> des dessins, il faut utiliser la commande :
<source lang="scilab" id="set1">
set(gce(), "propriété", valeur);
Ligne 784 :
----
 
On peut choisir le <font id="axe1">type d’axe</fontspan> avec l’argument <code>axesflag=''n''</code> où ''n'' est un entier positif :
* 0 pour ne pas avoir d’axe,
* 1 pour des axes « classiques » se recoupant en bas à droite,
Ligne 790 :
* 5 pour des axes se coupant en (0, 0)…
 
On peut définir le <font id="axe_graduations1">nombre de graduations</fontspan> et de sous-graduations des axes avec l’argument <code>nax = [''nx'', ''Nx'', ''ny'', ''Ny'']</code> où ''Nx'' est le nombre de graduations de l’axe ''x'', ''nx'' le nombre de sous-graduations…
 
Pour une <font id="echelle_log1">échelle logarithmique</fontspan>, on utilise l’argument <code>logflag = ''type''</code> où ''type'' est une chaîne de deux caractères, « n » (pour normal) ou « l » (pour logarithmique), le premier caractère correspondant à l’axe des ''x'' et le second à l’axe des ''y''. Par exemple
* <code>plot2d(x, y, logflag = "nl")</code> pour un axe des ''x'' linéaire et un axe des ''y'' logarithmique ;
* <code>plot2d(x, y, logflag = "ll")</code> pour avoir deux échelles logarithmiques.
Ligne 815 :
=== Axes ===
 
Comme pour tous les objets graphiques, on peut changer les propriétés des axes en les affectant à une variable par la commande <code><font id="get2">''var'' = get("current_axes")</fontspan></code> ; on peut aussi utiliser l'abréviation <code><font id="gca1">''var'' = gca()</fontspan></code>. Les principales propriétés sont (voir l'aide Scilab, entrée ''axes_properties'') :
* <code>x_location</code> : prend les valeurs <code>"bottom"</code>, <code>"middle"</code>, <code>"top"</code> ou <code>"origin"</code> selon que l'on veut que l'axe soit en bas, au centre, en haut ou passe par l'origine ;
* <code>y_location</code> : prend les valeurs <code>"left"</code>, <code>"middle"</code>, <code>"right"</code> ou <code>"origin"</code> selon que l'on veut que l'axe soit à gauche, au centre, à droite bas ou passe par l'origine ;
Ligne 899 :
Le tracé peut comporter plusieurs instructions <code>plot()</code>, <code>set()</code>, <code>xtitle()</code>.
 
<font id="legende2">La fonction</fontspan>
<source lang="scilab" id="xtitle1">
xtitle("nom du graphique", "axe des x", "axe des y")
</source>
met un <font id="titre1">titre</fontspan> au graphique et aux <font id="titre_axe1">axe</fontspan>. La fonction
<source lang="scilab" id="titlepage1">
titlepage("titre")
Ligne 1 047 :
== Animations ==
 
Si vous utilisez une fonction paramétrique (en fait, une fonction de deux variables), il est alors possible de considérer la deuxième variable comme le temps et d'afficher l'évolution de la courbe en fonction du temps. Ceci se fait avec la fonction <code><font id="paramfplot2d1">paramfplot2d</fontspan></code>.
 
Pour cela, vous devez définir :
Ligne 1 076 :
== Sons ==
 
Scilab peut générer ou analyser des <font id="son1">sons</fontspan>. Il peut même lire et écrire des fichiers <code>.wav</code> (voir ''[[Découvrir Scilab Gestion des fichiers#wav1|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).