Support d’Introduction à MATLAB et Simulink

Support d’Introduction à MATLAB et Simulink
...
Chapitre 2: Types de données et variables
2.1 Particularités de MATLAB
Comme tout langage de programmation MATLAB permet de définir des données variables. Une variable est désignée par un identificateur qui est formé d'une combinaison de lettres et de chiffres. Le premier caractère de l'identificateur doit nécessairement être une lettre. Attention, MATLAB différencie majuscules et minuscules! Ainsi X33 et x33 désignent deux variables distinctes. Les variables sont définies au fur et à mesure que l'on donne leurs noms (identificateur) et leurs valeurs numériques ou leurs expressions mathématiques. L'utilisation de variables avec MATLAB ne nécessite pas de déclaration de type ou de dimension. Le type et la dimension d'une variable sont déterminés de manière automatique à partir de l'expression mathématique ou de la valeur affectée à la variable.
2.2 Les 4 types de données
Les 3 principaux types de variables utilisés par Matlab sont : les réels, les complexes et les chaînes de caractères. Le type logique est associé au résultat de certaines fonctions
Pour MATLAB toute variable est considérée comme étant un tableau d'éléments d'un type donné. MATLAB différencie trois formes particulières de tableaux. Les scalaires qui sont des tableaux à une ligne et une colonne. Les vecteurs qui sont des tableaux à une ligne ou à une colonne. Les matrices qui sont des tableaux ayant plusieurs lignes et colonnes. Une variable MATLAB est donc toujours un tableau que l'on appelle variable scalaire, vecteur ou matrice suivant la forme du tableau.
2.2.1 Le type complexe
L’unité imaginaire est désignée par i ou j (se transforme en i). les nombres complexes peuvent être écrits
sous forme cartésienne a+ib ou sous forme polaire ré . Les différentes écritures possibles sont :
a+i*b (ou a+b*i) et r*exp(i*t) (ou r*exp(t*i))
Avec a,b,r et t des variables de type réel.
Mais on peut écrire :
>> z = 2+i*5 >> z = 2+5*i
>> z = 2+5i (mais z = 2+i5 error! i5 = ???)
>> z =7*exp(i*3) >> z =7*exp(3*i) >> z =7*exp(3i)
Voici quelque commande concernant les nombres complexes :
si Z est de type complexe
imag(Z) retourne la partie imaginaire de Z
real(Z) retourne la partie réelle de Z
abs(Z) retourne le module de Z
angle (Z) retourne la partie imaginaire de Z
conj(Z) retourne le conjugué de Z (Z*)
Ces dernières commandes permettent de passer aisément de la forme polaire à la forme cartésienne.
Il est possible que des variables de noms i ou j aient été redéfinies au cours d’un calcul antérieur alors on peut soit détruire ces deux variables (clear i,j)
i et j redeviennent alors l’unité imaginaire, soit réaffecter à i ou à j la valeur unité imaginaire, soit l’instruction : i = sqrt(-1).
2.2.2 Le type chaîne de caractères
Une chaîne de caractères est un tableau de caractères. Une donnée de type chaîne de caractère (char) est représentée sous la forme d’une suite de caractères encadrée d’apostrophes simples (‘).
Exemples:
>> ch1='bon'
ch1 =
bon
>> ch2='jour'
ch2 =
jour
>> whos
Name Size Bytes Class
ch1 1x3 6 char array
ch2 1x4 8 char array
Grand total is 7 elements using 14 bytes
>> ch=[ch1,ch2]
ch =
bonjour
>> ch(1)
ans =
b
>> ch(7)
ans =
r
>> ch(1:3)
ans =
bon
>> ch3='soi' ;
>> ch=[ch(1:3),ch3,ch(7)]
ch =
bonsoir
Ø Si une chaîne de caractères doit contenir le caractère apostrophe (‘) celui-ci doit être double dans
la chaîne.
Exemple
rep='aujourd'hui'
999 rep='aujourd'hui'
|
Error: Missing MATLAB operator.
>> rep='aujourd''hui'
rep =
aujourd'hui
>> apos=''''
apos =
Ø La chaîne de caractères vide s’obtient par 2 apostrophes”. 2.2.3 Le type logique
Le type logique possède 2 formes : 0 pour faux et 1 pour vrai
Un résultat de type logique est retourné par certaines fonctions ou dans le cas de certains tests.
Exemple :
>> a=1; b=2;
>> test_E=(a= =b)
test_E =
>> test_S=(a>b)
test_S =
>> test_I=(a<b)
test_I = 1
>> V=true
V = 1
>> F=false
F = 0
2.2.4 Le type vecteur
On définit un vecteur ligne en donnant la liste de ses éléments entre crochets ([ ]). Les éléments sont séparés au choix par des espaces ou par des virgules.
On définit un vecteur colonne en donnant la liste de ses éléments séparés au choix par des points virgules ( ;) ou par des retours chariots.
On peut transformer un vecteur ligne X en un vecteur colonne et réciproquement en tapant X’ (‘ est le symbole de transposition)
On peut obtenir la longueur d’un vecteur donné grâce à la commande length(X).
Exemple :
>> x1=[1
x1 =
1 2
x2 =
4 5
x3 = 2 3], x2=[4,5,6,7], x3=[8;9;10] 3
6 7
>> length(x2)
ans = 4
>> x3'
ans = 8 9 10
2.2.S Le type matrice
On définit une matrice en donnant la liste de ses éléments entre crochets. Les éléments d’une même ligne sont séparés au choix par des espaces ou par des virgules. Les lignes entre elles sont séparées par des retours chariot ou par des points virgules.
On peut obtenir les dimensions d’une matrice par la commande size. Soit A une matrice quelconque :

Ø size(A,1) donne le nombre de lignes.
Ø Size (A,2) donne le nombre de colonne.
Ø Size(A) donne le nombre de lignes et de colonnes Æ [m,n]=Size(A) Exemple:
>> A=[1 2 3; 4 5 6;7 8 9;8 7 9] A =
1 2 3
4 5 6
7 8 9
8 7 9
Remarques :
Ø Comme on ne définit pas de manière explicite le type d'une variable, il est parfois utile de pouvoir le déterminer. Cela est possible grâce aux commandes ischar, islogical et isreal.
ischar(x) retourne 1 si x est de type chaîne de caractères et 0 sinon. islogical(x) retourne 1 si x est de type logique et 0 sinon. La commande isreal(x) est à utiliser avec discernement: elle retourne 1 si x est réel ou de type chaîne de caractères ((-:) et 0 sinon (x est complexe à partie imaginaire non nulle ou n'est pas un tableau de valeurs réelles ou de caractères).
Exemple :
>> clear
>> x = 2; z = 2+i; rep = 'oui';
>> ischar(rep)
ans =
1
>> ischar(x)
ans =
>> isreal(z)
ans =
>> isreal(x)
ans =
1
>> isreal(rep)
ans =
1
>>
3/4 Variables spéciales
Ces noms de variables sont utilises par Matlab :
pi ans inf i or j realmin realmax eps ans etc.
>> pi ans =
3.1416 >> realmin ans =
2.2251e-308
>> ans ans =
3.1416
>> eps ans =
2.2204e-016
>> realmax ans =
1.7977e+308 >> inf ans =
Inf
>> nan ans =
NaN
>>
2.3 Lecture des données
pour lire une variable simple on utilise la fonction input comme suite :
>> x=input('introduire la valeur de x') introduire la valeur de x4
x = 4
>> x=input('introduire la valeur de x ') introduire la valeur de x 4
x = 4
La différence entre les deux exemples est l'espace créé dans le commentaire après x ;
pour lire un vecteur ou une matrice on utilise la même fonction :
>> y=input('introduire les valeurs du vecteur Y ') introduire les valeurs du vecteur Y [1 2 3]
y =
1 2 3
>> Z=input('introduire les valeurs du vecteur Z: '); introduire les valeurs du vecteur Z: [2 5 8 7] >>
>> T=input('introduire les valeurs de la matrice T ') introduire les valeurs de la matrice T [1 2 3; 4 5 6] T =
1 2 3
4 5 6
S la chaîne de caractère contient une apostrophe il est indispensable de doubler l'apostrophe.
2.4 affichage des données
pour afficher les données il suffi d'écrire le nom de la variable
la commande disp permet d'afficher un tableau de valeurs numérique ou de caractères Exemple
>> x=6;
>> disp(x)
6
>> disp('bonjour')
bonjour
>> a='bon'
a =
bon
>> disp(['le mot est : ',a])
le mot est : bon
>> disp(['la valeur de x est: ',num2str(x)])
la valeur de x est: 6
num2str Æ Convertie un nombre en caractère.
Les formats d'affichage des réels
MATLAB dispose de plusieurs formats d'affichage des réels. Par défaut le format est le format court à 5 chiffres. Les autres principaux formats sont:
format long : format long à 15 chiffres.
format short e : format court à 5 chiffres avec notation en virgule flottante. format long e : format long à 15 chiffres avec notation en virgule flottante.
MATLAB dispose également des formats format short g et format long g qui utilise la << meilleure >> des deux écritures à virgule fixe ou à virgule flottante. On obtiendra tous les formats d'affichage possibles en tapant help format. On impose un format d'affichage en tapant l'instruction de format correspondante dans la fenêtre de contrôle, par exemple format long. Pour revenir au format par défaut on utilise la commande format ou format short.
>> pi Exemple :
ans =
3.1416
>> format long
>> pi ans =
3.14159265358979
>> format short e
>> pi^3 ans =
3.1006e+01
>> format short g
>> pi^3 ans =
31.006
2.5 Sauvegarde des données
Il est possible de sauvegarder une session MATLAB dans un fichier pour une utilisation ultérieure. L'instruction save nom-fic enregistre toutes les variables de l'espace de travail dans le fichier nom-fic.mat. Si aucun nom de fichier n'est précisé, le fichier par défaut est matlab.mat. Il est possible de ne sauver qu'une partie des variables (par exemple seulement la variable contenant le résultat d'un calcul) en utilisant l'instruction save nom-fic nom-var où nom-var est le nom de la (ou des) variable(s) à sauvegarder. Attention, seul le contenu des variables est sauvegardé et non pas l'ensemble des instructions effectuées durant la session. Pour ramener dans l'espace de travail les variables sauvegardées dans le fichier nom-fic.mat, taper load nom-fic.
Exemple :
>> x=2*pi/3, y=sin(x), z=cos(x)
x = 2.0944
y = 0.8660
z = -0.5000
>> save data >> save toto y z >> who
Your variables are: x y z
>> clear all >> who
>> % vide

(Voir aussi la commande diary )
Chapitre 3: Calculer avec Matlab
3.1 Opération portant sur les scalaires
Si X et Y sont des variables scalaires de type réel : X+Y , X-Y , X*Y et X/Y désignent les 4 opérations dans R.
Si X et Y sont des variables scalaire de type complexe : X+Y , X-Y , X*Y et X/Y désignent les 4 opérations dans C.
La puissance s'obtient (^) X^Y (X puissance Y)
3.2 Opération portant sur les vecteurs
Une particularité de MATLAB est de permettre d'effectuer des opérations de manière globale sur les éléments d'un vecteur de type réel ou complexe sans avoir à manipuler directement ses éléments :
Si K est une variable scalaire et X un vecteur K*X multiplie tous les éléments de X par K.
Si X et Y sont des vecteurs de longueur identique Z =X ± Y définit le vecteur Z dont les éléments
sont Z(i) =X(i) ± Y(i).
Le produit des éléments des 2 vecteurs X et Y s'obtient par: Z=X·*Y
Le quotient est donné par Z=X·/Y
Exemple:
>> X=[1 2 3];
>> K=5; >> K*X ans =
5 10 15
>> Y=[4 5 6]; >> Z=X+Y Z =
5 7 9
>> Z=X-Y Z =
-3 -3 -3
>> Z=X.*Y Z =
4 10 18
>> Z=X./Y Z =
0.2500 0.4000 0.5000
3.3 Opération portant sur les matrices
Si A, B et C sont des matrices alors:
A*B : désigne le produit de la matrice A par la matrice B
A±B: désigne la somme ou la soustraction des 2 matrices A et B
A^n : désigne la matrice A à la puissance n
A·*B : désigne le produit élément par élément des 2 matrices A et B
A·^n : désigne la matrice dont les termes sont égales aux termes de la matrice A à la puissance n
Pour résoudre le système AX= b soit on écrit X=A\b soit X=inv(A)*b
Exemple:
>> A=[1 2
3 4];
>> B=[4 5
6 7];
>> A*B ans =
16 19
36 43
>> A+B ans =
5 7
9 11
>> A-B ans =
-3 -3
-3 -3
Chapitre 4: Programmer sous Matlab
4.1 Opérateurs de comparaison et opérateurs logiques
- a) Les opérateurs de comparaison sont:
= = : égale à (X= = Y)
> : Strictement plus grand que (X > Y)
< : Strictement plus petit que (X< Y)
>= : plus grand ou égale à (X>= Y)
<= : plus petit ou égale à (X<= Y)
~= : différent de (X~=Y)
- b) Les opérateurs logiques sont:
& : et (X &Y)
│ : ou (or) (X │ Y)
- : Non X (-X)
4.2 Instructions de contrôle
4.2.1 Boucle for (parcours d'un intervalle)
Sa syntaxe est:
for indice = borne_inf : pas : borne_sup Séquence d'instructions
end
n
Exemple faire un programme Matlab qui calcule la somme suivante∑=
i 3
Solution:
n=input('donner la valeur de n');
s=0;
for i=3:n
s=s+i;
end
disp('la somme s est: '),s
%disp(['la somme s est: ',num2str(s)]
Exemple faire un programme Matlab qui calcule la somme suivante 1+1.2+1.4+1.6+1.8+2 Solution:
clear all
s=0;
for i=1:0.2:2
s=s+i
end
disp('la somme s est: '),s
…
4.2.2 Boucle While (tant que)
Sa syntaxe est:
while expression logique Séquence d'instructions end
Exemple: faire un programme sous matlab qui calcule la somme suivante: S=1+2/2! +3/3!+... on arrête le calcule quand S>2.5
Solution: clear all s=1;i=1,f=1;
while s<=2.5
i=i+1 f=f*i; s=s+i/f
end
L' execution:
>> ex3_matlab
i = 1
i = 3 s = 2.5000
i = 4 s = 2.6667
4.2.3 L'instruction if (si)
1er cas : Sa syntaxe est: if expression logique Séquence d'instructions end
Exemple:
Faire un programme sous Matlab qui résout le problème suivant:
- y = x s x<0
- y=x2 si x>0
- y=10 si x=0
Solution
clear all
x=input('introduire la valeur de x ');
if x<0
y=x;
end
if x>0

y=x^2;
end
if x==0
y=10;
end
disp('la valeur de y est: '),y
2er cas :Sa syntaxe est: if expression logique
Séquence d'instructions else
Séquence d'instructions end
Exemple:
Faire un programme sous Matlab qui résout le problème suivant:
- y = x s x<0
- y=x2 si x≥0
Solution
clear all
x=input('introduire la valeur de x ');
if x<0
y=x;
else
y=x^2;
end
disp('la valeur de y est: '),y
L'exécution:
>> ex4_matlab
introduire la valeur de x 5
la valeur de y est:
y =25
3er cas :Sa syntaxe est:
if expression logique
Séquence d'instructions elseif expression logique
Séquence d'instructions elseif expression logique
Séquence d'instructions
else
Séquence d'instructions
end
Exemple:
Faire un programme sous Matlab qui résout le problème suivant: Y=x si x<0 Y=10 si x=0 Y=sqrt(x) si 0<x<20
Y=x2 si x =20
Y=x3 si x>20
Solution
clear all
x=input('introduire la valeur de x ');
if x<0
y=x;
elseif x==0
y=10;
elseif x==20
y=x^2;
elseif x>0 & x<20
y=sqrt(x);
else
y=x^3;
end
disp('la valeur de y est: '),y
L'exécution:
>> ex5_matlab
introduire la valeur de x 60
la valeur de y est:
y =
216000
4.2.4 L'instruction switch
Sa syntaxe est:
Switch var
case cst-1
Séquence d'instructions-1
case cst-2
Séquence d'instructions-2
case cst-N
Séquence d'instructions-N
otherwise
Séquence d'instructions par défaut
end
var: est une variable numérique ou chaîne de caractère.
cst-1, cst-2....cst-N: sont des constantes numérique ou chaîne de caractères.
Si l'instruction à exécuter est la même pour un ensemble de cas alors la syntaxe est : Case {cst-1, cst-2,...}
Exemples:
jj=input('donner le jour 1 :7 ');
switch jj
case 1
disp('samedi')
case 2
disp('dimanche')
case 3
disp('lundi')
case 4
disp('mardi')
case 5
disp('mercredi')
case 6
disp('jeudi')
case 7
disp('vendredi')
end
%
4.3 Instructions d’interruption d’une boucle
Il est possible de provoquer une sortie prématurée d'une boucle de contrôle.
- L'instruction break permet de sortir d'une boucle for ou d'une boucle while. En cas de boucles imbriquées, on interrompt seulement l'exécution de la boucle intérieure contenant l'instruction break.
- L'instruction return provoque un retour au programme appelant (ou au clavier). Les instructions suivant le return ne sont donc pas exécutées. L'instruction return est souvent utilisée conjointement avec une instruction conditionnée par exemple pour tester dans le corps d'une fonction si les paramètres d'entrée ont les valeurs attendues.
- L'instruction error permet d'arrêter un programme et d'afficher un message d'erreur. La syntaxe est : error(' message d"erreur ').
- L'instruction warning permet d'afficher un message de mise en garde sans suspendre l'exécution du programme. La syntaxe est warning(' message de mise en garde '). Il est possible d'indiquer à MATLAB de ne pas afficher les messages de mise en garde d'un programme en tapant warning off dans la fenêtre de commandes. On rétablit l'affichage en tapant warning on.
- pause : interrompt l'exécution jusqu'à ce que l'utilisateur tape un return
- pause(n) : interrompt l'exécution pendant n secondes.
- pause off : indique que les pause rencontrées ultérieurement doivent être ignorées, ce qui permet de faire tourner tous seuls des scripts requérant normalement l'intervention de l'utilisateur.
Exemples:
b- Commande return
function somme(n)
%
if n < 0

return
end
S=0;
for i=1:n
S=S+i^2
end
A l'exécution:
>> somme(2)
S =1
S =5
>> somme(-2)
>> Æ sortie de la fonction
c- Commande error
clear all s=2; for i=1:5i
s=s+i^2
if s>5
error('s est superieur à 5')
end
end
d- Commande warning
clear all
% warning off/on Æ afficher ou masquer warning
s=2;
for i=1:5
s=s+i^2
if s>5
warning('s est superieur à 5')
end
end
A l'exécution:
>> i=
1
s =
3 i=
2
s =
7
Warning: s est superieur à 5
> In C:\MATLAB6p5\work\exp.m at line 8 i=3
s =16
Warning: s est superieur à 5
> In C:\MATLAB6p5\work\exp.m at line 8 i=4
s =32
Warning: s est superieur à 5
> In C:\MATLAB6p5\work\exp.m at line 8
i=5
s =57
Warning: s est superieur à 5
> In C:\MATLAB6p5\work\exp.m at line 8
>>
e- Commande pause
clear all s=2;
for i=1:5 i
s=s+i^2 if s>5
pause
end end A l'exécution:
>> i=
1
s =
3 i=
2
s =
7
| Le curseur clignote tapez Entrée
4.4 La programmation vectorielle 4.4.1 Manipulation des vecteurs
Les éléments d'un vecteur peuvent être manipulés grâce à leur indice dans le tableau. Le k-ieme élément du vecteur x est désignée par x(k). Le premier élément d'un vecteur a obligatoirement pour indice 1.
Il est possible de manipuler plusieurs éléments d'un vecteur simultanément. Ainsi les éléments k à l du vecteur x sont désignés par x(k:l). On peut également manipuler facilement les éléments d'un vecteur dont les indices sont en progression arithmétique. Ainsi si l'on souhaite extraire les éléments k, k+p, k+2p,..., k+Np = l, on écrira x(k:p:l). Plus généralement, si K est un vecteur de valeurs entières, X(K) retourne les éléments du vecteur X dont les indices sont les éléments du vecteur K.
Exemple :
…
Il est très facile de définir un vecteur dont les composantes forment une suite arithmétique. Pour définir un vecteur x dont les composantes forment une suite arithmétique de raison h, de premier terme a et de dernier terme b, on écrira x = a:h:b. Si a-b n'est pas un multiple de h, le dernier élément du vecteur x sera a + ent((a-b)/h) h où ent est la fonction partie entière.
>> x = 1.1:0.1:1.9 x =
Columns 1 through 7
1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000
Columns 8 through 9
1.8000 1.9000
>> x = 1.1:0.4:2 x =
1.1000 1.5000 1.9000
La commande linspace permet de définir un vecteur x de longueur N dont les composantes forment une suite arithmétique de premier terme a et de dernier terme b (donc de pas h=(b-a)/(N-1)). Les composantes du vecteur sont donc linéairement espacées.
La syntaxe est : x = linspace(a,b,N).
>> x = linspace(1.1,1.9,9) ans =
Columns 1 through 7
1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000
Columns 8 through 9
1.8000 1.9000
- linspace(a,b) N=100 par défaut.
Vecteurs spéciaux
Les commandes ones, zeros et rand permettent de définir des vecteurs dont les éléments ont
respectivement pour valeurs 0, 1 et des nombres générés de manière aléatoire.
ones(1,n) : vecteur ligne de longueur n dont tous les éléments valent 1
ones(m,1) : vecteur colonne de longueur m dont tous les éléments valent 1
zeros(1,n) : vecteur ligne de longueur n dont tous les éléments valent 0
zeros(m,1) : vecteur colonne de longueur m dont tous les éléments valent 0
rand(1,n) : vecteur ligne de longueur n dont les éléments sont générés de manière aléatoire entre 0 et 1
rand(m,1) : vecteur colonne de longueur m dont les éléments sont générés de manière aléatoire entre 0
et 1
4.4.2 Manipulation des matrices
Définir une matrice
On a déjà vu que l'on définissait la matrice : A ⎛ ⎞
= ⎜1 34 2⎠en tapant A = [1 3; 4 2]. D'une façon générale
donc, on définit une matrice en donnant la liste de ses éléments entre crochets.
On peut construire très simplement une matrice << par blocs >>. Si A, B, C, D désignent 4 matrices (aux dimensions compatibles), on définit la matrice bloc :
K= ⎜A B ⎟
⎝ ⎠
C D
par l'instruction K = [A B ; C D].
Voici un exemple de construction par blocs de la matrice

>> A11 = [35 1 6; 3 32 7; 31 9 2]; >> A12 = [26 19; 21 23; 22 27]; >> A21 = [ 8 28 33; 30 5 34]; >> A22 = [17 10; 12 14]; B 35
>> B11 = [ A11 A12; A21 A22 ] B11 =
…
25 19
23 27 10 14 20 15 16]';
>> B = [ B11 B12];
>> B21 = [ 4 36 29 >> B = [B ; B21] B = 13 18 11];
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
>>
Un élément d'une matrice est référencé par ses numéros de ligne et de colonne. A(i,j) désigne le ième élément de la jème ligne de la matrice A. Ainsi A(2,1) désigne le premier élément de la deuxième ligne de
A,
>> A(2,1) ans =
4
>>
Matrices spéciales
Certaines matrices se construisent très simplement grâce à des commandes dédiées. Citons les plus utilisées:
eye(n) : la matrice identité de dimension n
ones(m,n) : la matrice à m lignes et n colonnes dont tous les éléments valent 1 zeros(m,n) : la matrice à m lignes et n colonnes dont tous les éléments valent 0
rand(m,n) : une matrice à m lignes et n colonnes dont les éléments sont générés de manière aléatoire entre 0 et 1
magic(n) : permet d'obtenir une matrice magique de dimension n.
Le symbole deux-points (:) permet d'extraire simplement des lignes ou des colonnes d'une matrice.
Le jème vecteur colonne de la matrice A est désigné par A(:,j). C'est simple, il suffit de traduire le symbole deux-points (:) par << tout >>. Ainsi A(:,j) désigne toutes les lignes et la jème colonne de la matrice A. Bien entendu, la ième ligne de la matrice A est désignée par A(i,:).
>> A = magic(5) A =
17 24 1 8
23 5 7 14
4 6 13 20
10 12 19 21
11 18 25 2 15
16
22
3
9 >> A(1,:) ans =
17 24
15
>> A(:,2) ans =
24
5
6
12
18 1 8
Exercice :
Comment échanger les colonnes 2 et 3 de la matrice A ?
>> v = A(:,2); A(:,2) A = = A(:,3); A(:,3) = v;
17 1 24 8 15
23 7 5 14 16
4 13 6 20 22
10 19 12 21 3
11 25 18 2 9
On peut également extraire plusieurs lignes ou colonnes simultanément.
Si J est un vecteur d'entiers, A(:,J) est la matrice issue de A dont les colonnes sont les colonnes de la matrice A d'indices contenus dans le vecteur J. De même A(J,:)est la matrice issue de A dont les lignes sont les lignes de la matrice A d'indices contenus dans le vecteur J. D'une façon plus générale, il est possible de n'extraire qu'une partie des éléments des lignes et colonnes d'une matrice. Si L et C sont deux vecteurs d'indices, A(L,C) désigne la matrice issue de la matrice A dont les éléments sont les A(i,j) tels que i soit dans L et j soit dans C.
>> A = magic(5)
A =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> L = [1 3 5]; C = [3 4];
>> A(L,C)
ans =
1 8
13 20
25 2
>> A(1:2:5,3:4)
ans =
1 8
13 20
25 2
>>
Il existe des commandes MATLAB permettant de manipuler globalement des matrices.
La commande diag permet d'extraire la diagonale d'une matrice: si A est une matrice, v=diag(A) est le vecteur composé des éléments diagonaux de A. Elle permet aussi de créer une matrice de diagonale fixée: si v est un vecteur de dimension n, A=diag(v) est la matrice diagonale dont la diagonale est v.
>> A=eye(3) A =
1 0 0
0 1 0
0 0 1
>> diag(A)
ans =
>> v=[1:3] v =
1 2 3
>> diag(v)
ans =
1 0 0 0 2 0 0 0 3 >>
On n'est pas obligé de se limiter à la diagonale principale. La commande diag admet un second paramètre k pour désigner la k sur-diagonale (si k>0) ou la k sous-diagonale (si k<0).
On dispose également de la commande tril permet d'obtenir la partie triangulaire inférieure (l pour lower) d'une matrice. La commande triu permet d'obtenir la partie triangulaire supérieure (u pour upper) d'une matrice.
>> A = [ 2 A = 1 1 ; -1 2 1 ; -1 -1 2]
>> triu(A) ans =
2 1 1
2 1 1 0 2 1
-1 2 1 0 0 2
-1 -1 2 >> tril(A) ans =
2 0 0
-1 2 0
-1 -1 2
Autres fonctions :
inv(A) : renvoie l’inverse de la matrice carrée A
det(A) : renvoie le déterminant de la matrice carrée A
A' : renvoie la transposée de la matrice A à coefficients réels nnz(A) : renvoie le nombre d’éléments non nuls de la matrice A.