S
sundar123
Guest
salut
Je suis confronté à problème en montrant la courbe BER ....mon travail bit code correctement jusqu'à reçues mais face à problème dans le calcul des erreurs dues à laquelle ma courbe BER semble être en ligne droite alors qu'il devrait être à la baisse avec de plus en plus SNR ...aussi mon code est supérieur à 1 h pour calculer le résultat ....code est donné ci-dessous
de bien vouloir me suggérer où je me trompe et aidez-moi
mercieffacer tous;
N = 10 ^ symboles 4%
M = 16;% pour 16 QAM
error = 0;
count = 1;
SNR1 = [0:20];
a = SNR1/10;
SNR = 10. ^ A;
EbN0% = 20;
pour i = 1: length (SNR)
EbN0 = SNR (i);
L = log2 (M);% nombre de bits
bits = 1000;
b = 0;
while (a <bits)
b = 1000 * count;
count = count 1;
data = ((signe (rand (N * L, 1) 1))> 0.5). '; bit% pour envoyertbl = [0; 1];
pour i = 1
<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triste" border="0" />
L-1) tbl = [zeros tbl (longueur (TBL), 1); flipud (TBL) ones (length (TBL), 1)]; end;
tmp = sortrows ([bi2de (TBL) '; [0: M-1 ]]');
Reordering = tmp
, 2) ';
Vals = [0: M-1];
Y = fix (Vals. / sqrt (M));% y = midi 03 => row
%% Si l'on en avant pour les lignes impaires, en arrière pour les lignes paires
x =-signe (mod (Y, 2) -0.5) .* (bitand (Vals, sqrt (M) -1) * 2
1 sqrt (M));% x = / - (0:3) * 2 1-4
y = sqrt (M)-Y * 2-1;% y = 4 - y * 2-1
constellation = x j * y; points de%% constellation construire la suite
% Nuage de points (constellation);
constellationpower = sqrt (mean (abs (Constellation). ^ 2));% calculer la puissance moyenne
= modulationconstellation constellation (Reordering 1) / constellationpower;EsN0 = EbN0 * L;% Nécessaire pour effectuer la conversion bi2de
bpwr = (2. ^ (0
<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triste" border="0" />
L-1)));
Echelle% leva constellation de modulation de l'indice obtenu par conversion bi2de
if ((mod (taille (données, 2), L) ~ = 0) & (1))
data = [zeros de données (1, L-mod (taille (données, 2), L))];
fin;
z = sqrt (EsN0) * modulationconstellation (bpwr * remodeler (données, L, taille (données, 2) / L) 1);
% De bruit
bruit = 1/sqrt (2) * (rand (1, length (z)) j * rand (1, length (z)));
h = 1;
y = h * z bruit;% de modulation
% Démodulation
Obtenir l'index% d'une valeur minimale
pour k = 1: length
sig = Y (k) * ones (M, 1);
[m, (indice k)] = min (sig-(H * sqrt (EsN0) * modulationconstellation .'));
fin% Ont besoin pour effectuer la conversion décimal en binaire
= binaire (de2bi (indice-1 )).';
bitrcv = binaire (
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sourire" border="0" />
;% Bit reçu
données data = (
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sourire" border="0" />
;% D'erreur = erreur e;
fin
% face effectivement problème dans cette partie
e (i) = length (find ([data-bitrcv])); erreurs de constatation% ...
fin
REC = e / b;
Fermez tous;
Figure
semilogy (SNR, BER, 'MX-', 'LineWidth', 2);
xlabel ( 'SNR');
ylabel Bit ( 'Error Rate »);
title ( 'courbe d'erreur de bits de probabilité pour 16-QAM modulation »);
Je suis confronté à problème en montrant la courbe BER ....mon travail bit code correctement jusqu'à reçues mais face à problème dans le calcul des erreurs dues à laquelle ma courbe BER semble être en ligne droite alors qu'il devrait être à la baisse avec de plus en plus SNR ...aussi mon code est supérieur à 1 h pour calculer le résultat ....code est donné ci-dessous
de bien vouloir me suggérer où je me trompe et aidez-moi
mercieffacer tous;
N = 10 ^ symboles 4%
M = 16;% pour 16 QAM
error = 0;
count = 1;
SNR1 = [0:20];
a = SNR1/10;
SNR = 10. ^ A;
EbN0% = 20;
pour i = 1: length (SNR)
EbN0 = SNR (i);
L = log2 (M);% nombre de bits
bits = 1000;
b = 0;
while (a <bits)
b = 1000 * count;
count = count 1;
data = ((signe (rand (N * L, 1) 1))> 0.5). '; bit% pour envoyertbl = [0; 1];
pour i = 1
<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triste" border="0" />
L-1) tbl = [zeros tbl (longueur (TBL), 1); flipud (TBL) ones (length (TBL), 1)]; end;
tmp = sortrows ([bi2de (TBL) '; [0: M-1 ]]');
Reordering = tmp
Vals = [0: M-1];
Y = fix (Vals. / sqrt (M));% y = midi 03 => row
%% Si l'on en avant pour les lignes impaires, en arrière pour les lignes paires
x =-signe (mod (Y, 2) -0.5) .* (bitand (Vals, sqrt (M) -1) * 2
1 sqrt (M));% x = / - (0:3) * 2 1-4
y = sqrt (M)-Y * 2-1;% y = 4 - y * 2-1
constellation = x j * y; points de%% constellation construire la suite
% Nuage de points (constellation);
constellationpower = sqrt (mean (abs (Constellation). ^ 2));% calculer la puissance moyenne
= modulationconstellation constellation (Reordering 1) / constellationpower;EsN0 = EbN0 * L;% Nécessaire pour effectuer la conversion bi2de
bpwr = (2. ^ (0
<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triste" border="0" />
L-1)));
Echelle% leva constellation de modulation de l'indice obtenu par conversion bi2de
if ((mod (taille (données, 2), L) ~ = 0) & (1))
data = [zeros de données (1, L-mod (taille (données, 2), L))];
fin;
z = sqrt (EsN0) * modulationconstellation (bpwr * remodeler (données, L, taille (données, 2) / L) 1);
% De bruit
bruit = 1/sqrt (2) * (rand (1, length (z)) j * rand (1, length (z)));
h = 1;
y = h * z bruit;% de modulation
% Démodulation
Obtenir l'index% d'une valeur minimale
pour k = 1: length
sig = Y (k) * ones (M, 1);
[m, (indice k)] = min (sig-(H * sqrt (EsN0) * modulationconstellation .'));
fin% Ont besoin pour effectuer la conversion décimal en binaire
= binaire (de2bi (indice-1 )).';
bitrcv = binaire (
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sourire" border="0" />
;% Bit reçu
données data = (
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sourire" border="0" />
;% D'erreur = erreur e;
fin
% face effectivement problème dans cette partie
e (i) = length (find ([data-bitrcv])); erreurs de constatation% ...
fin
REC = e / b;
Fermez tous;
Figure
semilogy (SNR, BER, 'MX-', 'LineWidth', 2);
xlabel ( 'SNR');
ylabel Bit ( 'Error Rate »);
title ( 'courbe d'erreur de bits de probabilité pour 16-QAM modulation »);