Les TP de Signaux Aléatoires

Accéder aux microprojets

TP1 : Générateurs

TP1
\[ \text{Moyenne} = \frac{\sum_{i=1}^{N} x_i}{N} \]

Voici la formule de la moyenne :

\[ \text{Var} = \frac{1}{N} \sum_{i=1}^{N} (x_i - \text{Moyenne})^2 \]

Voici la formule de la variance :

\[ V[X] = E\left[(X - E[X])^2\right] \]

moyenne_theorique_X = 5;
La moyenne théorique d'une variable aléatoire uniformément distribuée entre 0 et 10 est \( \frac{0 + 10}{2} = 5 \). C'est une propriété de la distribution uniforme.

variance_theorique_X = \(\frac{10^2}{12}\);
La variance théorique d'une variable uniforme entre 0 et 10 est donnée par la formule \( \frac{(b - a)^2}{12} \), où \( a = 0 \) et \( b = 10 \).
Donc la variance théorique est \( \frac{10^2}{12} = \frac{100}{12} \approx 8.33 \).

Remarque : le /12 a été traité dans l'exercice A.3.

Les liens vers le code :

Le code initial du TP1 Le code du TP1 complété et amélioré Le code du TP1 complété et amélioré en version html

TP2 : Fonction de variables aléatoires

Préparation au TP2

Densité de Probabilité

