Université Hassan 1er - Settat
Faculté des Sciences & Techniques
Initiation à MATLAB
Exercices de base
Exercice 1 Déterminez la solution (x,y,z) du système d’équations linaires suivant :
21 x + 3 y - 2z = 2
2 x - 7y + 12 z = -4
x + 2y - z = 4
Exercice 2 Ecrivez une fonction MATLAB qui calcule la factorielle de l’entier n. Le
synopsis de cette fonction sera m = fact(n).
Exercice 3 Refaites l’exercice 2, mais cette fois écrivez une fonction récursive que vous
appellerez m = factrec(n). Une fonction récursive est une fonction qui s’appelle
elle-même (il n’y aura donc pas de boucle, comme dans le cas de l’exercice 2).
Exercice 4 Entrez les commandes suivantes :
» fid = fopen('\\NOVA\Usagers\Cours\GEI605\Audio\16khz\h1604.sl')
» parole = fread(fid,'short');
» parole = parole(512:length(parole));
Vous avez maintenant un fichier de parole, échantillonné à 16 kHz. Pour
écouter, on fait :
» soundsc(parole,16000)
- Ecoutez ce fichier à d’autres fréquences (8 et 32 kHz, par exemple).
- Ecoutez ce fichier à l’envers.
- Générez, à partir de ce signal, un autre signal qui aura un effet d’écho.
Ecoutez le résultat.
- Avec la fonction fft, calculez le spectre de fréquences d’une portion voisée
et d’une portion non-voisée. Affichez le module du spectre avec la
fonction plot. Commentez.
Exercice 5 Nous allons filtrer passe-bas le signal de parole de l’exercice 4. Entrez :
» r = 0.4;
» n = -100:100;
» h = r*sinc(r*n);
» y = filter(h,1,parole);
Le signal y est la parole filtrée passe-bas. Ecoutez, et comparez avec
parole.
1
Université Hassan 1er - Settat
Faculté des Sciences & Techniques
A.U 2023-2024
Travaux Pratiques : Simulation sous Matlab
Traitement de Signal & Théorie de communication
Filière : LST – GESA
A-Génération et visualisation de Signaux
1. Quel est le type de signal générer par les scripts MatLab suivant :
Script 1
Script 2
t=-10:1:20;
t = -1:1e-5:1 ;
Imp=[zeros(1,10),ones(1,1),zeros(1,20)];
x1 = rectpuls(t, 0.05);
stem(t,Imp);
plot(t,x1) ;
xlabel('Temps indexé en n');
axis([-0.1 0.1 -0.2 1.2]);
ylabel('Amplitudeylabel(’Amplitude’);
xabel('Temps(sec)');
ylabel('Amplitude');
Script 3 Script 4
t = -1:1e-5:1 ; fs = 10000 ;
x2 = tripuls(t,0.04); t = 0:1/fs:1.5;
plot(t,x2); y1 = sawtooth(2*pi*50*t);
axis([-0.1 0.1 -0.2 1.2]); plot(t,y1);
xlabel('Temps (sec)'); axis([0 0.1 -1.2 1.2]);
xlabel('Temps (sec)');
ylabel('Amplitude');
ylabel('Amplitude');
2. Ecrire des fonctions MatLab permettent de générer des signaux ci-dessous décalée de t0 ,
d’amplitude A et de longueur arbitraire N .
3. Ecrire une fonction MatLab qui permet de générer une sinusoı̈de de longueur finie incluse
dans l’intervalle [t1 , t2 ] avec les paramètres suivant : A : Amplitude, f : fréquence et Φ phase
initiale.
2
Université Hassan 1er - Settat
Faculté des Sciences & Techniques
4. Ecrire un script MatLab, faisant appel à la fonction précédente pour générer et représenter
graphiquement chacune des signaux suivants :
x1 (t) = 4 cos(4πt/4) t ≤ 2s
x2 (t) = 3 cos(4t) + sin(πt) t ≤ 20s
6. Ecrire un script MatLab qui permet de générer le signal complexe suivant : z(n) = e(jn/2)
pour : 0 < n < 50.
7. Représenter graphiquement le signal z(n) avec les commandes : plot(z), plot(n,z) et
stem(z). Qu’observez-vous ?
B-TFD Signaux analogiques :
1. Ecrire un script MatLab qui permet de générer et représenter un signal sinusoı̈dal x(t) =
A sin(2πf t) d’amplitude A = 1, des fréquences maximums f = 5 Hz, 30 Hz et 80 Hz et
échantillonnés à 100 Hz. Le vecteur de temps contient les instants des échantillons avec une
période d’échantillonnage Te , t = (0 : N ) ∗ Te , (N : nombre total d’échantillons).
2. Représenter le module de la transformée de Fourier discret TFD du signal x(t).
3. Le théorème d’échantillonnage est-il respecté ? Que concluez-vous ?
4. Ecrire un script MatLab qui permet de générer et représenter un signal sinusoı̈dal d’amplitude
A = 1, de fréquence maximum f = 1000 Hz et échantillonnés respectivement à 20000 Hz,
5000 Hz et 1500 Hz.
5. Le théorème d’échantillonnage est-il respecté ? Que concluez-vous ?
6. Entrez les commandes suivantes :
» fid = fopen('\\NOVA\Usagers\Cours\GEI605\Audio\16khz\h1604.sl')
» parole = fread(fid,'short');
» parole = parole(512:length(parole));
Vous avez maintenant un fichier de parole, échantillonné à 16 kHz. Pour écouter, on fait :
» soundsc(parole,16000)
- Ecoutez ce fichier à d’autres fréquences (8 et 32 kHz, par exemple).
- Ecoutez ce fichier à l’envers.
- Avec la fonction fft, calculez le spectre de fréquences d’une portion voisée et d’une portion
non-voisée. Affichez le module du spectre avec la fonction plot. Commentez.