Bonjour,
Je dois coder en MATLAB le taux d'erreur binaire en fonction du rapport signal à bruit lorsque j'envoie un texte via un canal additif Gaussien et blanc, je ne suis cependant pas sûr de l'algorithme à mettre en place, la modulation est à deux états (MDP2 c'est à dire qu'il y aura les valeurs -1 et 1 dans le signal modulé).
De plus, lorsque j'affiche le TEB en fonction de SNR, la courbe devrait décroître puis croître.
Je ne suis pas sûr non plus que ceci effectue correctement le seuillage :
Voici mon programme, je vous remercie d'avance pour votre aide!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part fluxdemod=fluxdemod(1:1:length (fluxdemod))>0.5
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 clear all; close all; clc; %%%%%%%%%%initialisation de la phrase%%%%%%%%%%%%%% phr='Je dois réussir!!'; %%%%%%%%%%Transformation de la phrase entiers%%%%%%% phr=double(phr); %%%%%%%%%%Puis en binaire%%%%%%%%%%%%%%%%%%%%%%%%%%% phr=dec2bin(phr); %%%%%%%%%%Mise de la matrice phr en une matrice 1D%% phr=reshape(phr, [],1); %%%%%%%%%%Transformation de signal en nombre%%%%%% phr=str2num(phr); %%%%%%%%%Modulation du flux binaire%%%%%% fluxmod=(2*phr-1) %%%%%Puissance du signal modulé%%%%%%% S=1; TEB=[]; erreur=0; nbre_real=0; for SNR=0:1:10 if erreur<100 %%%initialisation de l'écart-type du bruit%%%%%%% sigma=sqrt(S/(10.^(SNR/10))); %%ajout du bruit au signal bruit modulé%%%%%%%% fluxmod=fluxmod+sigma.*randn(length(phr), 1) %%%%démodulation%%%%% fluxdemod=(fluxmod+1)/2 %%%%%%%%seuillage pour reconstruire le message binaire%%%% fluxdemod=fluxdemod(1:1:length(fluxdemod))>0.5 [erreur1]=biterr(phr, fluxdemod); erreur=erreur+erreur1; nbre_real=nbre_real+1; TEB_NEW=erreur/nbre_real/length(phr); TEB=[TEB, TEB_NEW]; end end SNR=1:1:length(TEB) semilogy(SNR, TEB)
Partager