Vous êtes sur la page 1sur 5

Université de Bordj Bou Arréridj

Faculté des Sciences et de la Technologie


Département d'électronique
MCIL2 : Méthodes numériques
Travaux Pratiques
Introduction à Octave/Matlab

Cette partie traite du logiciel Gnu Octave. Ce logiciel est un clone libre du logiciel Matlab très répandu dans
l’industrie. GNU Octave permet d’effectuer des calculs (matriciels, statistiques, analytiques, etc), de la
visualisation avec Gnuplot et du traitement d’images.
Octave/Matlab est un langage interprété de haut niveau pour le calcul numérique. Il permet de résoudre
numériquement des problèmes linéaires ou non linéaires et de réaliser toutes sortes d’expérimentation
numériques, ou des analyses statistiques. Il offre aussi des fonctionnalités graphiques avancées pour la
visualisation et le traitement d’images. Octave est utilisé soit en ligne de commande de manière interactive ou
pas. Les langages Octave et Matlab sont très similaires et il est possible d’écrire des programmes portables.

Avantages (Octave)
— compatibilité avec Matlab ;
— diversité des librairies ;
— communauté open source nombreuse et active ;
— logiciel gratuit ;

Inconvénients (Octave)
— pas de programmation orientée objet ;
— développement de GUI difficile ;
— lenteur relative d’exécution ;
— peu répandu dans le monde industriel.

Convention de nommage
Variables mélange de lettres majuscules et minuscules débutant par une lettre minuscule.
— linearity, credibleThreat, qualityOfLife
Constantes lettres majuscules et séparation des mots par des tirets bas _ (underscore).
— MAX_ITERATIONS, COLOR_RED
Fonctions uniquement des lettres minuscules ;
— getname(.), computetotalwidth(.)
avec séparation des mots par des tirets bas _ (underscore) ;
— get_name(.), compute_total_width(.)
— Les noms doivent indiquer la signification ou l’utilisation.
— On peut utiliser le français, mais l’anglais est plus répandu.
LES MATRICES
Création d’une matrice
Syntaxe
— Utiliser une virgule ou un espace pour délimiter les colonnes
— Utiliser un point virgule pour délimiter les lignes
Les expressions suivantes sont équivalentes :
A = [8 2 3;3 -1 7;1 5 3]
A = [8,2,3;3,-1,7;1,5,3]
Octave répondra par l’affichage de la matrice : :
>>A =
8 2 3

Page 1/5
3 -1 7
1 5 3

Chaînes de caractères
Syntaxe
str=’coucou’
— Octave supporte les guillemets simples et doubles.
— Matlab ne supporte que les guillemets simples.
— Pour des raisons de compatibilité, utilisez des guillemets simples.

Octave/Matlab possède virtuellement toutes les fonctions communes pour la manipulation des chaînes de
caractères.
— strcmp, strncmp, strmatch, char, ischar, findstr, strfind,
— str2double, str2num, num2str, strtrim, upper, lower,
— et plus encore . . .

Afficher une variable


Tapez simplement son nom :
>>a
a = 1
Ajoutez un point-virgule pour supprimer l’affichage :
>>a;

Remarques
— Les variables ont un typage dynamique. s=3 suivi de s=’octave’ est accepté.
— Utiliser la commande who (ou whos pour plus de détail) pour connaître les variables actuellement définies.
>>whos
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
a 1x1 8 double
m 3x3 72 double
v 1x10 24 double
Total is 20 elements using 104 bytes

Dimensions d’une matrice


size(A,1) renvoie le nombre de lignes de A
size(A,2) renvoie le nombre de colonnes
size(A) renvoie toutes les dimensions
length(A) renvoie la plus grande dimension
numel(A) renvoie le nombre d’éléments dans A
isempty(A) vérifie si A est la matrice vide []
Pour Octave seulement
rows(A) renvoie le nombre de lignes
columns(A) renvoie le nombre de colonnes

Indexation
Par convention, on référence les lignes avant les colonnes.
— A(i,j) renvoie un élément
— A(i,:) renvoie une ligne
— A(:,j) renvoie une colonne

Page 2/5
— A(i:k,j:l) renvoie une sous-matrice
Une commande utile :end
>> A=[1 3 5 7 11 13 17];
>> A(3:end)
ans =
5 7 11 13 17

Matrices spéciales
zeros(n,m) matrice n × m ne contenant que 0
ones(n,m) matrice n × m ne contenant que 1
eye(n) matrice identité n × n
rand(m,n) matrice m × n de nombres aléatoires suivant une distribution uniforme sur l’intervalle [0, 1].
randn(m,n) matrice de nombres aléatoires suivant une distribution normale de moyenne 0 et variance 1.
randperm(n) un vecteur ligne contenant une permutation aléatoire des nombres 1 à n.
randi(imax,m,n) matrice de nombres entiers aléatoires suivant une distribution uniforme sur l’intervalle
[1,imax].

Opérations sur les matrices


— 3*A : multiplication par un scalaire
— A*B + X - D : multiplication, addition, soustraction
— A’ : transposition
— inv(A) : inversion d’une matrice carré
— v’*M*v : mélange vecteurs et matrices
— det(M) : déterminant
— ...
Autres opérations
Opérations sur les vecteurs (colonnes)
— v*v’ : produit scalaire
— v’*v : produit matriciel
— v*v : erreur.
Opérations membre à membre (vecteurs et matrices)
— x.+x : addition
— x.-x : soustraction
— x.*x : multiplication
— x./x : division
— x.ˆ3 : puissance

Graphiques

Graphiques en 2D
— plot(x,cos(x)) affiche un graphique en deux dimensions. Création automatique d’une fenêtre contenant
la figure.
— figure(n) crée une fenêtre n. Si la fenêtre existe déjà, elle revient au premier plan.
— figure crée une nouvelle fenêtre et incrémente son identifiant.
Afficher plusieurs tracés
— Une série de tracés en deux dimensions : plot(x1,y1,x2,y2,...) e.g.
plot(x,cos(x),x,sin(x),x,x.ˆ2)
— Ajouter une légende au graphique : legend(’cos(x)’,’sin(x)’,’xˆ2’)
— hold on offre une solution alternative :
x=0:0.05:pi;

Page 3/5
hold on
plot(x,cos(x))
plot(x,sin(x))
plot(x,x.^2)
legend(’cos(x)’,’sin(x)’,’x^2’,’location’,’northwest’)

Commandes utiles
clf ré-initialise la figure
hold on conserve les tracés (ne remplace pas les anciens tracés par les nouveaux)
grid on affiche un quadrillage
grid off enlève le quadrillage
title(‘Titre’) affiche un titre pour le tracé
xlabel(’x’) affiche une étiquette pour l’axe des abscisses
ylabel(’f(x)’) affiche une étiquette pour l’axe des ordonnées
subplot trace une grille contenant plusieurs sous-figures
Exporter les figures
— print -deps myPic-BW.eps : fichier .eps en noir et blanc.
— print -depsc myPic.eps : fichier .eps en couleurs.
— print -djpeg -r80 myPic.jpeg : fichier .jpeg en 80 ppi.
— print -dpng -r100 myPic.png : fichier .png en 100 ppi.
— print peut aussi être appelée comme une fonction. Dans ce cas, les arguments et options sont lus comme
une liste séparée par des virugles. E.g.
print(’-dpng’,’-r100’,’myPic.png’);

Travail demandé
1. créer un vecteur t de 200 valeurs de -5 à 5
2. créer un vecteur y des valeurs de la fonction sin(t).
3. créer un graphique de la fonction y=sin(t)
4. ajouter un titre ‘y=sin(x)’
5. ajouter un label sur l’axe x ‘x’
6. ajouter un label sur l’axe y ‘y’

Page 4/5
7. retracer les axes x [-6,6] et y [1,2 1,2]
8. ajouter la courbe de la droite y=0 (utiliser hold on et une couleur de la ligne rouge et
une largeur de ligne 2).
9. Ajouter sur le même graphique la courbe de la fonction cos(x) dans le même intervalle.
Utiliser une couleur verte et une largeur de ligne 3.

Page 5/5

Vous aimerez peut-être aussi