Formation au logiciel SCILAB 23 mars 2006 Programme
Formation au logiciel SCILAB 23 mars 2006
Programme l Notions de base § § l Fonctionnement de SCILAB Entrer une commande QQ points importants Installer HYDROGR Importer / Exporter des données § Lire / Ecrire dans des fichiers textes § Lire dans des fichiers Excel l Traiter des données § Fonctions utiles dans SCILAB § qq fonction de la boîte à outil HYDROGR >> Mise en pratique
Programme l Faire des graphiques 2 d § § § Graphiques simple 2 d Titres, légendes et style des courbes Dates en abscisses Graphiques « carrés » Exporter au format GIF >> Mise en pratique l HYDROGR § GR 4 J § Réseaux de neurones
Exemples
Notions de base Nom de l’événement + date
Fonctionnement de SCILAB l SCILAB = § § l Prompteur en ligne de commande Editeur de Script Des fonctions Une aide pour chq fonctions SCILAB est § § Gratuit Développé par l’INRIA Comparable à MATLAB Basé sur un langage interprété (proche du C en bcp plus simple) § CASE SENSITIVE !
Entrer une commande l Utiliser le prompteur § Taper la commande § Valider par entrée --> a = ones(10, 5) --> b = 10 * a’ --> scipad( ) l Ecrire un script § Taper scipad() dans le prompteur >> éditeur de script l L’exécuter. . pour cela on peut § Soit taper [Ctrl] + l dans l’éditeur de script § Soit taper exec( [ Nom du fichier contenant le script ] ) dans le prompteur
Quelques points importants l l l l Ajouter des commentaires // Lancer l’aide help Eviter un affichage sur le prompteur ; Transposée d’une matrice ‘ Génération de vecteurs : Fin de vecteur $ Matrice [ ] --> // Commentaire --> Pas. Commentaire = 1; --> help plot 2 d --> a = 1: 100 --> b = 1: 0. 01: 100 --> c = 100: -1: 1 --> a 2= a’ --> u = a($-10) --> A = [[1 2]; [3 4]]
Installer HYDROGR 1. Télécharger le fichier HYDROGRv 00. zip (http: //lerat. julien. free. fr log=test pwd=essai) 2. Dezipper dans le répertoire C: Program FilesScilab 3. 1. 1contrib 3. Supprimer le fichier loader. sce qui se trouve dans C: Program FilesScilab 3. 1. 1contrib 4. Remplacer par le fichier loader. sce qui se trouve dans le répertoire HYDROGRv 00 5. Lancer SCILAB
Installer HYDROGR Dans SCILAB, l’écran doit être le suivant
Importer / Exporter des données Nom de l’événement + date
Cas simple >> données numériques l l Ouvrir un fichier texte et récupérer une matrice SCILAB = fscanf. Mat Imprimer une matrice SCILAB dans un fichier texte = fprintf. Mat --> // Lire des donnees numeriques --> Chem = ‘C: essai’; --> D 1 = fscanf. Mat(Chem + ‘DATA 1. DAT’); --> D 1 --> plot 2 d(D 1(: , 2), D 1(: , 3)) --> // Ecrire dans un fichier texte àT = rand(200, 5); --> fprintf. Mat(Chem + ‘T. txt’, T);
Cas + complexe >> texte + numérique l l l Ouvrir le fichier avec mopen Imprimer ou lire dans le fichier avec mfprintf et mfscanf et mgetl Fermer le fichier avec mclose --> // Récupère les lignes --> fdat = mopen(Chem + 'DATA 2. DAT', 'r'); --> Txt = mgetl(fdat); --> mclose(fdat); --> Txt=Txt(4: $); --> // Analyse des lignes --> [n, Code 1, Sta, Jour, Q, Code 2, Code 3] = msscanf(-1, Txt, '%3 s; %8 s; %d; %f; %c; %dn');
Lire des données dans Excel l Instruction readxls --> Feuille = readxls(Chem + 'DATA 1. xls'); --> Dxls = Feuille(1). value; --> Dxls = Dxls(2: $, : );
Traiter des données Nom de l’événement + date
Quelques instructions utiles l l l l size : taille d’une matrice for … end : boucle for if. . then … else : condition find : identifier des éléments dans une matrice mean : moyenne par colonne ou par ligne st_deviation : Ec. type par colonne ou par ligne zeros : générer une matrice de zeros ones : générer une matrice de 1 diag : matrice carrée à partir d’une diagonale rand : générer une matrice de nb aléatoires execstr : évaluer une expression SCILAB convol : convolution discrète (>> HU) corr : auto-corrélation, corrélation croisée gsort : trier les éléments d’une matrice linear_interpn : Interpolation linéaire
Exemples --> D 1 = fscanf. Mat(Chem + ‘DATA 1. DAT’); --> Nligne = size(D 1, 1); // Nb de lignes dans D 1 --> // Trouver les forts débits --> Icrue = find(D 1(: , 3)>20); // Q > 20 mm --> // Moyenne et écart type des forts débits et ETP --> Stat = [mean(D 1(Icrue, [3, 4]), ’r’) ; . . . st_deviation(D 1(Icrue, [3, 4]), ’r’) ] --> // Normer les forts débits et les pluies --> NORM = D 1(: , [3, 4]) - ones(Nligne, 1)*Stat(1, : ) --> NORM = NORM * diag(Stat(2, : ). ^(-1))
A vous de jouer …. Nom de l’événement + date
Faire des graphiques Nom de l’événement + date
Qq notions sur les graphiques SCILAB Fenêtre graphique (figure) Légende (legend) Graphique (axes) Courbe (polyline) Titres
Les fonctions clefs l l l plot 2 d : Génération d’un graphique plot 2 d 2 : Génération d’un graphique « palier » clf() : « Nettoyage » de la fenêtre active xset(‘window’, N) : Ouvre une figure (n°=N) get(‘current_figure’) : récupère les propriétés de la fenêtre active gca() : récupère les propriétés du graphique actif get(‘hdl’): récupère les prop. de la courbe active xtitle : ajoute un titre général et sur chaque axe legends : ajoute une légende xs 2 gif : exporte une figure au format GIF axes_properties : liste des propriétés des graphiques (dans l’aide) polyline_properties : liste des propriétés des courbes (dans l’aide)
Les options utiles de la fonction plot 2 d l rect : Définition de la fenêtre d’affichage § [min. X, min. Y, max. X, max. Y] l style : définition de l’allure des courbe § 1, 2, … Courbe en trait plein avec diff couleurs § -1, -2, … Représentation par point (diff. marqueurs) l logflag : échelle log ou non § nl Graph normal X normal, Y log --> y = rand(100, 1); --> x = (1: 100)’; --> plot 2 d(x, y, rect=[30, -2, 60, 2], style=-9) --> plot 2 d(x, 100*y, logflag=‘nl’)
Graphiques simple 2 d l Faire un graphique pluie / débit avec la pluie en axe inversé --> D 1 = fscanf. Mat(Chem + ‘DATA 1. DAT’); --> Id = 1000; If = 1300; // Limitation de la plage --> Q = D 1(Id: If, 3); P = D 1(Id: If, 5); --> plot 2 d (Id: If, Q, style=1, rect=[Id, 0, If, 100]) --> plot 2 d 2(Id: If, 100 -P, style=2, rect=[Id, 0, If, 100]) Nom de l’événement + date
Titres, légendes et style des courbes --> D 1 = fscanf. Mat(Chem + ‘DATA 1. DAT’); --> Id = 1000; If = 1300; // Limitation de la plage --> Q = D 1(Id: If, 3); P = D 1(Id: If, 5); --> plot 2 d (Id: If, Q, style=1, rect=[Id, 0, If, 100]) --> plot 2 d 2(Id: If, 100 -P, style=2, rect=[Id, 0, If, 100]) --> xtitle (‘Hydrogramme’, ’Q (mm)’) --> legends([‘Q’; ’P’], 1: 2, 1) --> gr = gca(); --> gr. children(2). children. line_style=2; // Pointillés --> Nom de l’événement + date
Dates en abscisses l l Besoin fréquent = Ajouter une date en abscisse >>>> Fonction de la boîte à outil HYDROGR § c_CONVDATE : Conversion date Excel numérique / format AAAAMMJJhhmm § SERIEDATE : Génére une série de date à pas constant --> // Conversion de 3/1/96 12: 56 en nombre --> a = c_CONVDATE(0, 199601031256); --> // Conversion de 31450. 333 en date --> b = c_CONVDATE(1, 31450. 3333) --> Annee = int(b/10^8) // récupère l’année Nom de l’événement + date
Dates en abscisses --> // Récupération des dates (Annee, Mois et Jour) --> DT = D 1(Id: If, 1); --> Jr=int(DT/10^6); Mo=int(DT/10^4)-Jr*100; --> An=DT-Mo*10^4 -Jr*10^6; --> // Conversion --> DTx = c_CONVDATE(0, An*10^8+Mo*10^6+Jr*10^4); --> //Tracé du graph et ajout des dates en abscisse --> plot 2 d (DTx, Q) --> gr = gca(); --> [eq eqx]=SERIEDATE(DTx(1), DTx($), ‘m', 2, 1); --> gr. auto_ticks=['off', 'on']; --> XTK=tlist(['ticks', 'locations', 'labels'], eqx); --> gr. x_ticks=XTK; --> xgrid(2); Nom de l’événement + date
Graphiques « carrés » + export en GIF l Propriété « isoview » du graphique --> plot 2 d (rand(100, 1), style=-9) --> plot 2 d ([0, 1], style=2); --> gr = gca(); --> gr. isoview=‘on’; --> fig = get(‘current_figure’); --> figure_size = [500, 500]; --> // Export --> xs 2 gif(0, Chem + ‘FIG_CARRE. gif’); Nom de l’événement + date
Plusieurs graphiques par fenêtres l subplot : « Quadrillage » de la figure par plusieurs graphiques Nb de Grph ds la hauteur Nb de Grph ds la largeur N° du graph dessiné --> subplot(2, 2, 1) --> plot 2 d (rand(100, 1), style=-9) --> subplot(2, 2, 2) --> plot 2 d ([0, 1], style=2); --> subplot(2, 2, 3) --> plot 2 d (sin(1: 100)); Nom de l’événement + date
A vous de jouer …. Nom de l’événement + date
La boîte à outil HYDROGR Nom de l’événement + date
Calage de GR 4 J l l De l’aide --> help HYDROGRv 00 c_GR 4 J : Simulation avec GR 4 J (codé en C) --> D 1 = fscanf. Mat(‘C: essaiDATA 1. DAT’); --> Q = D 1(: , 3); P = D 1(: , 5); E = D 1(: , 4); --> // Définition des paramètres --> X = [500; 0; 60; 1]; --> // Lancement de la simulation --> Qsim = c_GR 4 J(24, X, P, E); --> // Graph de résultat --> plot 2 d([Q Qsim]); Pas de temps Paramètres Nom de l’événement + date Pluie ETP
Calage de GR 4 J l Pasa. Pas : Méthode pas à pas § Etape 1 = Définir une fonction objectif § Etape 2 = Définir une valeur initiale des paramètres § Etape 3 = Lancer la fonction Pasa. Pas Nom de l’événement + date
Calage de GR 4 J l Fction objectif Pasa. Pas : Méthode pas à pas --> D 1 = fscanf. Mat(‘C: essaiDATA 1. DAT’); --> Q = D 1(: , 3); P = D 1(: , 5); E = D 1(: , 4); --> // Définition de la fonction objectif --> deff('C 2 M=Fct. Obj(Xt)', . . . --> ‘X(1)=exp(Xt(1)); X(2)=sinh(Xt(2)); ’ + … --> ‘X(3)=exp(Xt(3)); X(4)=exp(Xt(4)); ’ + … --> ‘Qsim = c_GR 4 J(24, X, P, E); ’ + … --> ‘t=CRIT(Q(365: $), Qsim(365: $)); C 2 M = -t(3); ’) --> // Calage --> Xtini = [log(500); 0; log(50); log(1)]; --> [Xt, RES] = Pasa. Pas(‘Fct. Obj’, X); --> X = [exp(Xt(1)); sinh(Xt(2)); exp(Xt(3)); exp(Xt(4))]; Nom de l’événement + date
Réseaux de neurones… l Un autre jour…. Nom de l’événement + date
A vous de jouer …. Nom de l’événement + date
- Slides: 35