Séance 0 : Linux + Octave : le compromis idéal Introduction Linux est un système d'exploitation multi-tâches et multi-utilisateurs, basé sur la gratuité et développé par une communauté de passionnés. C'est actuellement une alternative, voire une meilleure solution, au monde payant Windows sauf pour les jeux sophistiqués. Les dernières distributions (Suse, Redhat, Mandrake) intègrent la gestion des webcams, graveurs, et ont un ensemble de logiciels (Staroffice5.2, Gnumeric, Gimp, Koncd, Octave ) équivalents à ce qui existe sous Windows (Word, Excel, traitement d'image, logiciel de gravure, Matlab). En cherchant un peu, il est même possible de trouver sur Internet des logiciels de lecture DVD. Il faut toutefois garder à l'esprit que comme sous Windows, il faut installer les logiciels avant de les utiliser. Dans la suite de ce document, nous allons présenter quelques commandes pour Linux et Octave qui nous serviront soit au cours des séances de cours, soit au cours des projets. 1 Linux 1.1 Se connecter Lors du démarrage de l'ordinateur, il est souvent installé un dualboot, ce qui signifie que vous avez le choix entre Windows et Linux. Sur les anciennes versions, l'aperçu des possibilités s'obtient en appuyant sur la touche tab. Il suffit de sélectionner Linux ou de l'écrire. 1.2 Ouvrir une console La console est une fenêtre dans laquelle des commandes Unix (ou Linux) vont entre exécutées. Pour en ouvrir une, il faut soit se servir du menu déroulant et trouver le dessin de la fenêtre (fonction des interfaces graphiques), soit regarder dans la barre des taches où se trouve une fenêtre avec une coquille (shell) ou encore une fenêtre avec une empreinte de gnome.
1.3 Exécuter des commandes simples ls : Permet de lister le contenu d'un répertoire, l'option -l (ls -l) donne plus de renseignements, dont les droits d'utilisateurs. pwd : Chemin du répertoire où l'on se trouve. Il faut noter ici le sens inversé par rapport à Windows de la barre de séparation entre répertoires. cd : Change de répertoire. Il faut spécifier le nom du nouveau répertoire. Le point représente le lieu où l'on est, le double point le répertoire ascendant. mv : Permet de renommer un fichier. Par exemple, mv Fichier1 Fichier2, change le nom de Fichier1 en Fichier2. rm : Permet d'effacer un fichier, commande d'une efficacité parfaite, les fichiers effacés ne peuvent pas entre récupérés. rm titi efface titi. Attention à l utilisation du caractère (*) qui peut entrainer des effacements non souhaités de ses propres fichiers mais aussi d autres fichiers et répertoires présents sur l ordinateur. mkdir : Permet de créer un répertoire. mkdir groupa2 crée un répertoire (ou dossier) appelé groupa2. mdir + mcopy : Permet d'accéder au lecteur de disquette pour lire et pour écrire sans le «monter». mdir a: permet de lire le contenu de la disquette. mcopy im.gif a: permet de copier le fichier im.gif sur la disquette. mcopy a:im.gif permet de copier le fichier im.gif présent sur la disquette là où l'on est. Il est possible de passer par l'icône de la disquette en prenant soin de «démonter» le périphérique après usage à l'aide du bouton droit de la souris. man: C'est l'aide sur les commandes, pour l'utiliser, essayer man ls. Pour quitter une aide, appuyer sur q. 1.4 Aller récupérer des fichiers sur le serveur Il vous sera probablement nécessaire d aller récupérer des fichiers de données sur un serveur. Le plus simple sera alors d utiliser le browser installé sur la machine
(Netscape généralement) pour vous connecter au site souhaité et charger le fichier dans le répertoire souhaité. 1.5 Editeur de texte Il sera aussi nécessaire de créer des fichiers «texte» qui vous serviront de fichiers exécutables pour Octave. Pour cela vous utiliserez l éditeur de texte Linux qui dépend de la version installée sur votre machine. Généralement cet éditeur sera k- edit ou x-edit. En tapant kedit ou xedit dans la console Linux, vous ouvrirez une fenêtre «texte» où vous pourrez taper votre fichier et le sauvegarder dans le répertoire et avec l extension souhaités. Remarque : Lancer dans la console une application suivie de "&" permet de garder la console active pour taper d autres commandes sans avoir à fermer l application. Exemple : taper kedit& va ouvrir une fenêtre pour créer un fichier texte tout en gardant active la console Linux. 2 Octave 2.1 Qu'est-ce? Octave est un interpréteur de commandes qui transforme votre ordinateur en supercalculatrice. Un langage interprété est moins rapide qu'un langage compilé comme C, mais beaucoup plus simple d'utilisation. Il utilise les mêmes syntaxes que celles de Matlab sauf pour certaines fonctions spécifiques et pour les graphiques. En effet, la partie graphique est gérée par Gnuplot, logiciel de tracé. Les commandes sont donc un peu plus complexes lors de la sauvegarde de graphe au format gif par exemple. Il faut prendre soin d'utiliser des noms de variable ne commençant pas par des chiffres. La variable 123 est inutilisable, a23 est possible, mais pas 12a. 2.2 Les premiers pas Après être allé dans le répertoire de travail, il convient de «lancer» Octave. Ce logiciel travaille sans qu'il soit nécessaire de déclarer le type des variables à l'avance. Par exemple : >x=4 affecte la valeur 4 à la variable x. Pour créer un vecteur ligne, essayons : >x=1:2:11 Le vecteur x contient alors des valeurs qui vont de 1 à 11 par pas de 2. Pour éviter l affichage intempestif des valeurs, il est possible de faire suivre les instructions d'un point-virgule. Par exemple : >x=1:2:11;
En cas d'oubli, on peut sortir de l'affichage avec la touche q. Deux autres commandes méritent d'être connues : la transposition (') et les opérations terme à terme : >x' On peut ainsi transformer un vecteur ligne en un vecteur colonne et vice-versa. Le point (.) permet de multiplier terme à terme : >x.*x permet d'élever au carré et pourra servir dans la génération d'un nouveau vecteur dans le cas du calcul d'une puissance par exemple. (P=u.*i). 2.3 Un peu plus loin whos : Commande sans argument donnant le nom des variables. >whos rand : Génération de nombres aléatoires. Un argument conduit à la création d'une matrice carrée. Il faut fournir 2 arguments pour avoir un vecteur. >y=rand(1000,1); help : Commande d'aide en ligne pour les syntaxes et fonctions d'octave >help rand hist : Permet d'obtenir un histogramme. > [nn;xx]=hist(y,x) Ici x est soit le nombre de classes, soit un vecteur contenant le centre des classes. Les valeurs de y sont comprises dans l intervalle [0; 1]. Il est alors équivalent d'écrire hist(y,5) ou hist(y,0.1:0.2:0.9). bar : Fonction associée à hist pour tracer les histogrammes. >bar(xx,nn) Octave utilise Gnuplot pour visualiser le graphique. plot / hold on : plot permet de tracer un graphe à 2D. La fonction hold on doit être utilisée pour tracer plusieurs courbes sur un même graphe. >x=rand(100,1); >plot(x,sin(x),'o',x,x) est équivalent à >plot(x,sin(x),'o') >hold on >plot(x,x)
mesh : Pour les graphiques 3D. Utile dans certains projets. >x=rand(100); >mesh(x) cumsum: Réalise la somme cumulée des classes. >nnc=cumsum(nn); Pour la représentation de la fonction de répartition, on pourra utiliser : >bar(xx,nnc/max(nnc)) pour tracer sous forme de «bâtons» ou >stairs(xx,nnc/max(nnc)) pour tracer «en escalier». min / max: Fonction trouvant la valeur minimale et maximale d'un vecteur. >minimum=min(nnc) mean: Valeur moyenne d'une grandeur contenue dans un vecteur. std: Ecart-type d'une grandeur contenue dans un vecteur. corrcoef : Coefficient de corrélation entre deux grandeurs. var : Variance d'une grandeur contenue dans un vecteur. cov : Covariance entre deux grandeurs. polyfit : Permet de réaliser un ajustement polynomial dans le sens des moindres carrés : >[coef,yfit]=polyfit(x,y,1); retourne deux arguments, coef et yfit. Les valeurs de yfit sont obtenues à partir de yfit=coef(2)*x+coef(1). 2.4 Garder son environnement pour la prochaine fois 2.4.1 A la fin de la séance Dans Octave et dans le bon répertoire : > save gra2 20fev > history -w hist gra2
permet de sauver aussi bien toutes les variables (save) que toutes les commandes exécutées (history -w). 2.4.2 Au début de la séance suivante > load gra2 20fev Si ce fichier est déjà chargé, il faut utiliser l'option -force : > load -force gra2 20fev > history -r hist gra2 permet de recharger toutes les variables (load) ainsi que toutes les commandes exécutées (history -r). Il est possible de vérifier le nom des variables avec la commande whos, et de récupérer les commandes utilisées précédemment en utilisant les 4 flèches de déplacement. Note : le commande load sera aussi utilisée pour charger les données numériques qui seront utilisées lors des TP et des projets. 2.5 Sauver un graphe Commencer par la commande : > gset term pour connaître les types de format de sortie disponible sur la machine sur laquelle vous travaillez. Si gif est possible, écrire : > gset term gif > gset output "im1.gif" Si bmp (ici pbm) est possible, écrire: > gset term pbm color > gset output "im1.bmp" Il est toujours possible d'exporter les graphes en postscript puis de les convertir (commande convert dans la console, c'est à dire hors d'octave). Pour cela : > gset term postscript > gset output "im1.ps" Ces commandes définissent le format et le nom du fichier de sortie. Il est nécessaire d'enregistrer le contenu soit en retraçant le graphe à l'aide de la commande replot, soit en traçant directement ce qui nous intéresse. Pour revenir au mode graphique d'origine, il faut réinitialiser la sortie et le format: > gset term x11 > gset output "im1.ps"
2.6 Fichier script On appelle un fichier script un fichier texte avec un extension.m qui joue le rôle de fichier exécutable pour Octave. On le crée en ouvrant un fichier texte avec l éditeur de texte Linux et en y tapant la liste d instructions que l on veut voir exécutées lorsqu on lance le script. Ce fichier sera ensuite sauvé avec une extension.m. Remarque : Le script et les fichiers de données numériques utilisés lors de l'exécution de celui-ci doivent être placés dans le même répertoire. Exemple : le fichier essai.m qui crée un histogramme et le sauve dans un fichier image : x=rand(100,1); [nn;xx]=hist(x,10); gset term postscript color gset term "im.ps" bar(xx,nn) quit L'exécution est obtenue dans Octave en écrivant simplement essai sans le.m puis retour.