Hoballah Aimane/ Abdennor yassine
Compte rendu tp
signaux aléatoires
Encadrant : Dan istrate
1
2
Caractérisation d’un bruit blanc
3.1)
On dit que rand et randn génère des signaux pseudo aléatoire parce qu’il est difficile de
générer des vrais nombres aléatoires. Ces deux fonctions sont basées sur des
algorithmes, au bout d’un certain temps les valeurs vont se répéter.
La fonction rand permet de créer des matrices remplies de nombres pseudo-aléatoires
(suivant une loi uniforme sur [0,1[).
La fonction randn permet de générer des matrices remplies de nombres pseudo-
aléatoires (suivant une loi gaussienne).
3.2)
vecteurs avec fonction rand :
script :
x = -2.9:0.1:2.9;
Bu = rand(1,1000);
hist(y,x)
Graphe :
Figure 1: vecteur avec rand
3
On obtient bien l’allure d’une loi uniforme sur un intervalle [0,1] :
Figure 2: allure d'une loi uniforme
Vecteurs avec fonction randn :
Script :
x = -2.9:0.1:2.9;
bn = randn(1,1000);
hist(y,x)
Graphe:
Figure 3: vecteur avec randn
Ici nous obtenons bien l’allure d’une gaussienne:
4
Figure 4: allure d'une gaussienne
3.3)
pour centré une variable aléatoire qui suit une loi normale, on procède ainsi:
Centrer une variable consiste à soustraire sa moyenne à chacune de ses valeurs
initiales.
Réduire une variable consiste à diviser toutes ses valeurs par son écart-type.
Soient σ l'écart-type et m la moyenne des valeurs d'une variable aléatoire.
Centrer-réduire l'une de ses valeurs V revient alors à calculer :
Donc en appliquant cela :
Pour un vecteur rand (bucn):
Script :
x = -1:0.1:1;
bu = rand(1,1000);
n=((bu-mean(bu))/max(norm(bu)));
hist(n)
5
Graphe :
Figure 5: vecteur rand centré normalisé
Pour un vecteur randn (bncn) :
Script :
x = -1:0.1:1;
bu = randn(1,1000);
n=((bu-mean(bu))/max(norm(bu)));
hist(n)
Graphe :
Figure 6: vecteur randn centré normalisé
3.4)
pour cette fonction, nous voulons faire une autocorrélation des vecteurs obtenus
précédemment, nous allons réaliser cela à l’aide de la fonction xcorr de matlab.
L’autocorrélation consiste à étudier la ressemblance du signal avec lui-même au cours du
temps, nous obtiendrons sa valeur maximale pout t=0.
6
autocorrelation pour (bncn) :
Script1:
//Autocorrelation de bncn avec lui-même : biasé
x = -1:0.1:1;
bn = randn(1,1000);
bncn=((bn-mean(bn/max(norm(bn));
Gncn=xcorr(bncn, bncn,'biased');
hist(c,100)
Graphe :
Figure 7: Autocorrélation de bncn
Nous obtenons bien une autocorrélation maximale en 0.
//autocorrelation pour bucn (biasé)
Script2:
x = -1:0.1:1;
bu = rand(1,1000);
bucn=((bu-mean(bu/max(norm(bu)))));
Gucn=xcorr(bucn, bucn,'biased');
hist(Gucn,100)
7
Graphe :
Figure 8: Autocorrélation de bucn
3.5)
la fonction d’autocorrélation que nous obtenons dans le cas d’un estimateur sans biais
est :
Script :
x = -1:0.1:1;
bu = rand(1,1000);
bucn=((bu-mean(bu/max(norm(bu)))));
Gucn=xcorr(bucn, bucn,'unbiased');
hist(Gucn,100)
Graphe :
Figure 9:Autocorrelation bucn non biasé
On remarque bien qu’en utilisant un estimateur non biasé on tient compte de la durée
finie du signaux.
8
3.6)
Grace au script donné « dsp_cor » on a pu estimer la densité spectrale de puissance à
partir de la fonction d’autocorrélation :
Voici le script dsp_cor :
function dsp_cor(x)
% dsp_cor(x)
% Calcul de la densité spectrale de puissance
% à partir de la fonction d'autocorrélation x.
%
% M@D, ESIGETEL 2001.
dspx = abs(fftshift(fft(x)));
N = fix((length(x)+1)/2);
freq = (-N+1:N-1)/(2*N);
figure
plot(freq, 20*log10(dspx+eps))
xlabel('Fréquence')
ylabel('Puissance (dB)')
grid on
title('DSP par corrélation')
return
Pour Gucn, nous avons le graphe suivant :
Figure 10: densité spectrale de la corrélation bucn
Pour Gncn, nous avons le graphe suivant :
9
Figure 11: densité spectrale de la corrélation bncn
3.7)
On remarque pour les deux cas que nous obtenons un signal stochastique qu’on peut
approximer à un sinus cardinal.
3.8)
Ici on cherche à estimer le signal suivant : y=bncn+0.1, voici le script qui nous a permis
de faire cela :
Script :
bn = randn(1,1000);
bncn=((bn-mean(bn/max(norm(bn)))));
y=bncn+0.1;
ycor=xcorr(y,'unbiased');
hist(ycor,200)
nous obtenons le graphe suivant :
Figure 12: estimation du signal y=bncn+0.1
10
On observe que le signal est légèrement décalé vers la droite (de 0.1) par rapport au
signal bncn
3.9)
Nous allons écrire un script qui génère un signal aléatoire gaussien centré :
Script :
function bruit(puiss, nbrpoint)
%puiss puissance du signl, nbrpoint nombre de point
noise=randn(1, nbrpoint);%générer le bruit
x=(((noise-mean(noise))*puiss)/(max(norm(noise))));
plot(x);
return;
voici le graphe obtenu :
Figure 13: bruit gaussien
3.10)
Voici le script demandé :
ce script doit générer la suite x demandé.
Script :
function signal(f0, fe, N)
%f0 fréquence du signal
%fe fréquence d'echantillonnage
%N nombre de periode à générer
x=0:1/fe:N*(1/f0);
signal=sqrt(2)*sin(2*pi*f0*x);
plot(x, signal);
title('signal');
11
voice le graphe obtenu:
Figure 14: la suite x
3.11)
Script pour l’estimateur:
Script:
function Per_estime(y,N)
% y est le vecteur à traiter
%N est le nombre de période à générer
L=reshape(y,[],N);
M=mean(L);
hist(M,100) ;
3.12)
Nous avons un signal sinusoidale combiné à un bruit :
voici le script :
function y=signal(Fo,Fe,N)
t=0:1/Fe:N*(1/Fo);
x=sqrt(2)*sin(2*pi*Fo*t);
br=bruit(1,length(x));
y=x+br;
plot(y);
return
12
Graphe:
1.5
0.5
-0.5
-1
-1.5
-2
0 50 100 150 200 250
Figure 15:sinus + bruit
13