L
lincolndsp
Guest
Pessoal, me ajude a entender por que no meu código matlab abaixo do
BER que eu vejo é melhor do que deveria ser (para BPSK coerente).Talvez eu não adicionar ruído
B para o sognal adequada ou talvez parâmetro em raylrnd é imprópria.
Código MATLAB%
N = 10000;% número de bits
s1 = zeros (N * 100,1);% 1 caminho
s2 = zeros (N * 100,1); 2ndpath%
EbNo = 20;% Eb / n º, em dB
cicatriz = zeros (2.100 * N);
um sinal de = ((rand (1, N) -0,5) 1) / 2; gerando% seqüência aleatória de bits
T = intervalo de 1 bit%
t = 0:0.01 T *: N * T * T-0,01;
% tempo
BB = 1,2; parâmetro% no envelope Rayleigh função raylrnd
f = freqüência transportadora 2%
cicatriz (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sorrir" border="0" />
= sin (2 * pi * f * t); 2% os sinais de referência para o receptor
cicatriz (2,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sorrir" border="0" />
=- sin (2 * pi * f * t);
randn ( 'state', 123)
ab = raylrnd (BB, 1, N * 100);% envelope Raylegh
rand ( 'state', 234)
unifrnd phi = (0,2 * pi, 1, N * 100); fase uniforme%
para k = 1: size (a, 2)
i = 1;
para j = (k-1) * 100 1: k * 100
if (a k () 1) == 1
S1 (j) = ab (i) .* sin (2 * pi * f * t (i) fi (i));
end;
if (a k () 1) == 2
S1 (j) =- ab (i) .* sin (2 * pi * f * t (i) fi (i));
end;
i = i 1;
end;
end;randn ( 'estado', 1230)
ab = raylrnd (BB, 1, N * 100);
rand ( 'state', 1234)
unifrnd phi = (0,2 * pi, 1, N * 100);
para k = 1: size (a, 2)
i = 1;
para j = (k-1) * 100 1: k * 100
if (a k () 1) == 1
s2 (j) = ab (i) .* sin (2 * pi * f * t (i) fi (i));
end;
if (a k () 1) == 2
s2 (j) =- ab (i) .* sin (2 * pi * f * t (i) fi (i));
end;
i = i 1;
end;
end;
s = zeros (1, N * 100);
para k = 1: size (a, 2)
i = 1;
para j = (k-1) * 100 1: k * 100
s (j) cicatriz = (a k () 1, i);% sinal BPSK
i = i 1;
end;
end;
sorig = s;% salvar sinal BPSK para o efeito futuro da adição de ruído
gmsksig = zeros (N * 100,1);
sorig bpsksig =;
SNR =- 20 EbNo 3;% SNR em dB, 3 dB é porque a adição de ruído a um sinal real,
% não complexas
snoise = zeros (N * 100,1);
ruído = zeros (N * 100,1);
snoise = AWGN (bpsksig, SNR, 'medida', 123, 'db');
snoise1 = zeros (N * 100,1);
noise1 = zeros (N * 100,1);
ruído = snoise sorig;
snoise1 = AWGN (bpsksig, SNR, 'medida', 1234, 'db');
noise1 = snoise1-sorig;
snoise2 = AWGN (bpsksig, SNR, 'medida', 234, 'db');
noise2 = snoise2-sorig;s = s1 s2 ruído noise1;% 2 caminhos desbotada
detector correlacionador% coerente
tt = 0:0.01 T *: T-0,01 * T;
sinerom = zeros (100,2);
cosintegral = zeros (N, 2.100);
cossum = zeros (N, 2);
sinerom (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sorrir" border="0" />
= sin (2 * pi * f * tt);% cópia do sinal senoidal representando '1 '
sinerom (2,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sorrir" border="0" />
=- sin (2 * pi * f * tt);% cópia do sinal senoidal representando '-1' com a fase invertida
para k = 1: size (a, 2)
for i = 1:2
for jj = 1:100
(k cosintegral, i, jj) = s (k (-1) * 100 jj) .* sinerom (i, jj);% aqui correlação do tipo detector
end;% é realizado; primeira multiplicando-se o sinal recebido
% com cópias do sinal no 2 ramos de
correlator%
end;
end;
j = 0;
para k = 1: size (a, 2)
for i = 1:2
k cossum (, i) = (soma cosintegral (k, i,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sorrir" border="0" />
);% Aqui é a integração ou a soma das amostras th
end;
maxcossum (k) = max (cossum (k,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sorrir" border="0" />
);% Valor aqui max dos ramos correlacionador é determinado
end;
para k = 1: size (a, 2)
for i = 1:2
se k cossum (, i) == maxcossum (k)
indexcossum (k) = i;% aqui o número da agência onde o máximo
% Seja alcançado (1 ou 2)
end;
end;
end;
atrsec = [0 1];
para k = 1: size (a, 2)
adetsec (k) = atrsec (indexcossum (k));% do ramo 1 significa "1" foi transmitido
end;% dos meios ramo 2 '-1' foi transmitido
para j = 1: size (a, 2)
res (j) = adetsec (j)-a (j);
end;
max (res)
min (res)
kjk = 0;
para j = 1: size (a, 2)
caso julgado (j) == 0
kjk kjk = 1;
end;
end;
errornum size = (a, 2)-número% kjk de erros
e formato de curta distância;
errornum bercalc = / size (a, 2% BER)
formato;
end%
O m-arquivo anexado é o mesmo.Estes símbolos emoções me fez fazer
este.
Desculpe, mas você precisa de login para ver esta penhora
BER que eu vejo é melhor do que deveria ser (para BPSK coerente).Talvez eu não adicionar ruído
B para o sognal adequada ou talvez parâmetro em raylrnd é imprópria.
Código MATLAB%
N = 10000;% número de bits
s1 = zeros (N * 100,1);% 1 caminho
s2 = zeros (N * 100,1); 2ndpath%
EbNo = 20;% Eb / n º, em dB
cicatriz = zeros (2.100 * N);
um sinal de = ((rand (1, N) -0,5) 1) / 2; gerando% seqüência aleatória de bits
T = intervalo de 1 bit%
t = 0:0.01 T *: N * T * T-0,01;
% tempo
BB = 1,2; parâmetro% no envelope Rayleigh função raylrnd
f = freqüência transportadora 2%
cicatriz (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sorrir" border="0" />
= sin (2 * pi * f * t); 2% os sinais de referência para o receptor
cicatriz (2,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sorrir" border="0" />
=- sin (2 * pi * f * t);
randn ( 'state', 123)
ab = raylrnd (BB, 1, N * 100);% envelope Raylegh
rand ( 'state', 234)
unifrnd phi = (0,2 * pi, 1, N * 100); fase uniforme%
para k = 1: size (a, 2)
i = 1;
para j = (k-1) * 100 1: k * 100
if (a k () 1) == 1
S1 (j) = ab (i) .* sin (2 * pi * f * t (i) fi (i));
end;
if (a k () 1) == 2
S1 (j) =- ab (i) .* sin (2 * pi * f * t (i) fi (i));
end;
i = i 1;
end;
end;randn ( 'estado', 1230)
ab = raylrnd (BB, 1, N * 100);
rand ( 'state', 1234)
unifrnd phi = (0,2 * pi, 1, N * 100);
para k = 1: size (a, 2)
i = 1;
para j = (k-1) * 100 1: k * 100
if (a k () 1) == 1
s2 (j) = ab (i) .* sin (2 * pi * f * t (i) fi (i));
end;
if (a k () 1) == 2
s2 (j) =- ab (i) .* sin (2 * pi * f * t (i) fi (i));
end;
i = i 1;
end;
end;
s = zeros (1, N * 100);
para k = 1: size (a, 2)
i = 1;
para j = (k-1) * 100 1: k * 100
s (j) cicatriz = (a k () 1, i);% sinal BPSK
i = i 1;
end;
end;
sorig = s;% salvar sinal BPSK para o efeito futuro da adição de ruído
gmsksig = zeros (N * 100,1);
sorig bpsksig =;
SNR =- 20 EbNo 3;% SNR em dB, 3 dB é porque a adição de ruído a um sinal real,
% não complexas
snoise = zeros (N * 100,1);
ruído = zeros (N * 100,1);
snoise = AWGN (bpsksig, SNR, 'medida', 123, 'db');
snoise1 = zeros (N * 100,1);
noise1 = zeros (N * 100,1);
ruído = snoise sorig;
snoise1 = AWGN (bpsksig, SNR, 'medida', 1234, 'db');
noise1 = snoise1-sorig;
snoise2 = AWGN (bpsksig, SNR, 'medida', 234, 'db');
noise2 = snoise2-sorig;s = s1 s2 ruído noise1;% 2 caminhos desbotada
detector correlacionador% coerente
tt = 0:0.01 T *: T-0,01 * T;
sinerom = zeros (100,2);
cosintegral = zeros (N, 2.100);
cossum = zeros (N, 2);
sinerom (1,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sorrir" border="0" />
= sin (2 * pi * f * tt);% cópia do sinal senoidal representando '1 '
sinerom (2,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sorrir" border="0" />
=- sin (2 * pi * f * tt);% cópia do sinal senoidal representando '-1' com a fase invertida
para k = 1: size (a, 2)
for i = 1:2
for jj = 1:100
(k cosintegral, i, jj) = s (k (-1) * 100 jj) .* sinerom (i, jj);% aqui correlação do tipo detector
end;% é realizado; primeira multiplicando-se o sinal recebido
% com cópias do sinal no 2 ramos de
correlator%
end;
end;
j = 0;
para k = 1: size (a, 2)
for i = 1:2
k cossum (, i) = (soma cosintegral (k, i,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sorrir" border="0" />
);% Aqui é a integração ou a soma das amostras th
end;
maxcossum (k) = max (cossum (k,
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sorrir" border="0" />
);% Valor aqui max dos ramos correlacionador é determinado
end;
para k = 1: size (a, 2)
for i = 1:2
se k cossum (, i) == maxcossum (k)
indexcossum (k) = i;% aqui o número da agência onde o máximo
% Seja alcançado (1 ou 2)
end;
end;
end;
atrsec = [0 1];
para k = 1: size (a, 2)
adetsec (k) = atrsec (indexcossum (k));% do ramo 1 significa "1" foi transmitido
end;% dos meios ramo 2 '-1' foi transmitido
para j = 1: size (a, 2)
res (j) = adetsec (j)-a (j);
end;
max (res)
min (res)
kjk = 0;
para j = 1: size (a, 2)
caso julgado (j) == 0
kjk kjk = 1;
end;
end;
errornum size = (a, 2)-número% kjk de erros
e formato de curta distância;
errornum bercalc = / size (a, 2% BER)
formato;
end%
O m-arquivo anexado é o mesmo.Estes símbolos emoções me fez fazer
este.
Desculpe, mas você precisa de login para ver esta penhora