0% ont trouvé ce document utile (0 vote)
3 vues7 pages

Analyse de signaux et transformées MATLAB

Le document présente un script Matlab pour tracer des signaux, effectuer des transformations de Fourier, et réaliser des convolutions. Il aborde des concepts tels que les signaux carrés, les séries de Fourier, et la création d'échos à partir de signaux. De plus, il inclut des exercices pratiques pour illustrer les différentes techniques de traitement du signal.

Transféré par

mosaidlamya
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 PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues7 pages

Analyse de signaux et transformées MATLAB

Le document présente un script Matlab pour tracer des signaux, effectuer des transformations de Fourier, et réaliser des convolutions. Il aborde des concepts tels que les signaux carrés, les séries de Fourier, et la création d'échos à partir de signaux. De plus, il inclut des exercices pratiques pour illustrer les différentes techniques de traitement du signal.

Transféré par

mosaidlamya
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 PDF, TXT ou lisez en ligne sur Scribd

% Tracer le signal cr?neau pair de fr?

quence f = 1/T avec T = 1s, entre 0 et 2


avec un pas de
% T/300 par la commande square.
T=1;
f=1/T;
t=0:T/300:2;
y=square(2*pi*f*t);
figure(1);
plot(t,y)
% Tracer le signal s(t) = sin 1 4 4 4 ? ?? t + sin 3? t + sin 5? t cas o?
s1=(4/pi)*sin(1*2*pi*f*t)
figure(2);
plot(t,y,'b',t,s1,'r')
s2=s1+(4/(3*pi))*sin(3*2*pi*f*t)
figure(3)
plot(t,y,'b',t,s2,'r')
s3=s2+(4/(5*pi))*sin(5*2*pi*f*t)
figure(4)
plot(t,y,'b',t,s3,'r')
% Tracer le signal cr?neau pair par l?utilisation de la d?composition de
Fourier
% trigonom?trique, o? vous utilisez cette fois ci une boucle for (pour n = 15,
30, 100 et 500
n=input('entrer une valeur ')
S=0;
for i=1:2:n
S=S+(4/(i*pi))*sin(i*2*pi*f*t);
end
figure(5)
plot(t,y,'b',t,S,'r')

% Ecrivez un script Matlab qui vous permet de calculer les 3 premiers


coefficients de Fourier
% exponentielle du signal
A=1;
T=1;
w=2*pi/T;
syms t
for n=0:3
n
Sn=(1/T)*int(((A*t)/T)*exp(-j*n*w*t),t,0,T)
end
for n=0:3
n
an=(2/T)*int(((A*t)/T)*cos(n*w*t),t,0,T)
end
for n=0:3
n
bn=(2/T)*int(((A*t)/T)*sin(n*w*t),t,0,T)
end

% TP2 Tracer le signal s(t) entre -5 et 5 pour a = 1, avec un pas de temps Te


= 0.01s.
Te=0.01;
a=1;
t=-5:Te:5;
s=exp(-a*abs(t));

1
figure(1)
plot(t,s)
grid
% La transform?e de Fourier de s(t) est Tracez S(f) sur une autre figure
Fe=0.01;
f=-5:Fe:5;
S=(2*a)./(a^2+(2*pi*f).^2);
figure(2)
plot(f,S)
grid
% Tracer le module (en utilisant la commande abs) et la phase (en utilisant la
commande
% angle) de la TF
% %un titre
% figure(3)
% plot(f,abs(S))
% grid
% %un titre
% figure(4)
% plot(f,angle(S))
% grid
% %un titre
x1=-1/(2*Te)
x2=1/(2*Te)
N=1001

x=linspace(x1,x2,N)

ff=fft(s)
figure(3)
plot(f,ff)
grid

fx=fftshift(Te*fft(s));
f1=linspace(-1/(2*Te),1/(2*Te),length(s))
figure(4)
plot(f1,abs(fx),'r',t,S,'b')
grid

xt=ifft(fx)/Te;
figure(5)
plot(t,abs(xt),'r',t,s,'b*')
grid

%% TP3 : %% I) CONVOLUTION :
%% Q1 : Sous Matlab, cr?er une porte p comportant N = 100 ?l?ments, ouverte
pour les ?l?ments compris entre les indices 20 et 30.

p=[zeros(1,19) ones(1,11) zeros(1,70)];

%% Q2 : Cr?er une impulsion de Dirac comportant N =100 ?l?ments et dont le


premier a pour valeur 1.

dirac = [ones(1,1) zeros(1,99)];

2
%% Q3 : Tracer en utilisant la fonction conv, la convolution : p * Dirac.

