Apprendre MATLAB en 10 Minutes
MATLAB (Matrix Laboratory) est un langage de programmation de haut niveau et un environnement conçus pour le calcul numérique, le développement d’algorithmes et la visualisation de données. Développé à la fin des années 1970, MATLAB est devenu un outil essentiel en ingénierie, en sciences et en mathématiques.
Ce tutorial couvre les fondamentaux de MATLAB et t’aide à démarrer avec cet environnement de calcul puissant.
1. Ton Premier Programme MATLAB
Crée un fichier script nommé hello.m ou tape des commandes directement dans la fenêtre de commande MATLAB.
disp('Hello, World!')
Ou en utilisant la fonction fprintf :
fprintf('Hello, World!\n')
Le résultat sera :
Hello, World!
La fonction disp() affiche le contenu directement, tandis que fprintf() offre un contrôle de formatage plus important, similaire au printf du C.
2. Syntaxe de Base
MATLAB a ses propres règles de syntaxe qui diffèrent de la plupart des langages de programmation généraux. Comprendre ces bases est essentiel pour écrire du code propre et maintenable.
2.1 Commentaires
Les commentaires sur une seule ligne commencent par le signe pourcentage % :
% This is a comment
x = 10; % This assigns 10 to x
Les commentaires multi-lignes utilisent %{ et %} :
%{
This is a multi-line comment.
It can span multiple lines.
%}
2.2 Point-virgules
Le point-virgule ; supprime l’affichage du résultat. Sans lui, MATLAB affiche le résultat :
x = 5 % Displays: x = 5
y = 10; % No output, but y is assigned
2.3 Sensibilité à la Casse
MATLAB est sensible à la casse. A et a sont des variables différentes :
A = 5;
a = 10;
disp(A) % Output: 5
disp(a) % Output: 10
2.4 Nommage des Variables
Les noms de variables doivent commencer par une lettre, suivis de lettres, de chiffres ou de tirets bas :
valid_name = 1;
another_valid_name_123 = 2;
% 123invalid = 3; % Error: cannot start with number
2.5 Opérations de Base
MATLAB excelle dans les opérations matricielles. Créer une matrice est simple :
A = [1 2 3; 4 5 6; 7 8 9] % 3x3 matrix
Résultat :
A =
1 2 3
4 5 6
7 8 9
3. Variables et Types de Données
MATLAB utilise le typage dynamique. Les variables sont créées lors de l’affectation et leur type est déterminé par la valeur assignée.
3.1 Types Numériques
MATLAB stocke tous les nombres en virgule flottante double précision par défaut :
% Integer
int_num = 42;
% Float
float_num = 3.14159;
% Scientific notation
sci_num = 2.5e-3; % 0.0025
3.2 Chaînes de Caractères
Les variables chaînes utilisent des guillemets simples :
str = 'Hello, MATLAB';
str2 = "Hello, MATLAB"; % String array (R2016b+)
Concaténation de chaînes :
str1 = 'Hello';
str2 = 'World';
combined = [str1 ', ' str2]; % 'Hello, World'
3.3 Logique (Booléen)
Les valeurs logiques sont true ou false :
flag = true;
result = false;
% Logical operations
a = true;
b = false;
and_result = a && b; % false
or_result = a || b; % true
not_result = ~a; % false
3.4 Tableaux de Caractères vs Chaînes
MATLAB dispose à la fois de tableaux de caractères et d’objets chaînes :
% Character array (older style)
char_arr = 'Hello';
% String object (modern style, R2016b+)
str_obj = "Hello";
% String objects are easier to work with
name = "Alice";
greeting = "Hello, " + name; % Works naturally
4. Structures de Données
MATLAB propose plusieurs structures de données pour différents cas d’utilisation.
4.1 Vecteurs
Un vecteur est un tableau unidimensionnel :
% Row vector
row_vec = [1 2 3 4 5];
% Column vector
col_vec = [1; 2; 3; 4; 5];
% Using colon operator
range_vec = 1:5; % [1 2 3 4 5]
step_vec = 0:2:10; % [0 2 4 6 8 10]
% linspace for evenly spaced values
lin_vec = linspace(0, 10, 5); % [0 2.5 5 7.5 10]
4.2 Matrices
Les matrices sont le fondement de MATLAB :
% Direct matrix creation
A = [1 2 3; 4 5 6; 7 8 9];
% Accessing elements
element = A(2, 3); % Returns 6 (row 2, column 3)
% Matrix operations
B = A'; % Transpose
C = A * B; % Matrix multiplication
D = A .* B; % Element-wise multiplication
4.3 Tableaux Cellules
Les tableaux cellules peuvent contenir différents types de données :
% Create a cell array
cell_arr = {1, 'hello', [1 2 3], true};
% Access cell contents using curly braces
data = cell_arr{2}; % Returns 'hello'
% Access cell using parentheses
sub_cell = cell_arr(1:2); % Returns {1, 'hello'}
4.4 Structures
Les structures sont comme des dictionnaires avec des champs nommés :
% Create a structure
student.name = 'John';
student.age = 20;
student.major = 'Engineering';
% Access fields
disp(student.name); % Output: John
% Array of structures
students(1).name = 'Alice';
students(1).age = 21;
students(2).name = 'Bob';
students(2).age = 22;
4.5 Tables
Les tables sont adaptées aux données tabulaires :
% Create a table
Age = [25; 30; 35];
Name = {'Alice'; 'Bob'; 'Charlie'};
Salary = [50000; 60000; 70000];
T = table(Name, Age, Salary);
% Access data
disp(T.Age);
disp(T.Name{1});
5. Opérateurs
MATLAB propose différents opérateurs pour les opérations arithmétiques, de comparaison et logiques.
5.1 Opérateurs Arithmétiques
a = 10;
b = 3;
sum = a + b; % 13
diff = a - b; % 7
prod = a * b; % 30
quot = a / b; % 3.3333
int_div = floor(a/b); % 3
mod = mod(a, b); % 1 (remainder)
pow = a ^ b; % 1000
5.2 Opérateurs Élément par Élément
Les opérateurs élément par élément fonctionnent sur les éléments correspondants :
A = [1 2 3];
B = [4 5 6];
C = A .* B; % Element-wise: [4 10 18]
D = A.^2; % Element-wise square: [1 4 9]
5.3 Opérateurs de Comparaison
x = 5;
y = 10;
eq = (x == y); % false
neq = (x ~= y); % true
gt = (x > y); % false
lt = (x < y); % true
ge = (x >= y); % false
le = (x <= y); % true
5.4 Opérateurs Logiques
a = true;
b = false;
and_op = a & b; % false (element-wise AND)
or_op = a | b; % true (element-wise OR)
not_op = ~a; % false
and_short = a && b; % false (short-circuit AND)
or_short = a || b; % true (short-circuit OR)
6. Contrôle de Flux
MATLAB propose des structures de contrôle de flux standard, mais avec une syntaxe différente de langages comme Python.
6.1 if-elseif-else
score = 85;
if score >= 90
grade = 'A';
elseif score >= 80
grade = 'B';
elseif score >= 70
grade = 'C';
else
grade = 'F';
end
disp(grade) % Output: B
6.2 switch
L’instruction switch compare une expression unique contre plusieurs cas :
day = 'Monday';
switch day
case {'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'}
disp('Weekday');
case {'Saturday', 'Sunday'}
disp('Weekend');
otherwise
disp('Invalid day');
end
6.3 Boucles for
La boucle for itère sur une plage ou un tableau :
% Iterating over a range
for i = 1:5
disp(i);
end
% Iterating over an array
fruits = {'apple', 'banana', 'orange'};
for fruit = fruits
disp(fruit{1});
end
% Nested loops for matrix operations
A = [1 2; 3 4];
B = zeros(2, 2);
for i = 1:2
for j = 1:2
B(i, j) = A(i, j) * 2;
end
end
6.4 Boucles while
count = 0;
while count < 5
disp(count);
count = count + 1;
end
6.5 Contrôle de Boucles
L’instruction break sorts de la boucle, et continue passe à l’itération suivante :
% Using break
for i = 1:10
if i == 5
break;
end
disp(i);
end
% Output: 1 2 3 4
% Using continue
for i = 1:5
if mod(i, 2) == 0
continue; % Skip even numbers
end
disp(i);
end
% Output: 1 3 5
7. Entrée et Sortie
7.1 Entrée Utilisateur
Utilise la fonction input() pour obtenir l’entrée utilisateur :
% Get numeric input
num = input('Enter a number: ');
% Get string input
name = input('Enter your name: ', 's');
% Get expression input (evaluates the input)
expr = input('Enter an expression: ');
7.2 Affichage des Résultats
Plusieurs fonctions permettent d’afficher des résultats :
% disp - simple display
disp('Hello');
disp([1 2 3]);
% fprintf - formatted output
name = 'Alice';
age = 25;
fprintf('Name: %s, Age: %d\n', name, age);
% sprintf - create formatted string
str = sprintf('Value: %.2f', 3.14159);
disp(str);
7.3 Spécificateurs de Format
Les spécificateurs de format courants dans MATLAB :
% %s - string
% %d - integer
% %f - floating point
% %.2f - floating point with 2 decimal places
% %e - scientific notation
fprintf('%d %.2f %e\n', 42, 3.14159, 1000)
% Output: 42 3.14 1.000000e+03
8. Fonctions
Les fonctions dans MATLAB sont généralement définies dans des fichiers séparés, mais les fonctions anonymes offrent une création de fonctions en ligne.
8.1 Fonctions Anonymes
Les fonctions anonymes créent des fonctions simples sans fichiers séparés :
% Single input
square = @(x) x^2;
disp(square(5)); % Output: 25
% Multiple inputs
add = @(x, y) x + y;
disp(add(3, 4)); % Output: 7
% Multiple expressions
hypot = @(x, y) sqrt(x^2 + y^2);
disp(hypot(3, 4)); % Output: 5
8.2 Fichiers de Fonctions
Crée un fichier nommé myfunc.m :
function y = myfunc(x)
y = x^2 + 1;
end
Appelle la fonction :
result = myfunc(5); % Output: 26
8.3 Fonctions avec Plusieurs Sorties
function [sum, prod] = calc(x, y)
sum = x + y;
prod = x * y;
end
Appelle avec plusieurs sorties :
[s, p] = calc(3, 4);
disp(s); % 7
disp(p); % 12
8.4 Arguments Variables
Utilise varargin et varargout pour les arguments variables :
function result = sum_all(varargin)
result = 0;
for i = 1:length(varargin)
result = result + varargin{i};
end
end
% Call with any number of arguments
total = sum_all(1, 2, 3, 4, 5); % Output: 15
9. Fichiers Scripts
Les scripts sont des fichiers .m qui contiennent une séquence de commandes MATLAB. Ils fonctionnent sur les données de l’espace de travail :
% save as myscript.m
% Calculate statistics for a dataset
data = [1 2 3 4 5 6 7 8 9 10];
mean_val = mean(data);
std_val = std(data);
max_val = max(data);
min_val = min(data);
fprintf('Mean: %.2f\n', mean_val);
fprintf('Std: %.2f\n', std_val);
fprintf('Max: %d\n', max_val);
fprintf('Min: %d\n', min_val);
10. Gestion des Erreurs
Utilise try-catch pour la gestion des erreurs :
try
result = risky_operation();
catch ME
fprintf('Error: %s\n', ME.message);
% Handle the error
result = 0;
end
Utiliser error() pour lever des erreurs :
function result = divide(a, b)
if b == 0
error('Division by zero is not allowed');
end
result = a / b;
end
11. Opérations sur Fichiers
11.1 Sauvegarde et Chargement de Données
% Save variables to file
x = [1 2 3];
y = 'hello';
save('data.mat', 'x', 'y');
% Load variables from file
load('data.mat');
% Save to text file
writematrix(x, 'data.txt');
% Read from text file
data = readmatrix('data.txt');
11.2 Opérations sur Fichiers Texte
% Write to text file
fid = fopen('output.txt', 'w');
fprintf(fid, 'Line 1\n');
fprintf(fid, 'Line 2\n');
fclose(fid);
% Read from text file
fid = fopen('output.txt', 'r');
while ~feof(fid)
line = fgetl(fid);
if ischar(line)
disp(line);
end
end
fclose(fid);
Utiliser textscan pour une lecture structurée :
fid = fopen('data.txt', 'r');
format = '%s %d %f';
C = textscan(fid, format);
fclose(fid);
name = C{1};
age = C{2};
score = C{3};
12. Graphiques
Les capacités de représentation graphique de MATLAB sont l’une de ses fonctionnalités les plus puissantes.
12.1 Graphiques 2D de Base
x = 0:0.1:2*pi;
y = sin(x);
plot(x, y);
xlabel('x');
ylabel('sin(x)');
title('Sine Wave');
grid on;
12.2 Graphiques Multiples
x = 0:0.1:2*pi;
% Subplots
subplot(2, 1, 1);
plot(x, sin(x));
title('Sine');
subplot(2, 1, 2);
plot(x, cos(x));
title('Cosine');
12.3 Personnalisation des Graphiques
x = 0:0.1:10;
y1 = x;
y2 = x.^2;
plot(x, y1, 'b-', 'LineWidth', 2); % Blue solid line
hold on;
plot(x, y2, 'r--', 'LineWidth', 2); % Red dashed line
hold off;
xlabel('X');
ylabel('Y');
legend('Linear', 'Quadratic');
title('Linear vs Quadratic');
grid on;
12.4 Autres Types de Graphiques
% Bar chart
bar([1 2 3 4], [10 20 15 25]);
% Histogram
data = randn(1000, 1);
histogram(data, 30);
% Scatter plot
x = rand(100, 1);
y = 2*x + randn(100, 1)*0.1;
scatter(x, y);
