Código de programa de rendimiento e implementación de comunicaciones de espectro ensanchado con salto de frecuencia basado en Matlab
rho_b2=0:0.1:35;
para i=1:longitud(rho_b1)
smlid_err_prb(i) =ssfh_Pe(rho_b1(i));
end;
para i=1:longitud(rho_b2)
temp=10^(rho_b2(i) /10);
if (tempgt; 2)
theo_err_rate(i)=1/(exp(1)*temp);
else p> p>
theo_err_rate(i)=(1/2)*exp(-temp/2
fin
fin; >semilogy (rho_b1, smlid_err_prb, 'k*', rho_b2, theo_err_rate, 'k-);
El proceso de llamada a la subfunción ssfh_Pe en el programa es el siguiente:
función [p]=ssfh_Pe( tho_in_dB)
rho=10^(rho_in_dB/10);
Eb=rho;
if(rhogt;2) alpa = 2/rho;
else alpa=1;
fin;
agma=sqrt(1/(2*alpha));
N=10000 ;
para i=1:N
temp=rand
if(templt.0.5) data(i)=1 ;
else datos(i)=0
fin;
fin
para i=1: N
if( datos(i)==0)
rlc(i)=sqrt(Eb); rls(i)=0; 0;
más
rlc(i)=0; r2c(i)=sqrt(Eb); p>
fin ;
if(randlt;alpha)
rlc(i)=rlc(i) gngauss(sgma);
rls( i)=rls(i ) gngauss(sgma);
r2c(i)=r2c(i) gngauss(sgma);
r2s(i)=r2s(i) gngauss); (sgma);
p>
fin
fin
num_of_err=0; N
r1=rlc (i)^2 rls(i)^2;
r2=r2c(i)^2 r2s(i)^2;
if(r1gt;r2) decis=0 ;<
else decis=1;
fin
if(decis~=data(i) )
num_off_eff=num_of_err 1;
fin
fin
p=num_of_err/N; >La función de variable aleatoria de distribución gaussiana gngauss
La programación es la siguiente
función[gsrv1, gsrv2]=gngauss(n, sgma)
if nargin==0,
m=0; =1 ;
elseif nargin ==1,
sgma=m;
end; ;
z=sgma*(sqrt(2*log(1/(1-u))));
u=rand;
gsrv1= m z* cos(2*pi*u);
gsrv2=m z*sin(2*pi*u);