p=[zeros(1,19) ones(1,11) zeros(1,70)];


dirac = [ones(1,1) zeros(1,99)];
figure(1)
subplot(3,1,1)
plot(1:100,p)
subplot(3,1,2)
plot(1:100,dirac)
resultat= conv(p,dirac);
subplot(3,1,3)
plot(1:199,resultat)

%% II) Convolution d?une porte par elle m?me :

%% Reprendre la porte d?finie pr?c?demment (L?impulsion de Dirac est ?l?ment


neutre de la convolution) et repr?senter sa convolution par elle-m?me.

resultat2 = conv(p,p);
figure(2)
plot(1:199,resultat2)
figure(3)
plot(1:100,p)

%% III) Création d’un ?cho (d?caler un signal par convolution) :


%% Q1 : Créer sous Matlab un signal ? rampe ? de N = 1000 ?l?ments tel que
rampe(i)=i /20 pour i=1:50 (i est l?indice des ?l?ments de rampe) et rampe=0
ailleurs.

i=1:50;
rampe(i) = i/20;
rampe1=[rampe zeros(1,1000-51+1)];
figure(4)
plot(1:1000,rampe1)

%% Q2 : Cr?er le signal echo de N ?l?ments, partout nul sauf pour les indices
= 200, 400, 600 et 800
%% pour lesquels on a rampe(200)=2, rampe(400)=1, rampe(600)=0.75 et
rampe(800)=0.60. Il
%% s?agit d??tudier: echo = 2.d(t-t1) + 1.d(t-t2) + 0.75.d(t-t1) + 0.60.d(t-
t2).

echo = zeros(1,1000);
close all
figure(5)
subplot(3,1,1)
plot(1:1000,rampe1)
subplot(3,1,2)
plot(1:1000,echo)
resultat3 = conv(rampe1,echo);
subplot(3,1,3)
plot(1:1999,resultat3)

3
%TP4
freqsin=100.;
Tfen=1/20;
Nech1=128;
Te1=Tfen/Nech1;
t1=Te1.*(0:1:Nech1-1)';
sinusoide1=sin(2.*pi.*freqsin.*t1);

Nech2=64;
Te2=Tfen/Nech2;
t2=Te2.*(0:1:Nech2-1)';
sinusoide2=sin(2.*pi.*freqsin.*t2);

Nech3=32;
Te3=Tfen/Nech3;
t3=Te3.*(0:1:Nech3-1)';
sinusoide3=sin(2.*pi.*freqsin.*t3);

Nech4=8;
Te4=Tfen/Nech4;
t4=Te4.*(0:1:Nech4-1)';
sinusoide4=sin(2.*pi.*freqsin.*t4);

figure(1)
subplot(2,2,1)
plot(t1,sinusoide1,'b-',t1,sinusoide1,'r.')

subplot(2,2,2)
plot(t2,sinusoide2,'b-',t2,sinusoide2,'r.')

subplot(2,2,3)
plot(t3,sinusoide3,'b-',t3,sinusoide3,'r.')

subplot(2,2,4)
plot(t4,sinusoide4,'b-',t4,sinusoide4,'r.')

%% le 3eme n'est pas correctement ?chontillonn? car il ne respecte pas le


%% theoreme de shannon

%%%%%%%%%TP5%%%%%%%%
df=1/Tfen;
Fe1=1/Te1;
f1=df.*(0:1:Nech1-1)';
Fsin1=fft(sinusoide1);

df=1/Tfen;
Fe1=1/Te1;
f1=df.*(0:1:Nech1-1)';
Fsin1=fft(sinusoide1);

df=1/Tfen;
Fe1=1/Te1;
f2=df.*(0:1:Nech2-1)';
Fsin2=fft(sinusoide2);

4
df=1/Tfen;
Fe1=1/Te1;
f3=df.*(0:1:Nech3-1)';
Fsin3=fft(sinusoide3);

df=1/Tfen;
Fe1=1/Te1;
f4=df.*(0:1:Nech4-1)';
Fsin4=fft(sinusoide4);

figure(2)
subplot(2,2,1)
plot(f1, abs(Fsin1)./Nech1, 'b-', f1,abs(Fsin1)./Nech1, 'r.' );%%plot(f1,
abs(Fsin1)/Nech1, 'b-', f1,abs(Fsin1)/Nech1, 'r.' );

subplot(2,2,2)
plot(f2, abs(Fsin2)./Nech2, 'b-', f2,abs(Fsin2)./Nech2, 'r.' );

subplot(2,2,3)
plot(f3, abs(Fsin3)./Nech3, 'b-', f3,abs(Fsin3)./Nech3, 'r.' );

