0% ont trouvé ce document utile (0 vote)
103 vues24 pages

Rapport TP Matlab

Le document présente des travaux pratiques sur MATLAB dans le cadre du génie mécatronique, axés sur le traitement du signal. Il couvre divers exercices, tels que la génération de signaux, la convolution, la synthèse de Fourier, et l'analyse des réponses impulsionnelles finies (RIF). Les étudiants apprennent à utiliser des fonctions MATLAB pour manipuler et analyser des signaux numériques, ainsi qu'à appliquer des concepts théoriques en pratique.

Transféré par

hananegnadi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
103 vues24 pages

Rapport TP Matlab

Le document présente des travaux pratiques sur MATLAB dans le cadre du génie mécatronique, axés sur le traitement du signal. Il couvre divers exercices, tels que la génération de signaux, la convolution, la synthèse de Fourier, et l'analyse des réponses impulsionnelles finies (RIF). Les étudiants apprennent à utiliser des fonctions MATLAB pour manipuler et analyser des signaux numériques, ainsi qu'à appliquer des concepts théoriques en pratique.

Transféré par

hananegnadi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Filière Ingénieur : Génie Mécatronique &

Systèmes intelligents
Travaux pratiques sous
Matlab

Encadré par : M. Ben Alla


Réalisé par : Gnadi Hanane
Introduction
MATLAB (Matrix Laboratory) est un environnement de programmation
puissant largement utilisé pour le traitement du signal et les applications
connexes. Conçu pour le calcul scientifique et l'analyse des données, MATLAB
propose une riche collection d'outils et de fonctions spécialement dédiées à
l’analyse, la transformation et la manipulation des signaux numériques. Il est
devenu un choix privilégié pour les chercheurs, les ingénieurs et les
développeurs dans ce domaine.
Le traitement de signal dans MATLAB repose sur des fonctionnalités avancées,
telles que :
 Acquisition et manipulation des signaux : Importer des signaux à partir
de diverses sources, les visualiser et les prétraiter pour une analyse
ultérieure.
 Filtrage et suppression du bruit : Appliquer des filtres passe-bas, passe-
haut, ou adaptatifs pour améliorer la qualité des signaux.
 Analyse fréquentielle : Effectuer des transformations comme la FFT
(Transformée de Fourier rapide) pour explorer le contenu spectral des
signaux.
 Modulation et démodulation : Simuler et analyser des systèmes de
télécommunication pour le traitement de signaux modulés.
 Analyse temporelle et transformation : Étudier les propriétés des
signaux dans le domaine temporel et appliquer des transformations
avancées comme la transformée de ondelettes.
Traitement de signal : TP 1 sous Matlab

Exercice 1 : Généralisations des signaux


1) Ecrire un programme
Matlab permettant de
générer:
1) a-l'impulsion de Dirac :
x=0:0.01:4*pi;

y=2*sin(x);

plot(x,y,'r','Linewidth',3);

grid on;

title('La fonction y=2*sin(x)');

xlabel('x');

ylabel('sin(x)');

legend('y=sin(x)');

axis([0 4*pi -2.5 2,5])

b-impulsion de Dirac retarder


t=-10:10;

dirac=t==-2; %decalage de 2

figure;

subplot(3,2,1);

stem(t,dirac,'Linewidth',3);

title('Dirac decalé');

2) Echelon unitaire
t=-10:0.01:10;

echelon=t>=0;

subplot(3,2,2);

plot(t,echelon,'Linewidth',3);

title('Echlon unitaire');

3) Fonction Expo(-0.2*t). u(t)


% la fonction expentielle

subplot(3,2,3);

t=-10:0.01:10;

expon=exp(-0.2*t).*echelon;

plot(t,expon,'Linewidth',3);

4 ) Impulsion rectangulaire de durée


T=0,08s et A=2V
% impulsion rectangulaire

t=-10:0.01:10;

T=0.08;

A=2;

impl_rec=A*(t>=-T/2 & t<=T/2);

subplot(3,2,4);

plot(t,impl_rec,'Linewidth',3);

axis([-0.5 0.5 0 2]);

