# TP MATALB # Génération d'un signal aléatoire ```matlab clc; % Efface la fenêtre de commande clearvars; % Efface toutes les variables de l'espace de travail close all; % Ferme toutes les fenêtres de figure ouvertes % Différents nombres de points nb_points = [128, 256, 512, 1024]; % Préparation de la figure pour afficher les DSP figure; for i = 1:length(nb_points) % Définition des paramètres fe = 1; % Fréquence d'échantillonnage en Hz % Génération du bruit gaussien pour le nombre de points actuel t = (0:nb_points(i)-1) * (1/fe); % Vecteur temps bruit = randn(1, nb_points(i)); % Génération du bruit gaussien % Affichage du signal dans le domaine temporel subplot(length(nb_points), 2, 2*i-1); plot(t, bruit); xlabel('Temps (s)'); ylabel('Amplitude'); title(['Signal de bruit gaussien - ', num2str(nb_points(i)), ' points']); % Calcul de la transformée de Fourier discrète (TFD) TFD = fft(bruit); % Centre la TFD dans la plage de fréquences [-1/2 ; 1/2] TFD_centree = fftshift(TFD); % Calcul de la DSP DSP = (1/nb_points(i)) * abs(TFD_centree).^2; moy = mean(DSP); % Création du vecteur fréquence centré freq = (-nb_points(i)/2:nb_points(i)/2-1) * (fe/nb_points(i)); % Plot de la DSP centrée en 0 subplot(length(nb_points), 2, 2*i); plot(freq, DSP,'r',freq, moy*ones(size(freq)),'b'); xlabel('Fréquence (Hz)'); ylabel('DSP'); title(['DSP pour ', num2str(nb_points(i)), ' points']); end ``` ![](https://cdn.mathpix.com/snip/images/QQdebpIeTy-xRvgkvp3O7oZvsxnfpHEjq3NkaAjniZc.original.fullsize.png) On constate une valeur moyenne constante, bien que des perturbations persistent probablement dues à une variance non nulle. L'augmentation du nombre de points offre une visibilité plus claire de la valeur moyenne, cependant, cela n'affecte pas la présence des variations. ## Calculer l’espérance mathématique et la variance de M. $M=\frac{m(1)+m(2)}{2}=\frac{(Q+e(1))+(Q+e(2))}{2}=Q+\frac{e(1)+e(2)}{2}$ $$ \mathbb{E}(M)=\mathbb{E}\left(Q+\frac{e(1)+e(2)}{2}\right) $$ Comme $\mathbb{E}(e(1))=\mathbb{E}(e(2))=0$ (erreur de moyenne nulle): $$ \mathbb{E}(M)=\mathbb{E}(Q)+\frac{\mathbb{E}(e(1)+e(2))}{2}=Q $$ $$ \operatorname{Var}(M)=\operatorname{Var}\left(Q+\frac{e(1)+e(2)}{2}\right) $$ Comme $e(1)$ et $e(2)$ sont indépendants: $$ \begin{aligned} & \operatorname{Var}(M)=\operatorname{Var}\left(Q+\frac{e(1)}{2}+\frac{e(2)}{2}\right) \\ & \operatorname{Var}(M)=\operatorname{Var}(Q)+\frac{1}{4} \operatorname{Var}(e(1))+\frac{1}{4} \operatorname{Var}(e(2)) \\ & \text { Comme } \operatorname{Var}(e(1))=\operatorname{Var}(e(2))=\sigma^2: \\ & \operatorname{Var}(M)=\operatorname{Var}(Q)+\frac{\sigma^2}{2} \end{aligned} $$ Donc, la variance de $M$ est $\operatorname{Var}(Q)+\frac{\sigma^2}{2}$. Notez que si $Q$ est une quantité constante, alors $\operatorname{Var}(Q)=0$ et la variance de $M$ est simplement $\frac{\sigma^2}{2}$. ## Comment évolue la variance de la mesure ? Si $Q$ est une quantité constante, la variance de la mesure $M$ est principalement influencée par la variance des erreurs de mesure $\left(\sigma^2\right)$. Si les erreurs de mesure sont faibles, la variance de $M$ sera également faible, ce qui indique une mesure plus précise. En revanche, si les erreurs de mesure sont élevées, la variance de $M$ sera également élevée, ce qui indique une mesure moins précise. La constance de $Q$ n'affecte pas directement la variance de $M$, sauf si elle est associée à des erreurs de mesure. ## Proposer alors une méthode pour améliorer le calcul des DSP des signaux aléatoires. AVOIRE EN FONCTION DES RESUSTATS Le calcul des densités spectrales de puissance (DSP) des signaux aléatoires peut être amélioré en utilisant des techniques appropriées de moyennage et de réduction du bruit. Voici quelques méthodes couramment utilisées pour améliorer le calcul des DSP des signaux aléatoires : 1. **Moyennage Temporel**: - Acquérir plusieurs échantillons du signal aléatoire. - Calculer la DSP pour chaque échantillon individuel. - Moyenner les DSP pour obtenir une DSP moyenne. - Le moyennage permet de réduire les fluctuations aléatoires et d'améliorer la précision de la DSP. 2. **Moyennage Fréquentiel**: - Diviser le signal en segments plus petits. - Calculer la DSP pour chaque segment. - Moyenner les DSP des segments pour obtenir une DSP moyenne. - Utile lorsque la DSP varie dans le temps. 3. **Fenêtrage**: - Appliquer une fenêtre à chaque segment de signal avant de calculer la transformée de Fourier. - Cela réduit les effets de fuite spectrale. - Des fenêtres telles que la fenêtre de Hamming ou la fenêtre de Blackman-Harris sont couramment utilisées. 4. **Moyennage Croisé**: - Utiliser le moyennage croisé pour estimer la DSP croisée entre deux signaux. - Utile pour l'analyse de signaux aléatoires multivariés. 5. **Utilisation de Périodes plus Longues**: - Si le signal aléatoire présente une structure sur une période plus longue, augmenter la longueur de l'échantillon pour capturer cette structure. 6. **Méthodes de Réduction du Bruit**: - Utiliser des techniques de réduction du bruit telles que le filtrage numérique pour minimiser les effets du bruit sur la DSP. 7. **Utilisation de Modèles Probabilistes**: - Si des modèles probabilistes sont disponibles pour le signal, les incorporer dans le calcul de la DSP pour une estimation plus précise. 8. **Utilisation de Méthodes Avancées**: - Pour des applications spécifiques, des méthodes avancées telles que la transformée en ondelettes peuvent être utilisées pour mieux représenter le contenu fréquentiel du signal. # UNE EXPÉRIENCE VS PLUSIEURS EXPÉRIENCES ``` % Paramètres de base fe = 1; % Fréquence d'échantillonnage en Hz N = 128; % Nombre de points n_samples = [5, 20, 100, 500]; % Nombre de tirages pour chaque groupe % Préparation des graphiques figure; for idx = 1:length(n_samples) % Calculer la moyenne des DSP pour chaque nombre de tirages mean_dsp = zeros(1, N); for i = 1:n_samples(idx) % Générer un tirage de bruit noise = randn(1, N); % Calculer la FFT et la DSP fft_result = fft(noise); dsp = abs(fft_result).^2 / N; mean_dsp = mean_dsp + dsp; end mean_dsp = mean_dsp / n_samples(idx); % Fréquences correspondantes, limitées à l'intervalle [-fe/2, fe/2] freq = (-N/2:N/2-1)*(fe/N); mean_dsp = fftshift(mean_dsp); % Centrer la DSP autour de zéro % Tracer la DSP moyenne subplot(2, 2, idx); plot(freq, mean_dsp); title(['Moyenne DSP pour ', num2str(n_samples(idx)), ' tirages']); xlabel('Fréquence (Hz)'); ylabel('DSP'); grid on; end ``` ![](https://cdn.mathpix.com/snip/images/r3DvYpAejYhibKbp3KQQFzVL1P_sVZ1vMs_IyJEZ7HI.original.fullsize.png) En analysant de petits groupes d'échantillons (5 ou 20) en DSP, on remarque de grandes variations, ce qui est normal à cause de leur petite taille. Quand on augmente le nombre d'échantillons (100, 500), les résultats deviennent plus uniformes, ce qui suit la logique des statistiques. Cependant, les résultats ne sont jamais complètement réguliers, mais tendent à se stabiliser autour d'une valeur moyenne, un phénomène courant avec le bruit blanc où toutes les fréquences se mélangent de manière égale. # Etude d'un signal bruité Si l'expérience est divisée en M sous-ensembles équitablement, la durée temporelle de chaque sous-expérience sera proportionnelle à l'inverse du nombre de sous-ensembles $\frac{T}{M}$. Si la division est basée sur des critères temporels spécifiques, la durée de chaque sous-expérience dépendra de ces critères et peut varier en fonction de la nature du signal mesuré. Densité spectrale de puissance théorique du signal connu pour tout $t$ Pour calculer la densité spectrale de puissance théorique, on commence par l'autocorrélation : $$ R_s(\tau)=E[\cos (2 \pi 20 t)+\cos (2 \pi 20.1 t)+b(t)][\cos (2 \pi 20(t-\tau))+ cos (2 \pi 20.1(t-\tau))+b(t-\tau)] $$ Ensuite nous faisons la transformée de Fourier de l'autocorrélation : $$ S(f)=\mathcal{F}\left\{R_s(\tau)\right\} $$ On utilise, pour les composantes sinusoïdales, la propriété : $$\mathcal{F}\left\{\cos \left(2 \pi f_0 t\right)\right\}=\frac{1}{2}\left(\delta\left(f-f_0\right)+\delta\left(f+f_0\right)\right)$$ Donc pour $f=20 \mathrm{~Hz}$ et $f=20.1 \mathrm{~Hz}$ : $$ S(20) \text { et } S(20.1) $$ Théoriquement nous trouvons un spectre avec deux pics en $f=20 \mathrm{~Hz}$ et $f=20.1 \mathrm{~Hz}$ avec du bruit constant. Voici ce que cela pourrais représenter : ![](https://cdn.mathpix.com/snip/images/6JTXrTeiCc4vezWukh4dFjqL_F2A4mU1ReIShwNAZH8.original.fullsize.png) Voici le code qui à permis de l'obtenir : ```matlab clc; % Efface la fenêtre de commande clearvars; % Efface toutes les variables de l'espace de travail close all; % Ferme toutes les fenêtres de figure ouvertes fe = 128; % Fréquence d'échantillonnage en Hz t = 0:1/fe:(8192-1)/fe; % Vecteur temporel % Signal s(t) s = cos(2*pi*20*t) + cos(2*pi*20.1*t) + randn(size(t)); % Ajout du bruit gaussien N = length(s); xdft = fft(s); xdft = xdft(1:N/2+1); psdx = (1/(fe*N)) * abs(xdft).^2; psdx(2:end-1) = 2*psdx(2:end-1); freq = 0:fe/length(s):fe/2; % Affichage de la DSP figure; plot(freq, 10*log10(psdx)); title('Densité Spectrale de Puissance (DSP) théorique'); xlabel('Fréquence (Hz)'); ylabel('Puissance (dB/Hz)'); grid on; ``` Désormais on calcule et représente la DSP calculée à partir des 8192 points de mesure en considérant : - 1 sous-expérience de 8192 points, - 2 sous-expériences de 4096 points, - 4 sous-expériences de 2048 points, - 8 sous-expériences de 1024 points, - 16 sous-expériences de 512 points, - 32 sous-expériences de 256 points. ```matlab clc; % Efface la fenêtre de commande clearvars; % Efface toutes les variables de l'espace de travail close all; % Ferme toutes les fenêtres de figure ouvertes fe = 128; % Fréquence d'échantillonnage en Hz t = 0:1/fe:(8192-1)/fe; % Vecteur temporel % Signal s(t) s = cos(2*pi*20*t) + cos(2*pi*20.1*t) + randn(size(t)); % Ajout du bruit gaussien % Tailles des sous-expériences subexp_sizes = [8192, 4096, 2048, 1024, 512, 256]; % Représentation graphique figure; for i = 1:length(subexp_sizes) N_subexp = subexp_sizes(i); [psd, freq] = pwelch(s, rectwin(N_subexp), 0, N_subexp, fe); subplot(length(subexp_sizes), 1, i); plot(freq, 10*log10(psd)); title(['DSP avec ', num2str(N_subexp), ' points']); xlabel('Fréquence (Hz)'); ylabel('Puissance (dB/Hz)'); grid on; end ``` ![](https://cdn.mathpix.com/snip/images/ChVMMt-mjyMrjWkywrQwiv6hKFgtj9qxXP0WZTH1LXU.original.fullsize.png) En observant l'évolution des différentes DSP calculées pour des tailles de sous-expériences croissantes, on voit un compromis entre la résolution fréquentielle et la réduction du bruit. Des DSP avec plus de points offrent une meilleure résolution, mais elles peuvent être plus sensibles au bruit. L'estimation spectrale est souvent réalisée en moyennant plusieurs réalisations du signal ou en utilisant des fenêtres pour diviser le signal en segments. - Biais : Il s'agit de l'erreur systématique introduite par le processus d'estimation. Une méthode de moyennage peut introduire un biais en lissant le spectre, en particulier aux fréquences où le signal change rapidement. - Variance : C'est la dispersion des estimations autour de la vraie valeur. Une méthode de moyennage peut réduire la variance en atténuant le bruit, mais cela peut également entraîner une perte de résolution. Ainsi, le compromis biais-variance suggère qu'il existe un équilibre délicat entre la réduction du bruit et la préservation de la résolution lors de l'estimation spectrale par moyennage.