TP Signaux aléatoires - SRT4
TP5 Propriété ergodique d'un signal aléatoire
Nom - Prénom :
On considère le signal aléatoire en temps discret
où
et ϕ est une phase aléatoire (variable aléatoire) uniformément répartie sur
(fonction rand).\\ Déterminez si
est stationnaire au premier ordre. Calculer la moyenne statistique d'ordre 1 de
. La séquence aléatoire
est-elle ergodique relativement à sa moyenne ? Générez 4 réalisations de ce signal sur 1024 points. A partir de ces 4 réalisations, estimez la moyenne statistique à chaque instant n (en utilisant la fonction mean), puis déterminez les moyennes temporelles (toujours avec la fonction mean) pour chacune des 4 réalisations. Que constatez-vous ?
Générez maintenant 40 puis 400 réalisations de 1024 points de ce signal
. Dans chaque cas, estimez à nouveau les moyennes statistiques à chaque instant, et calculez les moyennes temporelles. Que constatez-vous ? Est-ce en accord avec la théorie ?
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
.
ne dépend pas de n, la séquence aléatoire est donc stationnaire au premier ordre.L'ergodisme relativement à la moyenne pour un processus stationnaire se traduit par l'égalité de la moyenne temporelle et de la moyenne statistique. Il est facile de vérifier que la moyenne temporelle d'une réalisation est bien égale à zéro dans notre cas :

% génération de 4 réalisations
% Initialisation des réalisations
realizations = zeros(nbrealisations, nbpoints);
% Génération des 4 réalisations
phi = 2 * pi * rand(); % phase aléatoire uniformément répartie entre 0 et 2*pi
realizations(i, :) = cos(2 * pi * FPoints + phi); % génération du signal
% Tracé des 4 réalisations
plot(Points, realizations(i, :));
%title(['Réalisation ', num2str(i)]);
% Calcul de la moyenne statistique à chaque instant
mean_statistique = mean(realizations, 1); % moyenne sur les réalisations pour chaque n
plot(Points, mean_statistique,'o');
% Tracé de la moyenne statistique
plot(Points, mean_statistique);
title('Moyenne statistique à chaque instant');
ylabel('Moyenne statistique');
% Calcul de la moyenne temporelle pour chaque réalisation
mean_temporelle = zeros(1, nbrealisations); % pour stocker les moyennes temporelles
mean_temporelle(i) = mean(realizations(i, :)); % moyenne temporelle de chaque réalisation
% Affichage des moyennes temporelles
disp('Moyenne temporelle pour chaque réalisation :');
Moyenne temporelle pour chaque réalisation :
disp(mean_temporelle);
1.0e-16 *
0.1610 0.6704 0.3101 -0.0130
On remarque que la moyenne temporelle est proche de la valeur théorique zero tandis que l'estimation de la moyenne d'ensemble est loin d'etre égale à zéros pour tout n lorsque nbrealisations=4.
L'estimation de cette moyenne d'ensemble n'est pas fiable puisqu'elle ne repose pas sur un nombre suffisant de réalisations.
Plus le nombre de réalisations est grand, plus la moyenne est proche de zero quel que soit n.