title('impulsion rectangulaire')

5) Impulsion triangulaire de durée


T=0,04s et A=3V
%impulsion triangulaire

t=-10:0.01:10;
T=0.08;

A=2;

impl_rec=A*tripuls(t,T);

subplot(3,2,5);

plot(t,impl_rec,'Linewidth',3);

axis([-0.5 0.5 0 2])

6) Le signal de sinus :
%sin cardinal

t=-10:0.01:10;

sin_car=sinc(t);

subplot(3,2,6);

plot(t,sin_car,'Linewidth',3);

axis([-10 10 -1 1]);

Exercice 2 : Convolution et Corrélation


clear all;

close all;

clc;

t=linspace(-1,1,100);

y1=rectpuls(t,1);

y2=tripuls(t,0.5,-1);

subplot(2,2,1);

plot(t,y1,'color','blue','Linewidth',3);

axis([-1 1 -0.2 1.1]);

grid on;

xlabel('t');

ylabel('y1(t)');

title('signal rectangulaire')
subplot(2,2,2)

plot(t,y2,'color','blue','Linewidth',3);

axis([-1 1 -0.2 1.1]);

grid on;

xlabel('t');

ylabel('y2(t)');

title('signal triangulaire ');

%convolution

convolution=conv(y1,y2,'same');

correlation=xcorr(y1,y2);

subplot(2,2,3);

plot(t,convolution,'color','red','Linewidth',3);

grid on;

xlabel('Amplitude');

title('produit de convolution')

subplot(2,2,4);

plot(correlation,'color','red','Linewidth',3);

grid on;

xlabel('t')

ylabel('amplitude');
title('produit de correlation')

Exercice 3 :Synthèse d’un signal sinusoïdal


clear all; close all; clc;

% 1) representer le signal x(t)

t=linspace(0,200);

T0=100

f0=1/T0;

A=10;

x=A*sin(2*pi*f0*t);

subplot(3,1,1)

plot(t,x,'Linewidth',3);

%2)echantilloner x(t)

te=linspace(0,200,200);% 1hz

xe=A*sin(2*pi*f0*te);

subplot(3,1,2)

%plot(t,x,'.','Linewidth',3)

stem(te,xe,'Linewidth',3);
Fe=0.05;

te2=0:1/Fe:200;%1hz

xe=A*sin(2*pi*f0*te2);

subplot(3,1,3)

plot(te2,xe,'Linewidth',3)

Exercice 4 : Synthèse de Fourier


clc; close all; clear all;

t=linspace(-4,4,1000);

T0=2; %2S

A=2;%2VOLTS

x=rectpuls(t,T0);

subplot(2,1,1)

plot(t,x,'Linewidth',3)

% serie de fourier

subplot(2,1,2)

F0=2; %valeur moyenne

n=input('donner le nombre Harmonique:')

f0=1/T0; % FREQUENCE FONDAMENTALE

somme=0;

for i=1:n

f=(F0/2)+sinc(i/2)*cos(i*2*pi*f0*t);
somme=f+somme;

plot(t,somme,'Linewidth',3)

title(['Nombre Harmonique est :',num2str(i)]);

pause(1);

end

pour n=6 :
pour n =50 :

Travail à faire : Convolution/Intercorrélation/Autocorrélation


close all; clear all; clc;

t=-30:0.01:30;

A1=2 ;

y1=A1*rectpuls(t,20);
subplot(3,2,1)

plot(t,y1,'LineWidth',1,'color','blue’) ;

grid,

xlabel('temps') ;

ylabel('ampli') ;

title('y1') ;

A2=3;

y2=A2*rectpuls(t,40) ;

subplot(3,2,2)

plot(t,y2,'LineWidth',2,'color','green') ;

grid,

xlabel('temps');

ylabel('ampli') ;

title('y2') ;

%calcule de convolution

res_conv=conv(y1,y2);

res_corr=xcorr(y1,y2);

subplot(3,2,3:4)

plot(res_conv,'LineWidth',2,'color','red') ;

grid ;

xlabel('temps') ;

ylabel('ampli');

title('convolution ');

subplot(3,2,5:6)

plot(res_corr,'LineWidth',3,'color','black');

grid,xlabel('temps');

ylabel('ampli');

title('intercorrelation');
Traitement de signal : TP 2 sous Matlab
Exercice 1 : Transformee de Fourier
clc;close all ;clear all;

A=5; %amplitude

f0=10; %10hz

fe=1000; %frequence echantillonage

t=0:1/fe:1; %linspace(0,1,fe)

x=A*plot(2*pi*f0*t);

subplot(3,1,1)

plot(t,x,'Linewidth',3);

%transformé de fourier

f=linspace(-fe/2,fe/2,length(t));

TFx=fftshift(fft(x))/fe;
subplot(3,1,2);

stem(f,TFx,'Linewidth',3);

axis([-20 20 -1 6]);

%trans de fourier inverse

TFxinv=ifft(ifftshift(TFx))*fe;

subplot(3,1,3)

plot(t,TFxinv,'Linewidth',3);

Exercice 2 : Filtrage linéaire


clc; clear all; close all;

fe=1000 ; f0=10; te=1/fe; t=0:te:1;

x=cos(2*pi*f0*t);

subplot(3,1,1)

plot(t,x,'Linewidth',3)

title('signal original')

%ajouter un bruit gaussien

variance =0.3;

bruit=sqrt(variance).*randn(size(t));

x_bruit=x+bruit;

subplot(3,1,2)

plot(t,x_bruit,'Linewidt',3)

title('signal original+bruit')

%Filtage du signal bruité


ordre=6;

fn=fe/2;%freq de Nyquist

fc=30;

[b,a]=butter(ordre,fc/fn);

x_filtre=filter(b,a,x_bruit);

subplot(3,1,3)

plot(t,x_filtre,'Linewidth',3);

title('signal filtre');

figure;

fft_bruite=abs(fft(x_bruit));

f= linspace(0,fn,length(t)/2);

plot(f,fft_bruite(1:length(f)))

title('spectre de frequence duu signal bruité')

xlabel('frequence (hz)');

ylabel('Amplitude')

grid on;

Exercice 3 : Codage PCM


clc,clear all;close all

A=2;

f0=2;

fe=20*f0;

t=0:1/fe:1;

x=A*cos(2*pi*f0*t);

subplot(3,1,1)

plot(t,x,'Linewidth',3)

title('signal sinusoidal')

xlabel('tempps(s)');

ylabel('Amplitude');

subplot(3,1,2)

stem(t,x,'Linewidth',3)

title('signal sinusoidal')
xlabel('tempps(s)');

ylabel('Amplitude');

hold on;

plot(t,x,'-')

hold off;

%quantification

subplot(3,1,3)

n=3;

x=x+A;

xn=x/(2*A);

Level=-1+2^n;% nombre de niveaux

x=xn*Level;

xr=round(x);

%plot(t,xn,'Linewidth',3)

stem(t,x,'Linewidth',3)

hold on;

stem(t,xr,'Linewidth',3)

legend('signal quantifié','signal quantifié arroundi')

hold off;

%codage en binaire

y=[];% matrice vide

for i=1:length(xr)

d=de2bi(xr(i),3,'left-msb');

y=[y d];

end

figure(2)

stairs(y,'Linewidth',3);

axis([0 length(y) -1 2]);

%Reconstruction de signal (CNA)

figure(3)

s=bi2de(reshape(y,n,length(y)/n)','left-msb');

s=s/Level;
s=s*(2*A);

s=s-A;

plot(s);

hold on

x=A*cos(2*pi*f0*t);

plot(x);

Travail à faire : Transformée de Fourier


clear all; close all; clc;

A=5; f0=10; f1=20; f2=25; fe=1000;

t=0:1/fe:1; % definition de l'axe temporel

y=A*cos(2*pi*f0*t)+10*cos(2*pi*f1*t)+10*cos(2*pi*f2*t);

subplot(3,1,1)

plot(t,y,'LineWidth',3),xlabel('temps','FontSize',15,'color','green'),ylabel('Amplitude','FontSize',15) ;

title('signal origine')

%%TF du signal origine

% %definir l'axe frequentielle

f=linspace(-fe/2,fe/2,length(t));

Y=fftshift(fft(y/fe));

subplot(3,1,2)

stem(f,Y,'LineWidth',3)

axis([-25 25 -1 4])

% %%TF inverse

y_inv=ifft(ifftshift(Y)*fe);
subplot(3,1,3)

plot(t,y_inv,'LineWidth',3)

axis ([0 1 -20 30])

Travail à rendre : Réaliser le codage PCM en utilisant Simulink


Traitement de signal : TP 3 sous Matlab
Partie 1 : analyse de RIF
L'analyse des Réponses Impulsionnelles Finies (RIF) est une étape cruciale
dans le domaine du traitement du signal, particulièrement pour la conception
et l'étude des filtres numériques. Un filtre RIF est caractérisé par une réponse
impulsionnelle de durée finie, ce qui signifie que sa sortie devient nulle après
un certain nombre d’échantillons en réponse à une impulsion unitaire. Les
filtres RIF présentent plusieurs avantages, notamment leur stabilité
inconditionnelle, car ils ne contiennent que des pôles à l'origine.
1) Définir les vecteurs a et b comprenant les paramètres, respectivement,
récursive et non récursive du filtre.
y(n) = 1,19*y(n-1) - 0,5*y(n-2) + 0,08*x(n) + 0,16*x(n-1) + 0,08*x(n-2) En
appliquant la transformee en z, on trouve
Y(z) = 1,19*z^(-1)*Y(z) - 0,5*z^(-2)*Y(z) + 0,08*X(z) + 0,16*z^(-1)*X(z) +
0,08*z^(-2)*X(z) On sait bien
que H(z)=Y(z)/X(z), Donc H(z) =
(0,08 + 0,16*z^(-1) + 0,08*z^(-
2)) / (1 - 1,19*z^(-1) + 0,5*z^(-
2)) Les coefficients de la
fonction de transfert H(z)
peuvent être extraits pour
déterminer les vecteurs a et b :
a = [1, -1.19, 0.5]
b = [0.08, 0.16, 0.08]
close all; clear all; clc;

b=[0.08 0.16 0.08];

a=[1 -1.19 0.5];

zero=roots(b)

disp('les zeros sont');

disp(zero)

poles=roots(a);

disp('les poles sont');

disp(poles)

zplane(b,a);

figure (1)
FIGURE 1

%la reponse impulsionnelle


dirac--h(n)
figure (2)

N=32;%nombre de points longueur

n=0:N-1;

dirac=[1,zeros(1,(N-1))];
subplot(2,1,1)

stem(n,dirac,'LineWidth',3)

h=filter(b,a,dirac);

subplot(2,1,2)

stem(n,h,'LineWidth',3)

%la reponse indicielle echelon--


reponse ind
FIGURE 2

figure(3)

N=32;

rep_ind=ones([1,N]);

subplot(2,1,1)

stem(n,rep_ind,'LineWidth',3)

title('Echelon')

h_ind=filter(b,a,rep_ind);

subplot(2,1,2)

stem(n,h_ind,'LineWidth',3)

title('la reponse indicielle')

%la reponse frequentielle

longueur=256;
FIGURE 3

fe=1;

[H,f]=freqz(b,a,longueur,fe);%permet de
retourner le H et l'axe f

figure(4)

subplot(3,1,1)

plot(f,abs(H),'LineWidth',3)

title('le module de H(f)')

subplot(3,1,2)

plot(f,angle(H),'LineWidth',3)

title('la phase de H(f)')

%le retard de groupe


[retard,f]=grpdelay(b,a,longueur)

subplot(3,1,3)

plot(f,retard,'LineWidth',3)

title('le retard de groupe')

FIGURE 4

3-Étudier la stabilité du filtre :


Le filtre est stable car tous les pôles sont situés à l'intérieur du cercle unité dans
le plan z.

4- Rôle du filtre :
Le rôle du filtre dépend de sa conception. En général, ce filtre semble être un
filtre numérique RII (Réponse Impulsionnelle Infinie) avec des coefficients
spécifiques.c’est un filtre passe-bas.

5- Changer la valeur de b pour avoir un filtre passe-haut :


b= [0.08 -0.16 0.08]

6- Modifier les valeurs de a pour avoir une réponse impulsionnelle


divergente :
Pour avoir une réponse impulsionnelle divergente, il faut ajuster sur les
coefficients de manière à ce que les pôles soient situés à l'extérieur du cercle
unité. Cependant cela renderait le filtre instable.

Partie 2 :Analyse d'un filtre numérique RIF


Questions :
Considérons un filtre, dont les conditions initiales sont nulles, défini par
l'équation récurrente suivante :
y(n)=0.5 x(n)-0.5 x(n-1)
1) Déterminer h(n), les pôles et zéros et esquisser H(f). Vérifier ces réponses
par Matlab.
Pour un filtre défini par l’équation récurrente y(n) = 0.5*x(n) - 0.5*x(n-1), la
réponse impulsionnelle h(n) est simplement les coefficients du filtre
appliqués à une impulsion de dirac
h(n)=0.5 *ẟ(n)-0.5 *ẟ(n-1)
-Les pôles sont : 0
-Les zeros sont :1
-La réponse impulsionnelle H(f) est la transformée de Fourier de h(n)
On a TF(ẟ(n-1))=exp(-2*pi*j*f)
Ce qui implique :
H(f)= 0.5(1-exp(-2*pi*j*f))
% Définition des paramètres

