Retour Matlab

Créer des signaux

Il est alors possible de créer des signaux numériques par cette méthode. L’exemple suivant permet de créer un vecteur, nommé fa, contenant les valeurs d’un sinus de fréquence f1 et d’amplitude A.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
f1 = 12;
A = 25;
ta = linspace(0,1,1001);
fa = A * sin(2*pi*f1*ta);
f1 = 12; A = 25; ta = linspace(0,1,1001); fa = A * sin(2*pi*f1*ta);
f1 = 12;
A = 25;
ta = linspace(0,1,1001);
fa = A * sin(2*pi*f1*ta);

Afficher une courbe y=f(x)

Matlab possède un ensemble de fonction permettant de créer des graphiques (un peu comme la librairie matplotlib sous python).

Graphique y=f(x) / axes linéaires

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
f1 = 12;
A = 25;
ta = linspace(0,1,1001);
fa = A * sin(2*pi*f1*ta);
figure;
plot(ta, fa);
f1 = 12; A = 25; ta = linspace(0,1,1001); fa = A * sin(2*pi*f1*ta); figure; plot(ta, fa);
f1 = 12;
A = 25;
ta = linspace(0,1,1001);
fa = A * sin(2*pi*f1*ta);
figure;
plot(ta, fa);

Les lignes précédentes permettent d’obtenir la figure suivante :

On peut remarquer sur cette figure qu’aucun axe n’est renseigné ainsi qu’aucun titre ou légende.

Titres, légendes et axes

Pour ajouter des éléments sur ce graphique, on peut utiliser les lignes de commandes suivantes :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
legend('fonction sinus à 12Hz')
xlabel('temps (s)')
ylabel('signal (V)')
title('Sinus en fonction du temps')
legend('fonction sinus à 12Hz') xlabel('temps (s)') ylabel('signal (V)') title('Sinus en fonction du temps')
legend('fonction sinus à 12Hz')
xlabel('temps (s)')
ylabel('signal (V)')
title('Sinus en fonction du temps')

La fonction legend permet d’ajouter une légende pour chaque signal affiché sur le graphique.

Les fonctions xlabel et ylabel permettent d’ajouter des titres aux axes des abscisses et des ordonnées.

La fonction title permet d’ajouter un titre au graphique.

L’option grid permet également d’ajouter le quadrillage du graphique.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
grid on;
grid on;
grid on;

Graphique y=f(x) / abscisse logarithmique

On peut également vouloir tracer certaines courbes selon des axes à évolution logarithmique.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
w = logspace(1,6,101); % vecteur des pulsations
R = 1e4; C = 1e-7; % definition des valeurs de R et C
num = 1;
den = 1 + j * R * C .* w;
TF = num ./den; % calcul de la fonction de transfert
gaindb = 20*log10(abs(TF)); % calcul du gain
phase = angle(TF); % calcul de la phase
figure(1) % création d'une figure
subplot(2,1,1); % sous-figure 1
semilogx(w, gaindb); % affichage du gain
grid on; xlabel('Pulsation (rd/s)'); ylabel('Gain (dB)');
subplot(2,1,2); % sous-figure 2
semilogx(w, phase); % affichage de la phase
grid on; xlabel('Pulsation (rd/s)'); ylabel('Phase (rad)');
w = logspace(1,6,101); % vecteur des pulsations R = 1e4; C = 1e-7; % definition des valeurs de R et C num = 1; den = 1 + j * R * C .* w; TF = num ./den; % calcul de la fonction de transfert gaindb = 20*log10(abs(TF)); % calcul du gain phase = angle(TF); % calcul de la phase figure(1) % création d'une figure subplot(2,1,1); % sous-figure 1 semilogx(w, gaindb); % affichage du gain grid on; xlabel('Pulsation (rd/s)'); ylabel('Gain (dB)'); subplot(2,1,2); % sous-figure 2 semilogx(w, phase); % affichage de la phase grid on; xlabel('Pulsation (rd/s)'); ylabel('Phase (rad)');
w = logspace(1,6,101);  % vecteur des pulsations
R = 1e4; C = 1e-7;   % definition des valeurs de R et C
num = 1;
den = 1 + j * R * C .* w;
TF = num ./den;    % calcul de la fonction de transfert
gaindb = 20*log10(abs(TF));   % calcul du gain
phase = angle(TF);   % calcul de la phase
figure(1)     % création d'une figure
subplot(2,1,1);   % sous-figure 1
semilogx(w, gaindb);   % affichage du gain
grid on;  xlabel('Pulsation (rd/s)');  ylabel('Gain (dB)');
subplot(2,1,2);  % sous-figure 2
semilogx(w, phase);  % affichage de la phase
grid on; xlabel('Pulsation (rd/s)'); ylabel('Phase (rad)');

Cet exemple permet d’obtenir la figure suivante :

Plusieurs courbes sur un graphique

Il est possible de mettre autant de courbes que l’on souhaite sur le même graphique.

Pour cela, il suffit de demander l’affichage de plusieurs signaux à la fonction plot.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
f1 = 12;
f2 = 18;
amp = 25;
ta = linspace(0,1,1001);
fa = amp * sin(2*pi*f1*ta);
fb = amp/2 * sin(2*pi*f2*ta);
figure;
plot(ta, fa, ta, fb);
legend('sinus à 12Hz','sinus à 18Hz')
xlabel('temps (s)')
ylabel('signal (V)')
title('Sinus en fonction du temps')
f1 = 12; f2 = 18; amp = 25; ta = linspace(0,1,1001); fa = amp * sin(2*pi*f1*ta); fb = amp/2 * sin(2*pi*f2*ta); figure; plot(ta, fa, ta, fb); legend('sinus à 12Hz','sinus à 18Hz') xlabel('temps (s)') ylabel('signal (V)') title('Sinus en fonction du temps')
f1 = 12;
f2 = 18;
amp = 25;
ta = linspace(0,1,1001);
fa = amp * sin(2*pi*f1*ta);
fb = amp/2 * sin(2*pi*f2*ta);
figure;
plot(ta, fa, ta, fb);
legend('sinus à 12Hz','sinus à 18Hz')
xlabel('temps (s)')
ylabel('signal (V)')
title('Sinus en fonction du temps')

Il existe également une seconde possibilité pour afficher plusieurs courbes avec une légende.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
figure;
plot(ta, fa, 'b', 'DisplayName', 'sinus à 12Hz')
hold on;
plot(ta, fb, 'g', 'DisplayName', 'sinus à 18Hz')
grid on;
xlabel('temps (s)')
ylabel('signal (V)')
title('Sinus en fonction du temps')
legend;
figure; plot(ta, fa, 'b', 'DisplayName', 'sinus à 12Hz') hold on; plot(ta, fb, 'g', 'DisplayName', 'sinus à 18Hz') grid on; xlabel('temps (s)') ylabel('signal (V)') title('Sinus en fonction du temps') legend;
figure;
plot(ta, fa, 'b', 'DisplayName', 'sinus à 12Hz')
hold on;
plot(ta, fb, 'g', 'DisplayName', 'sinus à 18Hz')
grid on;
xlabel('temps (s)')
ylabel('signal (V)')
title('Sinus en fonction du temps')
legend;
MATLAB / Signaux et affichages