Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Filière : SMP
Pr. Y. El merabet
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --
TP de Traitement du signal.
Séance 1 : Premiers contacts avec MatLab
Introduction
a. Contexte
b. Objectifs pratiques
Les objectifs sont triples : rafraîchir et consolider les connaissances acquises en cours,
découvrir et assimiler les commandes usuelles de MatLab et le fonctionnement de
MatLab Help, et mettre en application l’ensemble de ces savoirs et savoir-faire via la
réalisation de premiers programmes en vue des futures TP.
Calcul matriciel et non calcul formel : inutile de demander à MatLab de calculer une
dérivée ! MatLab est un outil performant de calcul numérique, qui permet de résoudre des
problèmes d’analyse matricielle, d’approximation de solutions d’équations différentielles,
de statistiques et de fouille de données, de traitement du signal numérique, ou encore
d’optimisation numérique. Pour des calculs mathématiques formels (comme la résolution
exacte d’ED, le calcul d’intégrales, etc…), l’utilisateur devra se reporter à d’autres
logiciels…ou encore aux services d’un mathématicien !
Insistons sur Help : le menu et la commande help : l’aide de MatLab est munie d’un
moteur de recherche très pratique, et s’avère bien souvent être un recours précieux pour se
sortir des mauvaises passes, mais aussi pour découvrir de nouvelles fonctionnalités. Une
utilisation intelligente de cet outil peut permettre de renforcer très rapidement ses
connaissances en MatLab et mener à la réalisation de programmes au-delà de ses
espérances.
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --
>> v(1 :2 :5) accès aux éléments qui vont de 1 `a 5, mais en incrémentant avec un pas
de 2, le vecteur (11 33 55) est retourné
Il est possible, pour finir, de définir les matrices par blocs, tester les commandes
suivantes :
>> B=[eye(3) eye(3) ;ones(3) zeros(3) ;]
>> B=[[eye(3) ones(3)]’ [eye(3) zeros(3)]’] (...en utilisant les colonnes)
>> B=[[eye(3) ; ones(3)] [eye(3) ;zeros(3)]]
>>inv(A) calcule l’inverse de A.
>>det(A) calcule le déterminant de A.
>>diag(A) retourne la diagonale.
Graphes et dessins
Il est facile d’effectuer diverses représentations graphiques avec Matlab, en 2d aussi bien
qu’en 3d. En tapant
>> help plot
>> demo
>> helpwin
Exemple : afficher la fonction x sin(x) dans l’intervalle [0 : 10], il suffit d’écrire
>> xlabel(’x’) 0
>> ylabel(’y’) -2
-6
0 1 2 3 4 5 6 7 8 9 10
x
0 0
>> plot(x,cos(x),'r') %courbe en rouge -0.2 -0.2
-0.4 -0.4
-0.6 -0.6
-0.8 -0.8
-1 -1
0 5 10 0 5 10
Les fonctions :
Toute fonction devra être déclarée à la première ligne du fichier en respectant la typologie
suivante : « ‘function’ » suivi du vecteur de sortie « [sortie1, sortie2] » « ‘=’ » «
nomdelafonction » « (entrée1, entrée2, entrée3) ».
function [s,p]=somme_produit(x,y)
s=x+y ;
p=x*y;
On notera le “ ;” pour éviter que Matlab nous affiche ce qu’il calcule dans la fonction.
On accédera ensuite aux valeurs de cette fonction dans la fenêtre principale de Matlab par
>> [s,p]=som_pro(1,2)
Instructions conditionnelles if
if condition logique
instructions
elseif condition logique
instructions
...
else
instructions
end
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --
Boucles for
Boucles while
2. Exercices
b. Soit la fonction x (t) = sin (2*pi*50*t) +sin (2*pi*120*t) définie sur [0,0.6]. On
définit le vecteur des temps de la manière suivante : t = 0:0.001:0.6; Représenter x
en fonction de t en apportant tout le soin nécessaire à la présentation du graphique
(axes, titre, etc.…).
0.5
-0.5
-10 -8 -6 -4 -2 0 2 4 6 8 10
n
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --
f(n) = 1 si n ≥ 0 et 0 sinon. .
(utiliser les fonctions stem ,
zeros et ones) 1
Amplitude
0.5
-0.5
-10 -8 -6 -4 -2 0 2 4 6 8 10
n
0.7
Rect(n) =0 si n appartient à
{P+1,…,N}ou {-N,…,-P-1} 0.6
Amplitude
P,…,P} 0.4
0.1
0
-10 -8 -6 -4 -2 0 2 4 6 8 10
n
rampe : r (t ) = at ,t > 0 , ( a = 1, 20
rampe unité) 18
16
14
12
10
0
0 1 2 3 4 5 6 7 8 9 10
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --
0.4
exp(-t).*sin(2*pi*t)
0.2
-0.2
-0.4
-0.6
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
temps seconde
TP de Traitement du signal.
Séance 2 : Les Séries et Transformée de Fourier
Avec :
N = 2000;
1
t = [0:0.01:1];
0.9
f0=1;
0.8
a0=0;
f=a0; 0.7
b = 2/pi/i; 0.5
f = f+ b*sin(2*pi*i*f0*t); 0.4
end 0.3
plot(t,f);
0.2
0.1
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Rappel : La description de x(t) avec les fonctions cosinusoïdales conduit aux spectres
unilatéraux d'amplitudes et de phases (Ak et αk) du signal x(t). Ici, les fréquences sont
positives ou nulles car le compteur k des harmoniques varie de 0 à +∞.
La description de x(t) avec les fonctions complexes conduit aux spectres bilatéraux
d'amplitudes et de phases. Ici, les fréquences sont négatives et positives car le compteur k
varie de -∞ à +∞.
Il est demandé d’écrire des programmes Matlab permettant de tracer les spectres des
signaux suivants :
% sinus amorti
dt=0.01; 1
t = 0: dt :10; A = 1.0
a = 0.25; 0.5 fp = 4.0
a = 0.25
y(t)
0
Tp = 0.25;
fp = 1/Tp; -0.5
xt = exp(-a*t).*sin(2*pi*fp*t); -1
0 1 2 3 4 5 6 7 8 9 10
temps
figure;
subplot(2,1,1);
2
plot(t,xt); 1.5
|Y(jf))|
xlabel('temps'); ylabel('y(t)');
1
text(8,0.75, 'A = 1.0');
text(8,0.50,['fp = ' num2str(1/Tp,2) '.0']); 0.5
text(8,0.25,['a = ' num2str(a,2)]);
0
-10 -5 0 5 10
df=0.025; fréquence
ff = -12:df :12;
Xjf = (2*pi*fp)./((a+j*2*pi*ff).^2+(2*pi*fp)^2);
subplot(2,1,2);
plot(ff,abs(Xjf));
axis([-12 12 0 2.2]);
xlabel('fréquence'); ylabel('|Y(jf))|');
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --
a. Montrer que y(t) n’est autre que la multiplication de deux signaux connus x1(t) et
x2(t) dont on précisera tout les paramètres
b. Ecrire un programme Matlab permettant de tracer séparément les signaux x1, x2 et y
c. Déterminer l’expression des spectres des signaux x1 et x2
d. Tracer grâce à Matlab les spectres de ces deux signaux
e. Tracer le spectre du signal y. le résultat trouvé est il attendu ?
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --
TP de Traitement du signal.
Séance 3 : Echantillonnage, Reconstruction,
Transformée de Fourier et Filtrage
Dans la réalité, les capteurs prélèvent un signal analogique. On numérise ensuite le signal de façon à le
traiter ou de l’envoyer plus facilement. Enfin, la dernière étape consiste à renvoyer le signal en
analogique dans la chaîne de traitement.
B. Objectifs pratiques
Dans cette 1ère partie du TP, la pratique de l’échantillonnage idéal et réel sera détaillée. Puis, une fois
l’échantillonnage réalisé, on reconstruira le signal avec la méthode de l’extrapolation d’ordre 0.
x(t) = f0*sinc(π*f0*t).
Le programme ci-dessous donne la définition de cette fonction sinc. Il est demandé de représenter la
fonction x(t) sur l’intervalle [-2,2]
Avec Matlab, l’échantillonnage idéal est réalisé par le choix de la variable t (le « pas »). Il est à noter
que Matlab ne peut pas créer & travailler avec des signaux continus : nous sommes donc obligés de
discrétiser le domaine temporel t pour générer x(t). Le signal x(t) est donc déjà échantillonné
idéalement. Mais cela ne se « voit » pas car le pas est très fin.
La reconstruction consiste à établir un signal analogique continu à partir d’un signal numérique discret.
Le problème est de trouver les valeurs manquantes entre deux valeurs connues : on pratique
l’extrapolation.
Dans ce Tp, on propose d’utiliser la reconstruction par extrapolation d’ordre 0 du signal x(t) à partir du
signal échantillonné en fonction de Fe.
L’objectif de cette deuxième partie du TP est de mettre en application les connaissances acquises sur la
Transformée de Fourier Discrète et le filtrage.
Dans cette partie, on se propose d’étudier le filtrage idéal d’un signal porte.
Faculté des Sciences Université Ibn Tofail -- 2014/2015 --
Avec
La réponse à la question b) correspond à la création d’un filtre « passe bas », i.e, une fonction qui ne
laisse passer que les basses fréquences. On peut ainsi définir la fréquence de coupure de ce filtre qui
correspond à la fréquence minimum laissant « passer » le signal. On peut donc définir le filtre passe bas
suivant :
Avec :
H(f) est un passe-bas idéal de fréquence de coupure fc= 2/T = 2/5 = 0.4 Hz
a. Calculer et tracer la TFD de la fonction porte (Ne pas oublier d’appliquer un traitement pour
remplacer les valeurs négatives)
b. Commenter la courbe obtenue par rapport au TP précédent et essayer de conclure sur la
fonction TFD d’une fonction porte.