Voici la formule de la densité de probabilité : \[ f(x) = F'(x) \]
Remarque : si nous étions rigoureux, il faudrait écrire \( f(x) \, p.p. \, F'(x) \) (presque partout) à la place du \( = \), car la fonction n'est pas dérivable en \( 0 \) et en \( 1 \).

Calcul de l'Espérance \( E[Y] \)

Voici le calcul de l'espérance de \( Y \) : \[ E[Y] = \int_{-\infty}^{+\infty} y f(y) \, dy = \int_{0}^{1} y N y^{N-1} \, dy \] \[ = N \int_{0}^{1} y^N \, dy = N \left[ \frac{y^{N+1}}{N+1} \right]_{0}^{1} \] \[ = \frac{N}{N+1} = E[Y] \]

\[ F_Y(y) = y^N \]

Cette commande calcule la fonction de répartition \( F_Y(y) \) définie par :

F = lin.^N;

où \( N = 3 \). Elle représente la probabilité que \( Y \) soit inférieure à une certaine valeur \( y \).

\[ f_Y(y) = N \cdot y^{N-1} \]

Cette commande calcule la densité de probabilité \( f_Y(y) \) par dérivation de la fonction de répartition \( F_Y(y) \), comme suit :

D = N .* lin.^(N-1);
\[ \text{Tracer de } f_Y(y) \text{ pour } y \in [0, 1] \]

Cette commande trace la densité de probabilité \( f_Y(y) \) en fonction des valeurs du vecteur lin :

plot(lin, D);

Étapes du TP2

  1. Calculer la fonction de répartition de \( Y \)

    La fonction de répartition \( F_Y(y) \) est donnée par :

    \[ F_Y(y) = y^N \]

    Où \( N \) est le nombre de variables indépendantes.

  2. En déduire sa densité de probabilité

    En dérivant la fonction de répartition, on obtient la densité de probabilité \( f_Y(y) \) :

    \[ f_Y(y) = N \cdot y^{N-1} \]
  3. Générer des valeurs de \( Y \) avec Matlab

    On génère les valeurs de \( Y \) à partir des valeurs de \( X_1, X_2, ..., X_N \) comme suit :

    
                            X = rand(N, Nb);  % Génération de Nb valeurs aléatoires uniformes pour chaque variable
                            Y = min(X);       % Y est défini comme le minimum des N variables aléatoires
                        
  4. Tracer l'histogramme des valeurs de \( Y \) et comparer avec la densité de probabilité de \( Y \)

    On trace l'histogramme des valeurs de \( Y \) avec Matlab et on compare avec la densité de probabilité théorique :

    
                            plot(lin, D, 'LineWidth', 2);  % Tracé de la densité de probabilité théorique
                            histogram(Y, 'Normalization', 'pdf', 'BinWidth', 0.01);  % Tracé de l'histogramme
                        

    Les deux courbes sont superposées pour observer la correspondance entre les valeurs générées et la densité théorique.

Les liens vers le code :

Le code initial du TP2 Le code du TP2 complété et amélioré Le code du TP2 complété et amélioré en version html

TP3 : Génération de variables aléatoires discrètes dépendantes

Table des Probabilités

Voici une table avec \(X\) et \(Y\) ainsi que les probabilités correspondantes :

XY X = 0 X = 1
Y = 0 \( p_{00} \) \( p_{01} \)
Y = 1 \( p_{10} \) \( p_{11} \)

Les probabilités sont définies comme suit :

Nous vérifions que la somme des probabilités est égale à 1 :

\[ \begin{align*} \sum_{i=0}^{1} \sum_{j=0}^{1} p_{ij} &= p_{00} + p_{01} + p_{10} + p_{11} \\ &= 0.3 + 0.2 + 0.2 + 0.3 \\ &= 1 \end{align*} \]

Ainsi, la somme des \( p_{ij} \) est bien égale à 1.

Calcul de \( \Pr(X=0) \)

\[ \begin{align*} \Pr(X=0) &= \Pr(X=0, Y=0) + \Pr(X=0, Y=1) \\ &= p_{00} + p_{01} \\ &= 0.3 + 0.2 \\ &= 0.5 \end{align*} \]

Calcul de \( \Pr(X=1) \)

\[ \Pr(X=1) = 1 - \Pr(X=0) = 1 - 0.5 = 0.5 \]

Calcul de \( \Pr(Y=0) \)

\[ \begin{align*} \Pr(Y=0) &= \Pr(X=0, Y=0) + \Pr(X=1, Y=0) \\ &= p_{00} + p_{10} \\ &= 0.3 + 0.2 \\ &= 0.5 \end{align*} \]

Probabilité Conditionnelle

La règle utilisée pour la probabilité conditionnelle est la suivante :

\[ \Pr(A | B) = \frac{\Pr(A \cap B)}{\Pr(B)} \]

Ce qui signifie que la probabilité de \( A \) sachant \( B \) est égale à la probabilité de l'intersection de \( A \) et \( B \) divisée par la probabilité de \( B \).

Application au cas présent :

Nous calculons \( \Pr(Y=0 | X=0) \) :

\[ \begin{align*} \Pr(Y=0 | X=0) &= \frac{\Pr(Y=0, X=0)}{\Pr(X=0)} \\ &= \frac{p_{00}}{0.5} \\ &= \frac{0.3}{0.5} \\ &= 0.6 \end{align*} \]

Ensuite, nous calculons \( \Pr(Y=0 | X=1) \) :

\[ \begin{align*} \Pr(Y=0 | X=1) &= \frac{\Pr(Y=0, X=1)}{\Pr(X=1)} \\ &= \frac{p_{10}}{0.5} \\ &= \frac{0.2}{0.5} \\ &= 0.4 \end{align*} \]

Ainsi, nous avons :

\[ \Pr(Y=0 | X=0) = 0.6 \quad \text{et} \quad \Pr(Y=0 | X=1) = 0.4 \]
explicationindtp3

Les liens vers le code :

Le code initial du TP3 Le code du TP3 complété et amélioré Le code du TP3 complété et amélioré en version html

TP4 : Stationnarité

Séquence Faiblement Stationnaire

Ce code génère une séquence faiblement stationnaire grâce à la boucle for i = 1:Nb et l'utilisation de la fonction randn(1, N). Plus précisément, la séquence aléatoire \( X(t) \) est définie par :

\( X(t) = \mathcal{N}(0, 1) \)

où chaque élément de \( X(t) \) suit une distribution normale \( \mathcal{N}(0, 1) \), c'est-à-dire une distribution avec une moyenne \( \mu = 0 \) et une variance \( \sigma^2 = 1 \).

Les valeurs générées sont indépendantes et identiquement distribuées (i.i.d.) :

\[ \forall t, \mathbb{E}[X(t)] = 0, \quad \text{Var}[X(t)] = 1 \]

La boucle for génère \( Nb \) réalisations indépendantes, c'est-à-dire que pour chaque réalisation \( X_i(t) \), les variables sont indépendantes et leurs caractéristiques statistiques (moyenne et variance) restent constantes dans le temps, satisfaisant ainsi les critères de la stationnarité faible.

\[ \forall t, \quad X_i(t) \sim X_j(t), \quad i \neq j \]

Chaque réalisation est ensuite superposée sur un graphique pour visualiser cette constance statistique.

Séquence Non Stationnaire

Ce code génère une séquence non stationnaire en modifiant la moyenne au fil du temps. La variable t = linspace(0, 10, N) crée un vecteur temps, et randn(1, N) génère un bruit gaussien avec une moyenne de 0 et une variance constante. La séquence Y_t = randn(1, N) + t ajoute ce bruit aléatoire à t, ce qui introduit une moyenne qui évolue linéairement avec le temps. La moyenne de la séquence est donnée par :

\[ \mathbb{E}[Y(t)] = t \]

Cette variation de la moyenne fait que la séquence est non stationnaire. La stationnarité faible requiert une moyenne constante, mais ici la moyenne change avec le temps, ce qui signifie que la séquence générée ne satisfait pas cette condition.

Les liens vers le code :

Le code initial du TP4 Le code du TP4 complété et amélioré Le code du TP4 complété et amélioré en version html

TP5 : Propriété ergodique d'n signal aléatoire

Description et contenu du TP5.

Les liens vers le code :

Le code initial du TP5 Le code du TP5 complété et amélioré Le code du TP5 complété et amélioré en version html

TP6 : Fonction de corrélation et densité spectrale de puissance

Description et contenu du TP6.

Les liens vers le code :

Le code initial du TP6 Le code du TP6 complété et amélioré Le code du TP6 pas fini en version html

TP7 : Processus aléatoire à accroissement indépendant

Le code du TP7 en version txt

TP8 : Processus Auto Régressif

Le code du TP8 en version txt

Les futures updates

Ajout de meilleures comptes rendus

recoder les tps et les améliorer en Julia car matlab c'est payant et que Julia c'est de 1. gratuit et de deux cela permet de monter en compétences.