Notes introductives à Matlab

Lancement de Matlab

Lors de son lancement (via la commande Matlab par exemple) la fenêtre d’exécution s’ouvre. Il est alors possible d’exécuter différents types de commandes dans cette fenêtre, par exemple*, la commande fondamentale d’aide en ligne :
help
HELP topics:
matlab\general – General purpose commands. matlab\ops – Operators and special characters. matlab\lang – Programming language constructs. matlab\elmat – Elementary matrices and matrix manipulation. matlab\elfun – Elementary math functions. matlab\specfun – Specialized math functions. matlab\matfun – Matrix functions – numerical linear algebra. matlab\datafun – Data analysis and Fourier transforms. matlab\polyfun – Interpolation and polynomials. matlab\funfun – Function functions and ODE solvers. matlab\sparfun – Sparse matrices. matlab\graph2d – Two dimensional graphs. matlab\graph3d – Three dimensional graphs. matlab\specgraph – Specialized graphs. matlab\graphics – Handle Graphics. matlab\uitools – Graphical user interface tools. matlab\strfun – Character strings. matlab\iofun – File input/output. matlab\timefun – Time and dates.
* dans tous les exemples qui suivent, apparaît après la commande le résultat de cette commande
matlab\datatypes – Data types and structures. matlab\winfun – Windows Operating System Interface Files (DDE/ActiveX) matlab\demos – Examples and demonstrations. toolbox\tour – MATLAB Tour toolbox\local – Preferences.
For more help on directory/topic, type « help topic ».
La commande suivante permet d’affiner l’aide sur les fonctions mathématiques élémentaires :
help elfun
Elementary math functions. Trigonometric. sin – Sine. sinh – Hyperbolic sine. asin – Inverse sine. asinh – Inverse hyperbolic sine. cos – Cosine. cosh – Hyperbolic cosine. acos – Inverse cosine. acosh – Inverse hyperbolic cosine. tan – Tangent. tanh – Hyperbolic tangent. atan – Inverse tangent. atan2 – Four quadrant inverse tangent. atanh – Inverse hyperbolic tangent. sec – Secant. sech – Hyperbolic secant. asec – Inverse secant. asech – Inverse hyperbolic secant. csc – Cosecant. csch – Hyperbolic cosecant. acsc – Inverse cosecant. acsch – Inverse hyperbolic cosecant. cot – Cotangent. coth – Hyperbolic cotangent. acot – Inverse cotangent. acoth – Inverse hyperbolic cotangent. Exponential. exp – Exponential. log – Natural logarithm. log10 – Common (base 10) logarithm. log2 – Base 2 logarithm and dissect floating point number. pow2 – Base 2 power and scale floating point number. sqrt – Square root. nextpow2 – Next higher power of 2. Complex. abs – Absolute value. angle – Phase angle. conj – Complex conjugate. imag – Complex imaginary part. real – Complex real part. unwrap – Unwrap phase angle. isreal – True for real array. cplxpair – Sort numbers into complex conjugate pairs. Rounding and remainder. fix – Round towards zero. floor – Round towards minus infinity. ceil – Round towards plus infinity. round – Round towards nearest integer.
mod – Modulus (signed remainder after division). rem – Remainder after division. sign – Signum.
permettant ainsi de voir toutes les fonctions mathématiques élémentaires dont dispose Matlab. On peut maintenant préciser la recherche si l’on veut avoir une idée plus précise de la fonction log par exemple :
help log
LOG Natural logarithm. LOG(X) is the natural logarithm of the elements of X. Complex results are produced if X is not positive. See also LOG2, LOG10, EXP, LOGM.
Remarque : les commandes Matlab doivent toujours être tapées en minuscules même si dans l’aide en ligne elles apparaissent en majuscules.
♦ Quelques commandes d’environnement importantes
Pour que Matlab fonctionne correctement et en particulier retrouve vos scripts *.m, Matlab met à votre disposition plusieurs commandes d’environnement d’inspiration Unix.
path : permet de savoir quels sont les dossiers auxquels Matlab a accès et de spécifier de nouveaux dossiers Unix où se trouvent vos ressources personnelles. Par ailleurs, pour référencer un nouveau dossier, taper :
addpath ~/mesfichiersmatlab
indiquant à Matlab qu’il peut trouver des scripts dans le dossier ~/mesfichiersmatlab durant la session en cours.
cd : positionne Matlab dans un dossier Unix, par exemple :
cd ~/mesfichiersmatlab prenant en priorité les scripts se trouvant dans ce dossier.
dir ou ls : permet de faire la liste des objets du dossier courant, par exemple la commande suivante : ls
. coursIntro.bak explicite.m.old transport.m .. coursIntro.tex oldexplicite.m u0.m burgers.m explicite.m predicteur.m
En outre, voici les deux principales commandes permettant d’effacer les objets générés par Matlab (variables, figures, …) :
clear all : efface tous les objets en mémoire
clf : détruit les figures
Pour les autres commandes d’environnement faire help general.
♦ Exécuter un script
Si monscript.m est un script Matlab que vous avez écrit et qui est accessible (par path ou cd) , il suffira de saisir dans la fenêtre d’exécution la commande :
monscript
Par défaut, Matlab inscrit les résultats à la suite de la commande.
Si l’on ne désire pas voir le résultat d’une commande il suffit de terminer cette commande par ; :
monscript;
Attention à ne pas donner à vos scripts le nom d’une commande prédéfinie !

