Académique Documents
Professionnel Documents
Culture Documents
En matlab, ce n’est pas nécessaire de déclarer et préciser les types des variables.
Juste il faut saisir le nom de la variable et lui affecter une valeur. Le type de la variable prendra
par défaut le type de la donnée.
Exemple :
>> a = 14.5 ; la variable a reçoit une valeur réelle
>> a = ‘Info’ ; la variable a reçoit une chaine de caractères
>> x = [4 1 5 0 7] ou x = [4, 1, 5, 0, 7] ; est un vecteur ligne de cinq éléments (séparés par des
espace ou des virgules)
>> y = [5 ; 6 ; 8 ; 7] ; est vecteur colonne de 4 éléments (séparés par des points-virgules)
>> x’ le transposé de x
>> z = rand(1, n) permet de créer un vecteur ligne de n éléments aléatoires entre 0 et 1
>> z = rand(n, 1) permet de créer un vecteur colonne de n éléments aléatoires entre 0 et 1
>> x = zeros(1, n) permet de créer un vecteur ligne de n éléments nuls
>> x = ones(1, n) permet de créer un vecteur ligne de n éléments valent 1
>> x = [4, 5, 7, 1, 0, 2, 6] ;
>> y = x(1 : 3) ; permet d’extraire 3 élément de x et les affecter à y
y = [4, 5, 7]
>> x = 1 : 10 ; permet de générer un vecteur avec des éléments de 1 à 10 (le pas par défaut est
égal à 1)
>> x = 1 : 0.5 : 10 ; permet de générer un vecteur avec des éléments de 1 à 10 (le pas est 0.5)
N.B. En Matlab l’accès au premier élément d’un vecteur (tableau) x est x(1) et non pas x(0)
>> length (x) – détermine le nombre des éléments du vecteur x
>> mean (x) – calcule la moyenne des éléments du vecteur x
>> sum (x) – calcule la somme des éléments du vecteur x (Sigma)
>> prod (x) – calcule le produit des éléments du vecteur x
>> M = [4 2 1 8 ; 5 7 0 6 ; 3 4 7 5] ;
M= 4 2 1 8
5 7 0 6
3 4 7 5
>> N = M(1 : 2 , 2 : 4) permet d’extraire de la matrice M un bloc formé à partir de la 1 ligne
jusqu’à la 2 ligne et de la 2 colonne jusqu’à la 4 colonnes
N=2 1 8
7 0 6
Manipulation des nombres complexes
>> z = 3+ i * 4
N.B. en Matlab i * i = -1 (de même j * j = -1)
Exemple :
t = -20 : 20 ; (le pas par défaut est égal à 1) , pour une bonne résolution de la courbe il faut
augmenter le nombre points c'est-à-dire diminuer le pas :
t = -20 : 0.01 : 20 ;
f = t .^2 ;
plot(t , f) ;
TP 1 - Matlab
Manip. 1
Créer quatre matrices A, B et C, et D de taille 4 x 4 de votre choix.
𝑨 𝑩
X= [ ]
𝑪 𝑫
2. Créer la matrice Y de taille 8 x 8 ayant la forme suivante :
Y=
3. Former les vecteur d1, d2, d3 et d4 à partir des éléments des diagonales des matrices
respectivement A, B, C et D.
4. Calculer les valeurs maximales de ces vecteurs.
5. Former un vecteur-ligne d à partir des vecteurs d1, d2, d3 et d4.
6. A partir des matrices A, B, C et D former une matrice Z de taille 4 x 4 x 4 (cube)
Manip. 2
Soient les fonctions suivantes pour x compris entre -10 et 10 :
F(x) = 0.5/(x + 0.5e (x/10) ) , G(x) = 2x / (1 – x3) , H(x) = 1 / (1 – x2 ) et I(x) = 10x sin(1/x)
1) Tracer les courbes des fonctions dans un même graphe avec des couleurs différentes
2) Tracer les courbes des fonctions dans des graphes séparés dans un canevas partagé en
deux lignes et deux colonnes, et donner des titres pour chaque graphe.
Manip.1
1) X = [A B;C D]
2) Y = [A zeros(4,4);zeros(4,4) A]
3) d1 = diag(A)
d2 = diag(B)
d3 = diag(C)
d4 = diag(D)
4) max(d1)
max(d2)
max(d3)
max(d4)
5) dC = [d1;d2;d3;d4]
%Ou bien
dC = cat(1,d1,d2,d3,d4)
6) Z(:,:,1)=A;
Z(:,:,2)=B;
Z(:,:,3)=C;
Z(:,:,4)=D;
%Ou bien
Z = cat(3,A,B,C,D);
Manip.2
%le point avant les opérateurs des vecteurs indique qu’il s’agit d’une
opération élément par élément, et non pas vectorielle
1) plot(x,F,'b',x,G,'r',x,H,'y',x,I,'g');
2) subplot(2,2,1),plot(x,F,'b'),title('fonction F');
subplot(2,2,2),plot(x,G,'r'),title('fonction G');
subplot(2,2,3),plot(x,H,'y'),title('fonction H');
subplot(2,2,4),plot(x,I,'g'),title('fonction I');
UNIVERSITE IBN ZOHR Année Universitaire : 2019-2020
>> ch = input (' donner une valeur pour ch ' ) ; permet de lire une valeur à partir du clavier
>> ch= input (' donner une valeur pour ch ', ' s ' ) permet de lire une valeur (chaine de caractère)
à partir du clavier
>> abs(ch) affiche le code ascii de la chaine ' mot ' qui vaut : 109 111 116
>> double (ch) convertit les caractères de la chaine en code ascii en double précision
>> ch='123';
>> str2double(ch) Transforme le nombre en chaîne sous forme d’un nombre en double précision
char () Convertit un tableau d’entiers non négatifs en caractères (les 127 premiers sont les codes
ascii de ces caractères).
>> char([105 110 102 111]) affichera la chaine ' info '
>> isstr(), ischar() elles retournent 1 si l’argument est une chaîne de caractères et 0 autrement.
ans =
cours de Matlab
La concaténation verticale comme éléments d’un vecteur colonne impose que ces chaînes soient de
même longueur.
Exemple :
ch1='labsa' ;
findstr(ch1,’a’) =
2 5
Le symbole ‘a’ se trouve dans la 2ième et la 5ième position dans la chaine ch1
>> ch = strrep(ch1,ch2,ch3) remplace toutes les occurrences de la chaîne ch2 dans ch1 par la chaîne
ch3.
Exemple
>> ch = strrep('aujourdhui il fait chaud', 'chaud', 'froid')
ch =
'aujourdhui il fait froid'
UNIVERSITE IBN ZOHR Année Universitaire : 2019-2020
TP 2 - Matlab
Manip. 1
Ecrire un programme qui permet de lire une ligne de texte à partir du clavier et la stocker dans une
variable L. On souhaite par la suite crypter cette ligne avec un code (clé) que l’on doit saisir dans une
autre variable C.
- Affecter la ligne codée à une nouvelle chaine LC.
- Afficher le contenu de LC.
- Décrypter la chaine LC puis l’affecter à une nouvelle chaine LD
- Comparer L et LD
Manip.1
%% Cryptage
% Convertir la chaine L en code ascii avec (abs)
% Modifier le code ascii de la chaine L en additionnant la clé C
% Reconvertir le code ascii modifié en chaine de caractères LC avec
(char)
LC = char(abs(L) + C);
%% Décryptage
% Convertir la chaine cryptée LC en code ascii avec (abs)
% Modifier le code ascii de la chaine LC pour revenir au code ascii
d'origine en soustrayant la clé C
% Convertir le code ascii en chaine de caractères LD
LD = char(abs(LC)- C);
if (cond)
instr 1 ;
else
instr 2 ;
end
La boucle «while »
while (cond)
instr1 ;
instr2 ;
….
end
Multichoix
switch (var)
case val1
inst1 ;
case val2
inst2 ;
….
otherwise
inst k ;
end
UNIVERSITE IBN ZOHR Année Universitaire : 2019-2020
TP 3 - Matlab
Manip. 1
Ecrire un programme qui calcule et affiche les solutions de l’équation de second degré dans R
puis dans C. (les coefficients de l’équation devront être saisis à partir du clavier).
[x1, x2] = roots([a b c]) ; (elle permet de calculer les racines d’un polynôme de degré 2 avec
les coefficients a, b et c ) ;
Manip. 2
Ecrire un programme qui permet de saisir les éléments d’une matrice A carrés 4x4 à partir du
clavier. Construire une nouvelle matrice B de même taille que A selon la condition :
N.B. Vérifier le résultat du programme en utilisant les fonctions de matlab prod , diag et
mean
Manip. 3
Ecrire un programme qui permet de stocker une ligne de texte, saisie à partir du clavier, dans
un tableau L. Puis envoyer le texte inversé de L vers un autre tableau R.
Exemple :
N.B. Ecrire le même programme avec deux boucles différentes (for…end et while ….end)
Vérifier en utilisant la fonction flip()
Manip 1.
%% Calcul de delta
delta = (b^2)-(4*a*c);
Manip 2.
1.
for i=1:4
for j=1:4
A(i,j)=input('donner une valeur'); %lire chaque élément
de la matrice
2.
for j=1:4 %itération sur les colonne de la matrice B
for k=1:4 %itérer à la fois sur les ligne et sur les colonnes
S=S+B(k,k); %calcul de la somme des éléments de la diagonale
end
Manip 3.
for i=1:n
R(i)=L(n-i+1); %le dernier élément de la chaîne L est déposé
dans le premier élément la chaîne R, puis l’avant-dernier élément de
L est déposé dans le deuxième élément de R et ainsi de suite.
end
disp(R);
UNIVERSITE IBN ZOHR Année Universitaire : 2019-2020
Les fonctions
Création d’une fonction :
N.B. en Matlab il est strictement obligatoire de sauvegarder la fonction dans un ficher sous le
même nom que de celui de la fonction. Exemple : nom_fonct.m
Exemple :
function y = fonct ( x )
y = (2*x + 3) /2
end
A l’invite de commande :
y = 5.5
UNIVERSITE IBN ZOHR Année Universitaire : 2019-2020
TP 4 - Matlab
Manip.1
a) Ecrire une fonction qui reçoit en entrée une chaine de caractère et un symbole, et
renvoi en sortie le nombre d’occurrence de ce symbole dans la chaine.
b) Ecrire une fonction qui reçoit en entrée deux chaînes de caractères puis renvoie le
résultat logique de leur comparaison.
Manip.2
Ecrire une fonction qui calcule les nème termes (n passé en argument) de la suite de Fibonacci :
avec F0 = 1 et F1 = 1
Manip.3
a)
Ecrire une fonction qui calcule les nème termes (n passé en argument) des suites entières Un et
Vn définies ci-dessous.
U0 = 1 V0 = 1
Un = Vn-1 + 1 Vn = 2Un - 1
b)
Ecrire une fonction select_terme qui permet de sélectionner le nème terme d’une des
suites, en fonction d’un des arguments d’entrée, choix (si choix = 1, on donnera en
sortie Un ; si choix = 2, on donnera en sortie Vn; sinon, la sortie donnera les
deux:([Un ;Vn]). Utilisez la fonction définie précédemment et l’instruction
switch...case.
Manip.1
1.
2.
r=0;
else
end
end
end
end
Manip.2
else
Manip.3
a)
function [U] = Un(n)
if(n==0)
U=1;
else
U= Vn(n-1)+1; %on doit appeler la fonction Vn afin de
calculer Un
end
end
if n==0
V=1;
else
V= 2*Un(n)-1; %on doit aussi appeler la fonction Un pour
calculer Vn
end
end
b)
function [A] = select_terme(n, choix)
switch(choix)
case 1
A=Un(n);
case 2
A=Vn(n);
otherwise %autrement
end
Exercice manipulation de matrices
On appelle éléments aberrants d’une matrice tout élément dont la valeur n’est pas homogène
avec son voisinage (entourage).
On considère les deux matrices suivantes :
A B
Les éléments 200 de la matrice A et 10 de la matrice B sont deux éléments aberrants puisqu’ils
diffèrent beaucoup des autres éléments de leur voisinage (la partie en orange).
On cherche à filtrer les éléments d’une matrice. Le filtrage consiste à enlever les éléments
aberrants de la matrice et les remplacer par des valeurs plus adéquates (plus appropriées).
Nous utilisons dans cet exercice le filtrage par moyenne. Ce filtrage consiste à remplacer
chaque élément aberrant par la moyenne des éléments de son voisinage, y compris lui-même.
30 15 20 30 15 20
10 200 25 [30, 15, 20, 10, 200, 25, 20, 25, 30] 41.6 10 41.6 25
Moyenne
20 25 30 20 25 30
Voisinage élément aberrant Élément aberrant filtré
Exemple :
>> M = [1 5 3 6 0; 9 1 40 0 2; 4 1 2 5 3; 7 1 50 3 2; 6 3 4 3 1]
M=
1 5 3 6 0
9 1 40 0 2
4 1 2 5 3
7 1 50 3 2
6 3 4 3 1
>> filtredMat = filtreMoy(M, 20)
filtredMat
1 7 0
1 2 5
1 8 3
1- Ecrire une fonction voisinMat qui extrait le voisinage d’un seul élément à partir d’une
matrice. La fonction recevra en arguments la matrice et les deux indices de l’élément, et
donnera en sortie une matrice 3 x 3 représentant son voisinage.
2- Ecrire une fonction mat2vec qui convertie une matrice passée en arguments en un vecteur
ligne.
3- Ecrire une fonction filtreMoy qui remplace tous les éléments d’une matrice donnée en
arguments par la moyenne de leurs voisinages (utiliser la fonction Matlab mean). La fonction
donnera en sortie une nouvelle matrice filtrée.
Afin de reconnaître les éléments aberrants d’une matrice, on calcule la valeur absolue de la différence
entre l’élément et la moyenne de son voisinage (y compris lui-même). Lorsque cette valeur dépasse
un certain seuil, l’élément est considéré comme aberrant et doit donc être filtré.
4- Modifier la fonction filtreMoy pour qu’elle ne remplace que les éléments considérés
aberrants par rapport à un seuil qu’elle reçoit en arguments.
Solution :
1)
end
2)
function [ V ] = mat2vec( M )
%M : matrice d'entrée
%V : vecteur de sortie
for i=1:m
for j=1:n
%pour chaque élément de la matrice M
3)
function [ Mf ] = filtreMoy( M )
%M : matrice à filtrer
%Mf : matrice filtrée
[m,n] = size(M);
for i=2:m-1 %j'évite la première et la dernière lignes
(le carde)
for j=2:n-1 %même chose pour les colonnes
%ici j’itère sur tous les éléments de la matrice sauf
les éléments du cadre, puisque je ne peux pas extraire leurs
voisinages (voisinages incomplets)
end
end
end
4)
[m,n] = size(M);
for i=2:m-1
for j=2:n-1
Mvois = voisinMat(M,i,j);
Vvois = mat2vec(Mvois);
moyVois = mean(Vvois);
- On cherche à créer une fonction codeCesar qui reçoit en entrée une chaîne de caractères
et un code (clé) de décalage, et renvoie en sortie une chaîne cryptée.
Exemple :
Noter qu’on ne crypte ici que lettres minuscules de l’alphabet. Les lettres majuscules,
la ponctuation, les espaces et les autres caractères spéciaux restent inchangés dans la
chaîne.
Noter aussi que si les lettres cryptées dépassant la dernière lettre de l’alphabet, celles-
ci reviennent au début de l’alphabet, c.-à-d. qu’avec une clé de 3, ‘xyz’ deviendra ‘abc’.
On donne ci-dessous le tableau des codes ASCII de quelques caractères usuels.
Solution :
end
end