subplot(2,2,4)
plot(f4, abs(Fsin4)./Nech4, 'b-', f4,abs(Fsin4)./Nech4, 'r.' );

energietemp1= sum(abs(sinusoide1).^2)
energiefreq1= sum(abs(Fsin1).^2)

energietemp2= sum(abs(sinusoide2).^2)
energiefreq2= sum(abs(Fsin2).^2)

energietemp3= sum(abs(sinusoide3).^2)
energiefreq3= sum(abs(Fsin3).^2)

energietemp4= sum(abs(sinusoide4).^2)
energiefreq4= sum(abs(Fsin4).^2)
% partie 2
G=4;
f0=25;
Tfen=1;
Nech=256;
Te=Tfen/Nech;
t=Te*(0 :1 :Nech-1);

sinam=sin(2*pi*f0*t).*exp(-(pi*G*t));
figure(1)
plot(t,sinam)

df=1/Tfen;
Fe=1/Te;
f=df.*(0:1:Nech-1);
Fsinam=fft(sinam)
Fasinam=(1/(4*pi))*[(1./(f0-f+i*(G/2)))+(1./(f0+f-i*(G/2)))]
figure(2)
% plot(f,abs(Fasinam))plot(f,abs(Fsinam)/Nech,'r',f,abs(Fasinam),'b+')

5
% partie 3
Rect1=[ones(10,1);zeros(54,1)];
Rect2=[zeros(10,1);ones(10,1);zeros(44,1)];
t=(0 :1 :63);

figure(1)
plot(t,Rect1,'r',t,Rect2,'b')

• Série de Fourier Matlab


syms x ou x = sym(‘x’) : Créer un variable symbolique.

syms f(x1,x2,x3) ou f = symfun(sym ('f(x1 ,x2,x3)'), [x1,x2,x3]) : Créer une fonction à plusieurs
variables.

syms x y z ensemble : Créer des variables symboliques qui appartiennent à un ensemble indiqué
(entiers(Z) integer, réels(R) real, rationnels(Q) rational, positif positive).

Int(f(x), x, [a b]) : Calculer l’intégrale ∫𝑎𝑏 𝑓(𝑥)𝑑𝑥.

Square(2*pi*f*t) : Fonction carré de la même période et même amplitude comme la fonction


sinus(2*pi*t).

fftshift(T0*fft(st)) : Décaler la composante de fréquence zéro vers le centre du spectre (=Transformée


de Fourier).

fft(st) : Transformée de Fourier discrète.


ifft(TF)/T0 : Transformée de Fourier discrète inverse.
hilbert(st) : Signal analytique à temps discret via la transformée de Hilbert.
%%exam Exercice 1 :

% Question 1 :

e = [ 0 2-2j 0 2+2j ]
E = fft(e)
Module = abs(E)

% Question 2 :

en = [ 1 1 1 -1 -1 -1 ]
En = fft(en)
Ek = abs (En) % ==> Les valeurs de la TFD de en (N=6) .

% Question 3 :

en = [ 1 1 1 -1 -1 -1 0 0 ]
En = fft(en)
Ek = abs (En) % ==> Les valeurs de la TFD de en (N=8, on rajoute 2 zéro-padding) .

%% Exercice 2 :

6
% Question 1 :

% numéro 1 :
dt=0.001;
% numéro 2 :
t=0:dt:2*2*pi;
% numéro 3 :
x=cos(t);
% numéro 4 :
f=fftshift(fft(x));
% numéro 5 :
N=length(f);
% numéro 6 :
n=-(N-1)/2:(N-1)/2;
% numéro 7 :
w=2*pi*n/N/dt;
% numéro 8 :
figure(1)
stem(w,real(f)./N);

%% Exercice 3 :

% Question 1 :

t=-1:0.00001:1;
x1=rectpuls(t); % la commande
figure(2)
plot(t,x1);

% Question 2 :

x = [ 1 0 0 0]
y = [ 1 1 0 0]
z = conv(x,y)
%% Exercice 4 :
Ts=1/8;
fs=8;
Ta=5;
t=0:0.01:Ta-Ts;
s=t.^2.*exp(-3.*t)% pour le tracage de s(t)
figure(2)
plot(t,s)

kTs=0:Ts:Ta-Ts;
N=length(kTs)%pour savoir la longeur du vecteur kTs

skTs=((kTs).^2).*exp(-3.*kTs)
figure(3)
stem(kTs,skTs)%pour le tracage de l'echantillon de s(t)

Vous aimerez peut-être aussi