Les variables sous Matlab
Matlab gère les nombres entiers, réels, complexes, les chaînes de caractères ainsi que les tableaux de nombres de façon transparente. Il n’est pas utile de déclarer le type de la variable que l’on manipule, y compris les tableaux. Par ailleurs, toutes les variables utilisées restent présentes en mémoire et peuvent être rappelées. Ainsi les instructions suivantes, déclarent les variables lors de leur affectation :
a=1
a = 1 b=1.01
b = 1.0100
X=1.0e+05
X = 100000
nom=’ mon nom’
nom = mon nom
c=1+2i
c = 1.0000 + 2.0000i
la constante i est le nombre imaginaire prédéclaré, de même que certaines constantes (e,pi,…).
On déclare un vecteur colonne de la façon suivante :
u=[1;3;-1]
u = 1 3 -1
un vecteur ligne de la façon suivante :
v=[1,3,-1]
v = 1 3 -1
et une matrice d’ordre 3×2 :
A=[1,2 ; -1, 3; 4, 0]
A = 1 2 -1 3 4 0
la ‘,’ sert à séparer les éléments d’une ligne et ‘;’ les éléments colonnes. En fait, on peut remplacer la ‘,’ par un espace pour améliorer la lisibilité :
vb=[1 3 -1]
vb = 1 3 -1
Pour spécifier un élément d’un vecteur, d’une matrice, on utilise la syntaxe suivante :
u(2) ans = 3
v(3) ans = -1
A(3,2) ans = 0 L’utilisation d’indice hors limite provoque une erreur, comme le montre cet exemple :
A(3,3)
??? Index exceeds matrix dimensions.
On peut se servir de raccourcis bien utiles et plus efficaces pour remplir des vecteurs ou des tableaux. En voici quelques-uns :
u1=1:10 (incrémentation automatique de 1 à 10 avec pas de 1)
u1 = 1 2 3 4 5 6 7 8 9 10
v1=1:2:10 (incrémentation automatique de 1 à 10 avec pas de 2)
v1 = 1 3 5 7 9
Id3=eye(3) (matrice identité d’ordre 3)
Id3 = 1 0 0 0 1 0 0 0 1
Un=ones(2) (matrice constituée de 1 d’ordre 2)
Un = 1 1 1 1
Z=zeros(2,3) (matrice nulle d’ordre 2×3)
Z = 0 0 0 0 0 0
De même, il existe des syntaxes particulières permettant d’extraire des lignes ou des colonnes de matrices :
A1=[11 12 13;21 22 23;31 32 33]
A1 = 11 12 13 21 22 23 31 32 33
A1(:,1) (colonne 1 de la matrice A1)
ans = 11 21 31
A1(2,:) (ligne 2 de la matrice A1)
ans = 21 22 23
Les erreurs de dimensions des objets matriciels sont une des principales difficultés que rencontre le débutant. Pour vérifier ces tailles, on pourra utiliser la commande size :
size(A1) ans = 3 3
size(u) ans = 3 1
3. Opérations élémentaires sous Matlab
Les opérations sur les scalaires sont standards : addition +, soustraction -, multiplication *, division /, puissance ^. La racine carrée s’obtient par la function sqrt. On dispose de toutes les fonctions usuelles sur les scalaires : faire help elfun pour de plus amples détails. Attention, les fonctions peuvent renvoyer des complexes même dans des situations anodines :
sqrt(-1) ans = 0 + 1.0000i
acos(2) (function arc cosinus, ici on a affaire au prolongement dans le plan complexe de cette fonction !)
ans = 0 + 1.3170i
En ce qui concerne les vecteurs et matrices ces opérateurs se prolongent au sens du calcul vectoriel et matriciel. En particulier, il faut veiller à la compatibilité des tailles des objets entre eux ! Voici quelques exemples :
u=[1 2 3]
u = 1 2 3
v=[-1 1 1]
v = -1 1 1
w=u+v (addition)
w = 0 3 4
ut=u’ (transposition d’un vecteur ligne ou colonne)
ut = 1 2 3
ut2=[ut ut] (Concaténation en ligne de deux vecteurs colonnes qui donne une matrice 3×2)
ut2 = 1 1 2 2 3 3
ut3=[ut; ut] (Concaténation en colonne de deux vecteurs colonnes qui donne un vecteur 6×1)
ut3 = 1 2 3 1 2 3
ps=v*ut (Produit qui conduit au produit scalaire)
ps = 4
M=ut*v (Produit qui conduit à une matrice)
M = -1 1 1 -2 2 2 -3 3 3
L=M+2*eye(3)
L = 1 1 1 -2 4 2 -3 3 5
y=L\ut (Résolution du système linéaire L.y=ut)
y = 0.1667 0.3333 0.5000
e=u/L’ (Résolution du système linéaire e.L’ =u)
e = 0.1667 0.3333 0.5000
On prendra garde au sens de la division. Si la matrice n’est pas inversible, un message vous prévient.
On peut effectuer des opérations tensorielles sur les vecteurs et matrices par l’adjonction d’un . à l’opérande : par exemple le produit tensoriel de deux vecteurs colonne
ut.*y ans = 11 0.1667 0.6667 1.5000
et l’élévation à la puissance composante par composante
ut.^y ans = 1.0000 1.2599 1.7321
De même, Matlab autorise l’utilisation de toutes les fonctions scalaires dans un contexte vectoriel. Ainsi, si h est un vecteur de dimension n, sin(h) sera un vecteur de même dimension :
h=0:pi/4:pi
h = 0 0.7854 1.5708 2.3562 3.1416
sin(h)
ans = 0 0.7071 1.0000 0.7071 0.0000
Pour les nombreuses opérations sur les matrices (inverse, puissance, trace, déterminant, factorisation, …) faire help elmat et help matfun.
Pour ce qui est des opérations sur les chaînes de caractères, ces dernières étant considérées comme des vecteurs ligne de caractères ascii, la concaténation de deux chaînes s’effectuera de la façon suivante :
c1=’texte’
c1 = texte
c2=’ et suite de texte’
c2 = et suite de texte
c3=[c1 c2]
c3 = texte et suite de texte pour les autres opérations sur les chaînes de caractères voir help strfun.

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *