Estoy intentando simular BPSK en un canal con desvanecimiento de Rayleigh y AWGN, luego obtener la probabilidad de error de bits (BEP). Mi programa está escrito en C.
Comparé mi gráfica BEP vs \ $ \ frac {E_b} {N_0} \ $ (SNR por bit) con una generada usando la fórmula BEP = \ $ \ frac {1} {2} (1- \ sqrt { \ frac {\ bar {\ gamma_b}} {1+ \ bar {\ gamma_b}}}) \ $. Parece que mi BEP simulada siempre es aproximadamente el doble que la BEP teórica.
Enmisimulación,elmodelodeseñalBPSKrecibidovienedadopor\$r(k)=\sqrt{E_s}\alphae^{j\phi(k)}+n(k)\$dondekeselpasodetiempo,alfaeslavariablealeatoriadistribuidaRayleighyn(k)eselruidodebidoaAWGN.
\$E[\alpha^2]=2\sigma^2\$,y\$\alpha\$segeneracomo\$\alpha=\sqrt{w_1^2+w_2^2}\$donde\$w_1,w_2\simN(0,\sigma^2)\$.Aquí,\$\sigma^2=0.25\$.
Asíescomoseimplementamiprograma.
1)Establezcalafasedelmensajeen2D(msg_phase[0]=0.0,msg_phase[1]=\$\pi\$)
2)ParadiferentesvaloresdeSNR,hagalosiguiente:
2a)Calcular\$E_s=E_b=10^\frac{SNR}{10}*N_0\$
2b)Seleccionaaleatoriamentelaseñalparatransmitir,concadaseñalconlamismaprobabilidaddeserenviada.
2c)Genere\$\alpha\$generandoprimerounpardevariablesaleatoriasgaussianasdemediaceroindependientesconunavarianzaiguala0.25,luegoconfigurando\$\alpha\$segúnlaecuacióndearriba.
2d)GeneraotropardevariablesaleatoriasgaussianasestándarindependientescomoAWGN.
2e)Establezcalaseñalrecibidaen(\$\alpha\$*transmission_signal+AWGNnoise)
2f)Calculelamagnitudyfasedelaseñalrecibidadelasiguientemanera:
\$\text{Magnitud}=\sqrt{\text{Rx}_0^2+\text{Rx}_1^2}\$
\$\text{fase}=\text{tan}^{-1}\frac{\text{Rx}_1}{\text{Rx}_0}\$
Seutilizanenladecisióndemireceptor.
2g)Decisióndelreceptor.Paraunadecisiónincorrecta,cuenteelnúmerodebitsdeerror.
Repitalospasos2ba2ghastaobtener500bitsdeerror,luegocalculeBEP.
SeutilizóelmismocódigoparasimularelBPSKdiferencialylosresultadoscoincidieronconlafórmulaparaBDPSK.Elmodelodeseñalrecibidoparalassimulacionesdiferencialeses\$r(k)=\sqrt{E_s}\alphae^{j(\phi(k)+\theta)}+n(k)\$,porloquebásicamenteusamoselmismocódigoperocon\$\theta=0\$ylageneraciónde\$\alpha\$.
NoséporquémiBEPeseldobledelBEPobtenidodelafórmula.
HevistoalgunassimulacionesdeMatlabquehacenalgollamado"ecualización" para eliminar el efecto de desvanecimiento en el receptor, antes de calcular la métrica de decisión.
Por ejemplo,
for ii = 1:length(Eb_N0_dB)
n = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)]; % white gaussian noise, 0dB variance
h = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)]; % Rayleigh channel
% Channel and noise Noise addition
y = h.*s + 10^(-Eb_N0_dB(ii)/20)*n;
% equalization
yHat = y./h;
% receiver - hard decision decoding
ipHat = real(yHat)>0;
% counting the errors
nErr(ii) = size(find([ip- ipHat]),2);
No hago eso, pero ¿es necesario? Como las simulaciones de Matlab se implementan de manera muy diferente a mi programa, no estoy seguro de cómo funcionaría la "igualación" en mi caso.