n = 0:10; % Index temporel pour la réponse impulsionnelle

delta = [1, zeros(1, 10)]; % Impulsion de Dirac ?(n)

% Calcul de la réponse impulsionnelle h(n)

h = 0.5 * delta - 0.5 * [0, delta(1:end-1)]; % h(n) = 0.5*?(n) - 0.5*?(n-1)

% Affichage de la réponse impulsionnelle

figure;

stem(n, h, 'filled');

title('Réponse impulsionnelle h(n)');

xlabel('n');

ylabel('h(n)');

grid on;

% Calcul de la réponse en fréquence H(f)

f = linspace(-0.5, 0.5, 1000); % Fréquence normalisée (-0.5 à 0.5)

H = 0.5 * (1 - exp(-1j * 2 * pi * f)); % H(f) = 0.5 * (1 - exp(-2*pi*j*f))

% Affichage du module de la réponse en fréquence

figure;

plot(f, abs(H));

title('Réponse en fréquence |H(f)|');


xlabel('Fréquence normalisée f');

ylabel('|H(f)|');

grid on;

% Diagramme des pôles et zéros

figure;

zplane([0.5, -0.5], [1]); % Zéros : [0.5, -0.5], Pôles : [1]

title('Diagramme des pôles et des zéros');

grid on;

Pôle et Zéros

Réponse impulsionnelle h(n) :


Réponse fréquentielle :

2. Le filtre est stable car il n’a pas de pôles.


3. Programme qui affiche un signal compose de deux signaux
sinusoïdes de fréquence 0.1 et 0.4 puis observer le signal avant et
après filtrage :
close all; clear all; clc;

b = [0.08 0.16 0.08];

b = [0.08 -0.16 0.08]; %POUR ETRE PASSE HAUTE

a = [1 -1.19 1.5];% POUR ET RE PAS STABLE

% Définir une plage de valeurs pour t

t = 0:0.01:10;

% Calculer le signal

x = sin(2*pi*0.1*t) + sin(2*pi*0.4*t);

% Filtrer le signal

y = filter(b,a,x);

% Afficher le signal avant et après filtrage

figure;

subplot(2,1,1);

plot(t,x,'LineWidth',2,'Color','red');

title('Signal avant filtrage');


xlabel('Temps (s)');

ylabel('Amplitude');

subplot(2,1,2);

plot(t, y,'LineWidth',2,'Color','green');

title('Signal après filtrage');

xlabel('Temps (s)');

ylabel('Amplitude');

Vous aimerez peut-être aussi