Académique Documents
Professionnel Documents
Culture Documents
TP - TS S6 Version2018 PDF
TP - TS S6 Version2018 PDF
TRAVAUX PRATIQUES
TRAITEMENT NUMERIQUE DU
SIGNAL
AVANT PROPOS.
cours. Ces travaux sont réalisés par le logiciel MATLAB de la compagnie Mathworks.
L'idée est de vous exposer les bases de cet outil de travail et de vous habiliter à
vous verrez comment utiliser les principales opérations usuelles sur les scalaires, les
vecteurs et les matrices avec MATLAB ainsi que certaines opérations mathématiques.
La seconde partie est dédiée aux applications par Simulink qui est
SOMMAIRE
AVANT PROPOS………………………………………………………………….………..…………02
TP INTRODUCTION A MATLAB 01
(2 séances)
1. INTRODUCTION :
Résumé. Matlab est un logiciel de calcul numérique, utilisé dans de nombreux
domaines d’application. Il est base sur le calcul matriciel. Matlab est d’ailleurs un
raccourci pour “Matrix Laboratory”. Le but de ce TP est d’aider les débutants en
Matlab, en introduisant les commandes les plus courantes.
2. L’ACCES :
Pour lancer l’exécution de Matlab, tapez dans une fenêtre xterm: matlab6.5. L’interface
graphique de Matlab apparaît alors. A droite, la partie où on entre les commandes. Le
caractère signifie que Matlab attend une instruction. A gauche, en haut, les variables
d’environnement, en bas, les dernières commandes tapées. Regardez le contenu des menus
déroulants.
Exercice 1.
Exécutez l’introduction de Matlab, chargez l’aide. Bref, faites un petit tour du propriétaire
selon le tableau ci-dessous...
4. COMMANDES GENERALES :
4.1. Gestion des fichiers :
Vous pouvez utiliser la petite fenêtre en haut à droite, ou à défaut :
Résultat: »13
Pour conserver le résultat, il faut l’assigner dans un objet:
» a = 5+8
»a
Pour ne pas faire afficher le résultat, mettez; aàla fin de la commande:
» a=5+8;
pi 3. 1415...
eps 2.2204e-016
Inf nombre infini
NaN n’est pas un nombre; exprime parfois une indétermination
4.4. Historique :
Matlab conserve l’historique des commandes. Il est donc possible de récupérer des
instructions déjà saisies (et ensuite de les modifier dans le but de les réutiliser):
clear var1… var n efface les variables van1,. . . van de l’espace de travail
clear efface toutes les variables crées dans l’espace de travail
Exercice 3.
(1) Tapez la commande a =1 :7;. Tapez les commandes a, who et whos.
(2) Utilisez pour modifier a: a=1 :2;.
(3) Tapez la commande b=a+2;. Réexécutez les commandes who et whos en utilisant .
Tapez clear et b.
• scalaires
» s=30
• vecteurs numériques
» x = [1 ;2; 3] (les ; séparent les éléments d’un vecteur colonne)
» x = [1 ,2,3] (les , ou les blancs séparent les éléments d’un vecteur ligne)
» x’
» y = [x,x,x]
» z = [x x x]
• matrices
• les polynômes
Matlab représente un polynôme sous forme d’un vecteur ligne contenant les coefficients
classes dans l’ordre des puissances décroissances. Par exemple le polynôme P d’expression P(x)
=x2 − 6x + 9 est représenté par
» P=[1 -6 9]
Exercice 4.
Entrez les différents vecteurs et matrices et donnez la longueur et la taille de
chacun (Utilisez help pour trouver les fonctions qui donnent longueur et taille).
5.2. Création rapide :
Certaines commandes permettent de créer plus rapidement des vecteurs précis:
» I1=1:10 (Un vecteur contenant les entiers de 1 a 10)
» I2=1:1:10
» I3=10:-1:1
» I4=1:0.3:pi
» I1(2)=l3(3)
» I4(3:5)=[1,2,3]
» I4(3:5)=[]
» I5=linspace(1,5,5)
» help linspace
» who
» whos
» cle ar I1 I2 I3 I5
» who
» clc (efface le contenu de la fenêtre de commande)
» clear
NB: Une ligne de commande commençant par le caractère % n’est pas exécutée par Matlab.
Cela permet d’insérer des lignes de commentaires. Et il faut commenter ses programmes, ...
surtout ceux de l’examen!
Exercice 5.
Construire:
(1) une suite partant de -8 et allant à -5 par pas de 0.25.
(2) une suite décroissante d’entiers de 15 à 3.
(3) (3) une suite de longueur 100 de - à .
MATRICES
size(A) nombre de lignes et de colonnes de A
A(i,j) coefficient d’ordre i,j de A
A(i1:i2,:) lignes i1 à i2 de A
A(i1:i2,:) =[] supprimer les lignes i1 à i2 de A
A(:,j1:j2) colonnes j1 à j2 de A
A (:,j 1 :j2) = [] supprimer les colonnes j1 à j2 de A
A (:) concaténer les vecteurs colonnes de A
diag(A) coefficients diagonaux de A
MATRICES PARTICULIERES
zeros(m,n) matrice nulle de taille m,n
ones(m,n) matrice de taille m,n dont tous les coefficients valent 1
eye(n) matrice identité de taille n
diag(x) matrice diagonale dont la diagonale est le vecteur x
magic(n) carré magique de taille n
rand(m,n) matrice de taille m,n à coefficients i.i.d. de loi uniforme sur [0,1]
randn(m,n) matrice de taille m,n a coefficients i.i.d. de loi normale N(0,1)
Exercice 6.
[Extraction de composantes.]
Entrez la matrice
» A=[1 23; 2 3 1; 3 1 2]
Quels sont les résultats des commandes suivantes?
» A([2 3],[1 3])
» A([2 3],1:2)
» A([2 3],:)
» A([2 3],end)
» A(:)
Exercice 7.
Créez des matrices particulières.
Exemple de création d’une matrice par blocs:
» C=[A, zeros(3,2); zeros(2,3), eye(2)]
Répliquez le vecteur colonne [1; 3; 6] pour en faire une matrice 3 x 19, de deux manières: en
utilisant ones et en effectuant une multiplication matricielle, puis en trouvant la commande
ad hoc de réplication.
Exercice 8.
Ecrire la matrice carrée M d’ordre 12 contenant les entiers de 1 à 144 ranges par ligne.
Extraire de cette matrice les matrices suivantes:
- la sous-matrice formée par les coefficients aij pour i = 1,... ,6 et j = 7,... 12;
- celles des coefficients aij pour (i,j) {1,2,5,6,9,10}2;
- celle des coefficients aij pour i + j pair.
A’ transposée de A
rank(A) rang deA
inv(A) inverse de A
expm(A) exponentielle de A
det (A) déterminant de A
trace(A) trace de A
poly(A) polynôme caractéristique de A
eig(A) valeurs propres de A
[U, D] =eig (A) vecteurs propres et valeurs propres de A
+ - addition, soustraction
* multiplication, puissance (matricielles)
.* . multiplication, puissance terme à terme
A\b solution de Ax = b
b/A solution de xA = b
./ division terme à terme
Exercice 9.
Essayez des fonctions sur la matrice A. Par exemple, quels sont ses valeurs et vecteurs
propres? Puis, construisez une matrice C de même taille que A. Essayez A+C, A*C, A.*C. Ensuite,
définissez la matrice B comme étant la matrice A à laquelle on a ajouté le vecteur colonne [1;
2; 3]. Déterminez son noyau. Y a-t-il une fonction prédéfinie dans Matlab qui détermine le
noyau d’une matrice? Le cas échéant, y a-t-il des différences entre les méthodes employées pour
le calcul du noyau?
Exercice 10.
Résolution d’un système sous-dimensionné:
Exercice 11.
Construire un vecteur quelconque et essayer les fonctions ci-dessus.
Le tableau suivant décrit le résultat de quelques unes de ces fonctions lorsqu’elles sont
appliquées à un vecteur x:
FONCTIONS VECTORIELLES
max(x) maximum
min(x) minimum
sort(x) tri par ordre croissant
[y, I] = sort(x) retourne en plus les indices des éléments de x
find(x) retourne les indices non nuls de x
[y, I] = find(x) retourne des lignes (dans le vecteur I) et des colonnes
(dans le vecteur J) des éléments non nuls du x
sum(x) somme des éléments de x
cumsum(x) vecteur contenant la somme cumulée des éléments de x
prod(x) produit des éléments de x
cumprod(x) vecteur contenant le produit cumulé des éléments de x
diff (x) vecteur des differences entre deux éléments consécutifs de
x
mean(x) moyenne des éléments de x
median(x) médiane
std(x) écart type
Exemple 1.
Regardez l’effet des instructions suivantes.
» x=rand(1,5)
» mean(x)
» std(x)
» median(x)
» sort(x)
» A=rand(3)
» sort(A)
» [B, I]=sort(A)
» sort(A’)
» max(A)
» max(A’)
» max(max(A))
» sum(A)
» cumsum(A)
» prod(A)
» diff(A)
» D=A([1,2],1:3)
» sum(D,1)
» sum(D,2)
Exercice 12.
Soit X une matrice 2 x n contenant les coordonnées de n points du plan. Comment
faire pour obtenir une matrice où les points sont ordonnés par ordre croissant des abscisses?
Exercice 13.
Calculer 10!.
Exercice 14.
(1) Soit le vecteur de dimension 8 de composantes: 3.2, 4.8, 3.3, 3.2, 3.1, 4.2, 3.2, 3.3.
Entrez le vecteur y = (yi)i=1,...,8 correspondant.
(2) Construisez à l’aide des fonctions précédentes la suite des moyennes mobiles,
Exercice 15.
Tirez 20 nombres aléatoirement dans l’intervalle [0,1]. Quelle est la valeur minimale du
vecteur et la position du coefficient qui la réalise? Vérifiez.
NB: Attention de ne pas confondre = qui sert à affecter une valeur à une variable et == qui
sert à tester l’égalité.
Les opérateurs relationnels peuvent être utilisés avec des scalaires ou des matrices. Le
résultat d’évaluation d’une expression relationnelle est 1 (vrai) ou 0 (faux). Appliqués à une
matrice, ils rendent une matrice de même dimension, formée de 1 et de 0.
Exemple 2.
u=4
u==4
u<=12
Reprenez la matrice A= [1 2 3; 2 3 1; 3 1 2] en tapant A = [.
Ar=(A<=2)
[B,I]= find(A==1) (Retourne les coordonnées égales à 1, ainsi que leur position.)
Exercice 16.
Exemple 7.
Ces quelques lignes calculent n! pour n = 1 a 100. fact = zeros(1,100);
n=100;
fact(1)=1;
for k=2:n
fact(k)=fact(k-1)*k;
end
Mais on peut aussi taper simplement : n=100; fact=cumprod(1:n); L'exécution du premier
programme prend significativement plus de temps que l'exécution du deuxième
programme. Pour le voir, et comparer l'efficacité des algorithmes, on peut utiliser tic (à
placer en début de programme) et toc (à placer en fin de programme) qui permettent de
compter le temps cpu écoulé.
Exercice 18.
Exécutez les deux programmes ci-dessus en utilisant les commandes tic, toc afin de
comparer leur temps d'exécution respectif.
L'instructions conditionnelles.
La manière la plus brute de procéder est d'utiliser un bloc if ... then ... else ... end. La
syntaxe en est la suivante :
if conditions
instructions
end
Les `instructions' ne sont exécutées que si les `conditions' sont vérifiées, plus précisément
si `conditions' a une valeur différente de 0. Une variante plus élaborée est :
if conditions
instructions (exécutées si les `conditions' sont vérifiées)
else
instructions (exécutées si les `conditions' ne sont pas vérifiées)
end
Exemple 8.
Le programme suivant simule le lancer d'une pièce.
p=0.5;
u=rand;
if u<p
disp('pile')
else
disp('face')
end
NB : Rappelons qu'une proposition logique (par exemple, (x>0 & x<10)) a pour valeur 1 si
elle est vraie et 0 sinon. Dans les calculs, on peut donc éviter d'utiliser l'instruction if en
introduisant des indicatrices d'ensembles.
L'instruction while.
Ce format de boucle permet de s'arrêter conditionnellement (et non plus à rang fixe,
comme dans une boucle for). La syntaxe en est la suivante :
while conditions
instructions
end
Les `instructions' sont exécutées tant que les `conditions' sont vérifiées.
Exemple 9.
Soit f une fonction continue. La fonction suivante recherche par dichotomie une valeur
approchée à e près d'une solution de l'équation f(x) = 0 dans l'intervalle [a; b], lorsque f(a)
et f(b) sont de signes différents (ce qui forme une condition suffisante d'existence de ce
point d'annulation x).
function s=dicho(f,a,b,e)
% s=DICHO(f,a,b,e)
% f : chaine de caractères contenant le nom d'une fonction (définie à l'aide d'un fichier .m
de type function)
% a,b : bornes de l'intervalle de recherche( a<b )
% e : précision avec laquelle on veut la valeur approchée de la solution de f(x)=0
d=b-a;
ya=feval(f,a);
yb=feval(f,b);
if ya==0
s=a;
elseif yb==0
s=b;
elseif ya*yb<0
while (d>e)
x=(b+a)/2;
y=feval(f,x);
if y==0
s=y;
return
elseif y*ya<0
b=x;
yb=y;
else
a=x;
ya=y;
end
d=b-a;
end
s=x;
else error('la fonction ne change pas de signe')
end
1. INTRODUCTION :
Matlab permet de créer des signaux continus et discrets et d'en contrôler les
moindres détails. Ce tp donne l'essentiel à savoir ainsi que quelques clefs pour aller
plus loin.
0.8
0.6
0.4
0.2
sinus de x
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6 7
x = 0:2
1 1
0.5 0.5
0 0
-0.5 -0.5
-1 -1
0 2 4 6 8 0 2 4 6 8
0.8
0.6
0.4
0.2
0
0 1 2 3 4 5 6 7
Le premier subplot partitionne en deux lignes et deux colonnes et place le pointeur sur la
première case. Le second subplot partitionne de la même manière et place le pointeur sur
la deuxième case. Le troisième subplot partitionne en deux lignes et une seule colonne et
place le pointeur sur la deuxième case (la deuxième ligne).
2.7. Placer des titres et des commentaires :
Les commandes xlabel, ylabel, title, text permettent de commenter les axes t, x(t), de
placer un titre au graphique ou de placer un commentaire n'importe où sur le graphique.
2.8. Un peu plus sur les graphiques :
Il existe plusieurs possibilités pour représenter un ensemble de points (t(i),x(i)). Les plus
utilisées sont énumérées ci-dessous.
plot (t ,x, ’s’) trace d’une courbe ou d’un nuage de points
bar (t ,x, ’s’) trace sous forme d’un histogramme
stem(t ,x, ’s’) diagramme en bâtons
stairs (t ,x,) trace en escalier des valeurs discrètes
fplot représente des fonctions
hist trace des histogrammes
’s’ est un paramètre facultatif constitué d’une chaîne de caractères qui spécifie le type de tracé
(couleur, différents tracés en pointillés, symboles pour le tracé de points). Par défaut, le
tracé est continu. Tapez help plot pour avoir la liste des valeurs possibles pour ’s’.
Exercice 1.
Soit f et g les fonctions définies sur l’intervalle [0,10] par:
Tracez ces deux fonctions (à l’aide de fplot) d’abord dans une même fenêtre graphique mais
sur des graphes différents, puis dans une même fenêtre graphique et sur le même graphe.
3. SIGNAUX NUMERIQUES :
Les fonctions réalisant les fonctions mathématiques couramment utilisées en traitement
du signal sont données par help elfun et help datafun.
- Multiplier 2 signaux
Si on veut multiplier un signal x par une fenêtre h, il suffit de taper:
Y =x.*h
en vérifiant que x et h ont bien la même longueur. ATTENTION! n'oubliez pas le point `.'
avant le `*' car le signe `*' effectue la multiplication matricielle, alors que `.*' effectue la
multiplication terme à terme.
Ici aussi, il faut faire attention que les deux vecteurs aient la même taille et soient tous les
deux lignes, ou tous les deux colonnes (exemple voir le paragraphe suivant).
Il est aussi fréquent d'avoir multiplié 2 signaux entre eux. C'est le cas par exemple
lorsqu'on veut réaliser un signal de modulation. L'exemple ci-dessous réalise la
modulation d'un sinus 50 Hz par un sinus 2000 Hz (la fréquence d'échantillonnage
reste la même).
% Génération d'un sinus de fréquence 50Hz modulé à 2000Hz
fe = 8000; % Fréquence d'échantillonnage
N = 8192; % Nombre de points de la séquence
% Axe des temps t = (1:N)/fe;
% Génération du sinus f0 = 50;
sinus = sin(2*pi*f0*t);
% Génération de la porteuse
fp = 2000;
% elle doit être de la même longueur que le signal % a priori, on ne connait
pas N.
t_porteuse = (1:length(sinus) ) /fe;
porteuse = cos (2*pi*fp*t_porteuse);
% on multiplie terme à terme les 2 signaux
signal = sinus. * porteuse; % les 2 vecteurs sont de même longueur
TP TRANSFORMEE DE FOURIER 03
(1 séance)
1. Introduction :
A fin d'obtenir le spectre des signaux, on leur applique une transformée de Fourier,
qui fournit une approximation du spectre du signal. L'algorithme de FFT calcule la
Transformée de Fourier Discrète des signaux de manière rapide si les séquences de
signaux sont de longueurs une puissance de 2. Aussi on prendra soin de travailler sur des
signaux de longueurs des puissances de 2, c'est-à-dire 64, 128, 256,...,8192, ...
Les signaux sont générés et on désire observer les formes d'ondes et spectres de ces
signaux. Cela est possible via la commande plot qui permet de tracer un graphe du type
x=f(t). La syntaxe est alors plot(t,f(t)). C'est au niveau de la commande plot que se décide
la graduation des axes. Les principales commandes relatives aux graphiques sont données
dans help graph2d. Notamment
• clf, efface la figure en cours
• figure crée une nouvelle figure. On peut rappeler la première figure par figure(1).
• subplot(N,M,n) permet de diviser une figure en NxM graphiques. Chaque graphique
est désigné par un numéro entre 1 et N.M (de gauche à droite et de haut en bas).
Voir exemple ci-dessous.
• hold on permet de superposer plusieurs courbes sur le même graphique. hold
off annule cette commande et n'autorise qu'un /P))
seul plot par graphique.
• abs(x) retourne la valeur absolue pour un réel,
ou le module pour un complexe.
• angle(x) retourne l'argument du complexe x entre it et it.
• y= fft(x,N) retourne la TFD de longueur N (i.e. sur N points fréquentiels) du signal x
(avec`zero_padding'' si la longueur de x est inférieure à N, i.e. une complétion de x par
autant de zéros qu'il faut pour effectuer une TFD classique de taille N). Remarque :
c'est l'algorithme de FFT qui est utilisé si N est une puissance de 2 ; d'où le nom de
la fonction matlab.
• y= max(x) retourne la valeur maximale du signal x. (y est un scalaire).
• y= max(x,40) retourne un vecteur contenant les échantillons de x lorsqu'ils sont
>40 ou 40.
• R= roots(a) retourne les racines du polynôme dont les coefficients sont dans le
vecteur a.
• D'autres commandes telles que xlabel, legend, title, ... permettent de commenter
les graphique
Matlab est un logiciel qui permet de faire des calculs mathématiques `semi_formels'.
Matlab connaît un grand nombre d'opérations ou de fonctions mathématiques : fonctions
usuelles, calcul matriciel, fonctions plus spécifiques du signal (FFT, etc).
Par exemple : Si a est un vecteur qui contient les échantillons d'un signal, A=
fft(a,128) rend un vecteur A qui contient la transformée de Fourier discrète (TFD) des 128
premiers échantillons du signal
Exercices d'applications
subplot (2,2,2)
plot (t, signal, 'k')
title('Allure temporelle du signal'); xlabel('temps (sec)')
subplot (2,1,2)
plot (f,tfsinus_dB, 'k',f,tfsignal _dB, 'k--')
title('Spectre des signaux'); legend('sinus pur', 'sinus bruité');
xlabel('Fréquence (Hz)'); ylabel('dB')
Exercice 1.
Transformée de Fourier de la porte rectangulaire
1. Générer une porte rectangulaire de longueur P = 5 échantillons; (P=ones(1,5);)
2. Calculer la transformée de Fourier discrète (TFD) de la porte sur N = 1000 points
fréquentiels. (Pf=fft(P,1000))
3. Afficher le module de la transformée de Fourier. (plot(abs(Pf))
Questions:
• Le résultat contient la TFD du signal qui, comme on l'a vu, est l'échantillonnage des
valeurs de la transformée de Fourier à temps discret (TFTD) aux points fréquentiels
vk = k/N pour 0≤k≤N-1. A quelles fréquences réduites v correspondent les valeurs
d'indices 1, 500 et 1000?
• A quoi est due la symétrie que l'on observe?
• Quelle est la largeur Δv du lobe principal? (utiliser ginput)
Exercice 2 :
Exercice 3 :
Transformée de Fourier de la fenêtre de Hanning
La fenêtre de Hanning est définie par:
w= .5*(1-cos(2*pi*t/P-1) ; t=0 :P-1
1. Générer une fenêtre de Hanning de longueur P = 50 échantillons et de valeur max 1,
et afficher son allure temporelle.
2. Calculer la transformée de Fourier discrète (TFD) de la fenêtre sur N= 1000 points
fréquentiels.
3. Afficher le module de la transformée de Fourier en linéaire puis en dB.
Quelle est la largeur du lobe principal?
TP INTRODUCTION AU SIMULINK 04
(1 séance)
1. INTRODUCTION :
Simulink est un outil de MATLAB qui permet de remplacer les équations
mathématiques entre certaines variables par des blocs organisés en un schéma. Pour
ouvrir Simulink, cliquez sur l'icône présent dans la fenêtre principale de MATLAB. Une
boîte de dialogue contenant la liste des librairies (semblable à celle de la figure 1)
apparaît à l’écran. La partie gauche de la boîte de dialogue montre les librairies, tandis
que la portion droite présente les blocs disponibles dans la librairie sélectionnée. Une
courte description du bloc sélectionné est affichée dans le haut de la fenêtre. Ce sont
ces blocs qui servent à la création des diagrammes, ou schémas-blocs.
2. Description de SIMULINK :
Pour lancer Simulink, on peut soit utiliser les
menus disponibles, soit taper sur la ligne de
commande « simulink ». Pour créer un nouveau
modèle Simulink choisir New dans le menu File,
puis Model. Une feuille de travail apparaît, sur
laquelle on va pouvoir définir graphiquement notre
système. Les différents outils disponibles seront
trouvés dans les menus correspondants sources,
visualisation, automatique continue, automatique
discrète, fonctions mathématiques, fonctions et
tables, automatique non-linéaire, signaux et
systèmes. De par sa nature graphique Simulink
peut être aisément découvert intuitivement. Cet
outil utilise la technique de drag and drop
(sélectionner et faire glisser). Il est facile de
positionner les éléments nécessaires dans la
fenêtre du modèle. Ensuite, on relie ces éléments
entre eux pour constituer le modèle. Chaque
élément possède une description et
éventuellement des paramètres qui peuvent être
modifiés. Pour y accéder double-cliquer sur un
élément.
2.1 Librairies :
Les divers éléments de la librairie sont alors
disponibles :
Librairie simulink :
Continuous : Blocs linéaires définis par leurs
fonctions de transfert
Discrete: idem mais en échantillonné
Functions & Tables : Blocs de fonctions mathématiques
Math: Blocs d'opérateurs mathématiques et logiques
Nonlinear : commutateurs et autres non linéarités
Signals & Systems : Divers signaux et blocs
Sinks: Outils d'analyse des signaux
Sources : Générateurs de signaux
Librairie Communications Blockset :
Channel Coding : Blocs de séquence de codage et décodage
Channels: Divers canaux de transmission bruités,…
3. Travail à réaliser :
3.1. Exemples de base :
Créer le modèle suivant:
Le bloc « Sine Wave» est un bloc qui génère un signal. Les blocs qui n’ont pas d’entrées font
partie des blocs «sources ». Le bloc «Scope », qui n’a pas de signal de sortie, fait partie des
blocs « sinks ».
Tester différentes combinaisons de blocs « sources » et de blocs « sinks ».
Modifier le schéma précédent pour détecter les valeurs négatives de: . Que
fait le schéma suivant :
Expliquer le rôle des blocs «Integrator» et «Unit Delay ». Modifier les paramètres «Initial
conditions » et « Sample time ». Observer !
Pour un signal analogique (continu) x(t) où t ≥ 0 est le temps, on notera xe (n) le signal
échantillonné (discret), n étant l’indice du signal échantillonné. On a alors
xe(n) = x(t0 + nΔt) où Δt est le pas d’échantillonnage (le «Sample time ») et t0 le temps
initial, usuellement t 0 =0.
Réaliser le modèle suivant (Figure 1), mettre «Initial condition » à 1, et lancer la simulation
Explication. On notera (et c’est un usage courant) U=(u(t)) le signal Y=(y(t)) le signal de
sortie du bloc 1/S . U et Y représentent donc deux signaux. Pour tous les blocs
contenant la lettre S, qu’on appelle généralement « fonction de transfert », le schéma
Définition
Soit X=(x(t)) un signal. La multiplication par S de X revient à dériver le signal x(t), c'est-à-dire
que
sX=(dx(t)/dt)
ainsi, Y = (1/S) U, revient à sY=U donc
(dy(t)/dt)=u(t)
(On mettra la condition initiale à zéro pour «Integrator 1 », et on la fera varier entre 0 et 3
pour «Integrator 2 »). Cette équation est «l’équation du pendule» et elle modélise l’ angle
d’un pendule, initialement en bas (condition initiale de l’intégrateur 1 à zéro) et avec une
vitesse initiale fixée par la valeur de l’intégrateur 2.
Le bloc «Unit Delay» est comparable au bloc «Integrator» mais on l’utilise pour des
signaux échantillonnés. Il peut aussi servir à échantillonner un signal analogique (Figure
2).
De façon similaire au paragraphe précédent, en notant U = (uε (n)) et Y = (ye(n)) les signaux
d’entrée et de sortie échantillonnés, le bloc «Unit Delay » signifie que Y =1/z. U or cette fois,
la multiplication par z doit être comprise comme un décalage dans le temps, plus
précisément, si X = (xe (n)), alors :
z X = ( x e ( n +1 ) )
Ainsi Y = 1/zU s’écrit aussi zY = U donc y e ( n +1) = u e (n) ou de façon équivalente
(n étant une variable muette) ye(n) = ue(n − 1) : on voit que 1/z est bien un retard, et que le
signal en sortie ue correspond au signal en entrée retardé d’une unité, soit pour les
signaux analogiques :
y(t)=u(t− Δt) .
Dans le schéma bouclé de la figure 2, on a donc aussi U =0,9 Y soit finalement zY =
0,9Y qui se traduit par y e ( n + 1 ) = 0 , 9 y e ( n ) qui co rrespond à une su ite
géo métri que de raison 0,9: y e (n) = 0 , 9 n y e ( 0 ) . L ’ é q u a t i o n précédente est une
équation aux différences, et elle est l’analogue d’une équation différentielle pour un signal discret.
On peut d’ ailleurs constater la similitude entre les deux solutions, analogique et
échantillonnée, du système
dans lequel on aura bien veillé à prendre la même condition initiale dans les deux blocs, et si on
prend un pas d’échantillonnage Δt = 0,1 dans le bloc «Unit Delay » alors il faut prendre un
gain K = exp(−Δt) dans le bloc «Gain» de sorte que
Matlab ? C’est utile en particulier pour faire du traitement du signal «hors ligne », alors que
Simulink effectue du traitement du signal «en temps réel ». Par exemple, une FFT peut être
faite dans Matlab pour analyser un signal fabriqué dans Simulink. L’import/export vers des
fichiers est aussi disponible mais moins utile pour nous.
Le plus simple est de configurer les blocs de sortie (ceux d’entrée aussi) de façon à ce que les
variables générées soient des variables structurées incluant le temps dans Matlab (« Save
format» : Structure with time). Cela permet aussi récupérer les temps d’échantillonnage.
• Échantillonnage/quantification :
Les blocs utiles
Pour simuler l’échantillonnage et la quantification, on utilise deux blocs fournis par
Simulink.
On peut aussi utiliser le bloc «Pulse Generator» qui permet de générer un peigne de
Dirac, que l’on peut multiplier par un signal quelconque pour simuler
l’échantillonnage. Réaliser trois schémas Simulink illustrant les trois blocs précédents. Le
signal source sera une sinusoïde, dont on précisera la fréquence en Hz.
• T h é o r è m e d e S h an n on :
On se propose d’illustrer le théorème de Shannon. Pour cela, réaliser le schéma Simulink
permettant de générer une sinusoïde avec une fréquence de 1 Hz et d’envoyer le résultat
dans une variable structurée Matlab, en veillant bien à y inclure les temps de
mesure (« Structure with time »).
Exercices
On souhaite simuler un système du premier ordre bouclé avec un retour unitaire et excité
par un échelon.
1. Lancer Matlab
2. Choisir le bon répertoire de travail.
3. Dans matlab taper simulink, une fenêtre Simulink Library Browser apparaît
4. Ouvrir un nouveau modèle.
5. Sélectionner le bloc Step de la famille Sources. Le faire glisser dans la fenêtre ouverte.
6. Répéter l’opération avec un bloc Sum de la famille Math, puis un bloc Transfer Fcn de
la famille Continus et enfin un bloc Scope de la famille Sinks.
7. Relier les blocs par flèches en utilisant le glisser-déplacer de la souris.
8. Pour préciser les paramètres des blocs double-cliquez sur ceux-ci et utiliser les
menus.
9. Pour définir les paramètres de la simulation (durée, méthode d’intégration, etc…),
choisissez Simulation/Simulation Parameters depuis la barre d’outils.
10. Pour lancer la simulation, choisissez Simulation/start depuis la barre d’outils.
1. CONFIGURATIONS :
Les signaux que nous allons analyser sont de 2 types:
- l'information à transmettre de fréquence F mod de l'ordre de 100 Hz (Tmod = 10 ms)
- le signal d’échantillonnage de l'ordre de 1000 Hz (6283 rd/s).
Quatre paramètres sont à configurer
• Période d'échantillonnage de calcul interne par Matlab
Matlab échantillonne ces signaux pour pouvoir faire ses calculs. Il faut que la fréquence
d'échantillonnage soit bien supérieure à celle imposée par Shannon, (soit deux fois la
fréquence de la porteuse à 1000 Hz = 2000 Hz).
On choisit donc une fréquence d'échantillonnage de calcul cent fois plus grande, soit 100
kHz (T = 10 µs). La valeur à rentrer est donc : période d'échantillonnage = 10µs
4. PREPARATION :
Paramétrage de Simulink
Soit un signal sinusoïdal de 1000 Hz.
• Comment choisir la période d'échantillonnage TE du bloc SCOPE afin de bien
représenter ce signal?
• Comment choisir la période d'échantillonnage T E du bloc POWER SPECTRAL
DENSITY afin de bien représenter le spectre de ce signal?
Spectre d'un signal échantillonné
Soit un signal sinusoïdal à 100 Hz. Dessiner son spectre.
On échantillonne ce signal à 1000 Hz. Dessiner le spectre du signal échantillonné entre 0
et 1000Hz. Soit un signal sinusoïdal à 800 Hz. Dessiner son spectre.
On échantillonne ce signal à 1000 Hz. Dessiner le spectre du signal échantillonné entre 0
et 1000Hz.
Pas de quantification
Pour une plage de tension de 2V. La quantification est supposé codée sur 8 bits soit 28
valeurs possibles. Quel est le pas de quantification?
4.1 Echantillonnage :
Montage de base
Ecrire le fichier echant1.mdl qui:
- génère une sinusoïde d'amplitude 1, de fréquence F=100 Hz (bloc Signal Generator)
- échantillonne (Bloc Zero-Order Hold Tech) ce signal avec une fréquence
d'échantillonnage Fech = 1000 Hz.
Ne pas confondre cette fréquence d'échantillonnage avec la fréquence de calcul qui est la
fréquence d'échantillonnage pour les calculs de Matlab !
Calculer les coefficients pour que ce filtre ait un coefficient d'amortissement z = 0,5 et une
fréquence propre ωn = 1/n telle que n soit 10 fois plus petite que TB, durée d’un bit.
• Relever simultanément le signal NRZ émis et le signal reçu bruité, en sortie du canal.
Pour réaliser cette étude fréquentielle avec simulink il suffit d'ajouter le bloc "power spectral
density " au schéma obtenu auparavant. Afin de placer le spectre au milieu de la fenêtre régler
le paramètre "sample time".
A partir de votre schéma, créer un sous-système sous le nom du modulateur AM.
2. Démodulation d'amplitude :
• 1ère étape :
On commence à ajouter les deux blocs « product » et le signal « generator » au sous-système de
la modulation AM obtenu précédemment. Ensuite lancer la simulation.
• 2éme étape :
Le filtrage passe-bas qu’on veut réaliser permet d’éliminer les fréquences supérieures à fm.
Pour ce faire, on va aller dans le répertoire DSP blockset/Filtering/Filter Designs et on va
choisir Analog Filter Design. Ensuite, on choisit les paramètres de ce filtre avec une fréquence
de coupure comprise entre fm et 2fp-fm c'est-à-dire entre 1 et 19 HZ. Dans ce cas on va choisir
par exemple 5HZ c'est-à-dire 5*2*pi en rad/s.
• 3éme étape:
Le signal porteur initial est, comme dans le cas de AM, Up(t)= Ap .cos(2πfpt+Фp) ) mais ici c'est
Фp et non Ap qui va être modifiée par le signal informatif Um (t) = Am
.cos(2.π.fm.t).
Les résultats de la modulation par la méthode de Bessel dans le cas de la modulation à large
bande (démontré dans la partie théorique), nous donne : s(t) = ∑ApJk(m)
cos[2π (fp +kfm)t]
5. La démodulation de fréquence :
1. SIGNAUX DETERMINISTES :
Sur l’exemple ci-dessous, on trouve des blocs qui représentent chacun une fonction. Le
bloc « sine wave » par exemple est un générateur sinusoïdal que l’on va pouvoir visualiser a l’aide
du bloc « scope » qui simule un oscilloscope.
Le bloc « clock » sera le temps qui est l’entrée du système. Les deux blocs clock et Fcn forment le
générateur du signal x(t).
2. SIGNAUX DISCRETS :
Pour obtenir un signal discret, il faut faire un échantillonnage du signal correspondant. A l’aide
d’un bloc « bloqueur d’ordre zéro » ( Simulink / Discrete ) on peut effectuer l’échantillonnage du
signal.
Q4) Vérifier cette remarque à l’aide de MatLab en utilisant « length(x) » et en mettant dans
simulink le bloc « To WorkSpace » (paramètres : « Save Format : Array »).
3. ANALYSE SPECTRALE :
Le spectre du signal x(t) est constitué de raies spectrales aux fréquences : n*f0. f0 est appelée
fréquence fondamentale et les fréquences n*f0 sont appelées harmoniques.
Q6) Retrouver les résultats de l’analyse spectral en utilisant des fonctions Matlab (fft). Aidez vous
du menu help de MatLab.
4. FILTRAGE DE SIGNAUX :
Q7) Filtre RII
h(n) comme la réponse impulsionnelle du filtre numérique
b) Ecrire un programme sous MatLab qui réalise ce filtrage (on utilisera le signal x(n) défini par
simulink). Vérifier les valeurs obtenues.
c) Calculer la FFT du filtre (l’inclure dans le programme).
d) Appliquer ce filtre au spectre (a calculer) du signal de la question Q2).
5. DECOUVERTE DE SPTOOL :
5.1 Manipulations :
- Sous la fenêtre de commande Matlab, tapez sptool pour lancer sptool.
- De la fenêtre de dialogue de Sptool vous allez pouvoir importer et/ou exporter des données
depuis/vers des fichiers ou la fenêtre de commande de matlab.
- Avec Sptool, vous allez pouvoir interactivement créer des filtres numériques, visualiser leurs
différentes réponses et visualisez des signaux et des spectres.
On se base sur la synthèse d'un filtre (RII) passe-bas avec une bande atténuée à 40 dB à partir de
5Hz et une fréquence d'échantillonnage à 40 Hz.
5.5 Filtrage :
• Dans la fenêtre SPTool, sélectionnez le signal ‘y‘ ainsi que le filtre de Butterworth, puis
5.7 Export :
Vous pouvez renvoyer sous la fenêtre de commande de matlab ce que vous avez créé sous la
fenêtre SPTool avec 'File / Export'. Cette commande crée dans la fenêtre de commande une
variable du nom de l'objet exporté.
Cette variable est une structure. Tapez son nom suivi de 'enter', vous verrez la liste des champs
de la structure apparaître.
Par exemple pour un filtre appelé B. En tapant B.tf.num, vous accédez au numérateur de la
fonction de transfert en Z, B.tf.den et c'est le dénominateur ...
COMPTES RENDU
Le(s) étudiant(s) :
LE Professeur
1. .. Mr: Mustapha ABARKAN
2. ..
Traitement du signal
Travaux pratiques N° 1
Introduction à MATLAB
Le but du TP :
……………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………
Manipulation 1 [Exercice 1]: Lancement d'exécution de MATLAB
……………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
…………
Préparations et configurations:
………………………………………………………………………………………………………………………………………………………………
…………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………
…………
………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
…………
Résultats d'exécution :
………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
Préparations et configurations:
………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………
Résultats d'exécution :
………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………
Conclusions TP 1
……………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………
TP ANNEXES 07
RESUME DES COMMANDES MATLAB
auread lit un fichier audio au format SUN ensère les arguments de sortie des fonctions
auwrite écritit un fichier audio au format SUN () gère la priorité des opérations arithmétique
lin2mu conversion loi linéaire vers loi m ensère les arguments d'entrée des fonctions
mu2lin conversion loi µ vers loi linéaire . point décimal
.. directory parent
Variables prédéfinies ... indique une ligne suite
réponse à une expression sans , séparateur d'arguments ou d'instructions
ans
assignation
fin de lignes (matrices) ou suppression de
eps précision de la virgule flottante ;
l'affichage
realmax plus grand nombre flottant % commentaires
realmin plus petit nombre flottant positif manipulation de sous matrices ou génèration
:
pi p de vecteurs
i, j [ (-1)] ! appel au système
inf
NaN Not a Number Matrices prédéfinies
nombre d'opérations flottantes par zeros matice de 0
flops
seconde ones matrice de 1
nombre d'arguments d'entrée d'une eye matrice identité
nargin
fonction diag matrice diagonale
nombre d'arguments de sortie d'une toeplitz matrice de Toeplitz
nargout
fonction
magic carré magique
computer type du calculateur
compan matrice compagnon
linspace vecteurs linéairement espacés
Manipulation de Matrices
logspace vecteurs logarithmiquement espacés
diag création ou extraction de la diagonale
meshgrid grille pour les graphiques 3D
rot90 rotation de 90°
nombres aléatoires à répartition
fliplr retournement gauche-droit rand
uniforme
flipud retournement haut-bas
nombres aléatoires à répartition
reshape redimensionnement randn
normale
tril partie triangulaire inférieure hilb Hilbert
triu partie triangulaire supérieure invhilb inverse de Hilbert (exact)
.' transposition vander Vandermonde
: conversion matrice vecteur pascal Pascal
hadamard Hadamard
hankel Hankel
matrice test pour le calcul des
rosser
valeurs propres
matrice test pour le calcul des
wilkinson
valeurs propres
gallery deux matrices test spéciales
isinf vrai pour tout élément infini break interrompt une boucle for ou while
finite vrai pour tout élément fini return retour
vrai si la représentation est au format affiche un message et interrompt
isieee error
IEEE l'exécution
isempty vrai pour une matrice vide
issparse vrai pour une matrice creuse Instructions spécifiques
isstr vrai pour une chaîne de caractères input indicateur d'attente d'entrée
strcmp comparaison de deux chaînes considère le clavier comme un fichier
keyboard
script
évalue une chaîne contenant du code exécute une fonction définie dans une
eval feval
MATLAB chaîne
num2str convertit un nombre en chaîne global définit les variables comme globales
int2str convertit un nombre entier en chaîne nargchk valide le nombre d'arguments d'entrée
Objets 3D
sphere génération de sphères
cylinder génération de cylindres
peaks démonstration