anexo i: código...
TRANSCRIPT
66
Anexo I: Código fuente
Funciones para el modelo de sombra causada por árboles al borde
del camino
N.m
%N(x)
function N=N(x)
N=-0.443*x+34.76; %x es el ángulo deseado de elevación del
%trayecto
M.m
%M(x)
function M=M(x)
M=3.44+0.0975*x-0.002*x^2; %x es el ángulo deseado de
%elevación del trayecto
Al.m
%Al
function Al=Al(p,x)
Al=-M(x)*log(p)+N(x);
A20.m
%A20(p,x,f)
function A20=A20(p,x,f)
fm=1.5; %1.5 GHz
A20=Al(p,x)*exp(1.5*(1/sqrt(fm)-1/sqrt(f)));
A.m %A(p,x,f)
function A=A(p,x,f)
if x>=7&x<20
x=20;
67
end
if x>60
disp('El ángulo deseado no está dentro del margen')
else
if p>20&p<=80
A=A20(20,x,f)*(1/log(4))*log(80/(p)); %esto es
válido para 80%>=p>=20%
else
if p>=1&p<=20
A=A20(p,x,f); %esto es válido para 20%>=p>=1%
end
end
end
Sombra1.m %Sombra de los árboles para 60º de elevaación y 1.6GHz
function sombra1=sombra1(n)
switch n
case 1
sombra1=8.5; %A(1,60,1.6)
case 2
sombra1=5; %A(5,60,1.6)
case 3
sombra1=3.5; %A(10,60,1.6)
case 4
sombra1=2.6; %A(15,60,1.6)
case 5
sombra1=2; %A(20,60,1.6)
case 6
sombra1=1.4; %A(30,60,1.6)
end
sombra2.m %Sombra de los árboles para 60º de elevaación y 2.6GHz
function sombra2=sombra2(n)
switch n
case 1
sombra2=11; %A(1,60,2.6)
case 2
sombra2=6.5; %A(5,60,2.6)
case 3
sombra2=4.5; %A(10,60,2.6)
case 4
sombra2=3.4; %A(15,60,2.6)
case 5
sombra2=2.6; %A(20,60,2.6)
68
case 6
sombra2=1.8; %A(30,60,2.6)
end
sombra3.m %Sombra de los árboles para 80º de elevaación y 1.6GHz
function sombra3=sombra3(n)
switch n
case 1
sombra3=4.1; %A(1,80,1.6)
case 2
sombra3=2; %A(5,80,1.6)
case 3
sombra3=1.5; %A(10,80,1.6)
case 4
sombra3=1.4; %A(15,80,1.6)
case 5
sombra3=1.3; %A(20,80,1.6)
case 6
sombra3=1.2; %A(30,80,1.6)
end
sombra4.m
%Sombra de los árboles para 80º de elevación y 2.6GHz
function sombra4=sombra4(n)
switch n
case 1
sombra4=9; %A(1,80,2.6)
case 2
sombra4=5.2; %A(5,80,2.6)
case 3
sombra4=3.8; %A(10,80,2.6)
case 4
sombra4=3.2; %A(15,80,2.6)
case 5
sombra4=2.8; %A(20,80,2.6)
case 6
sombra4=2.5; %A(30,80,2.6)
end
valor_1_6GHz.m
%Interpolación lineal para el valor calculado para 60º y
80º a 1.6 GHz
function valor_1_6GHz=valor_1_6GHz(i)
n=6;
69
for i=1:n
if sombra1(i)>=sombra3(i)
valor_1_6GHz(i)=abs(sombra1(i)-
sombra3(i))/2+sombra3(i);
else
valor_1_6GHz(i)=abs(sombra1(i)-
sombra3(i))/2+sombra1(i);
end
end
valor_2_6GHz.m %Interpolación lineal para el valor calculado para 60º y
80º a 2.6 GHz
function valor_2_6GHz=valor_2_6GHz(i)
n=6;
for i=1:n
if sombra2(i)>=sombra4(i)
valor_2_6GHz(i)=abs(sombra2(i)-
sombra4(i))/2+sombra4(i);
else
valor_2_6GHz(i)=abs(sombra2(i)-
sombra4(i))/2+sombra2(i);
end
end
Funciones para el modelo de sombra causada por edificios al
borde del camino
p_bloqueo.m
% Porcentaje de probabilidad de bloqueo debido a los
%edificios. “teta” es el ángulo de elevación del rayo hacia
%el satélite por encima de la horizontal en grados y fi es
%el ángulo de acimut del rayo con respecto a la dirección
%de la calle en grados. Cf es el despejamiento de la zona
%de Fresnel.
function p_bloqueo=p_bloqueo(teta,fi,Cf)
hb=15; %Altura más común de los edificios (modal)
hm=1.5; %Altura del móvil por encima del suelo
dm=17.5; %distancia del móvil a la fachada de los edificios
f=1.6*10^9; %Frecuencia en GHz
h1=hm+(dm*tand(teta)/sind(fi)); %Altura del rayo por encima
del suelo en la fachada de los edificios
dr=dm/(sind(fi)*cosd(teta)); %Distancia en pendiente del
móvil a la posición a lo largo del rayo que
70
%supera en sentido vertical la
fachada de los edificos
c=3*10^8; %velocidad de la luz
landa=c/f; %Longitud de onda
h2=Cf*(landa*dr)^(0.5); %distancia de despejamiento de
Fresnel necesaria por encima de los edificios
p_bloqueo=100*exp(-(h1-h2)^2/(2*hb^2));
MKFa.m % MKF de una calle.
function MKFa=MKFa(fi)
h=12; %altura media del edificio
w=48.76; %ancgura media de la calle
MKFa=atand(h*sind(fi)/(w/2));
MKFb.m % MKF de una calle con edificios a un solo lado.
function MKFb=MKFb(fi)
h=10; %altura media del edificio
w1=10; %anchura media de la calle
MKFb=atand(h*sind(fi)/(w1/2));
MKFc1.m
% MKF de un cruce. Primera función.
function MKFc1=MKFc1(fi)
h=15; %altura media del edificio
w1=13.18; %anchura media de una calle
w2=13.10; %anchura media de la otra calle
MKFc1=atand(h*sind(fi)/(w1/2));
MKFc2.m % MKF de un cruce. Segunda función.
function MKFc2=MKFc2(fi)
h=15; %altura media del edificio
w1=13.18; %anchura media de una calle
w2=13.10; %anchura media de la otra calle
MKFc2=atand(h*sind(90-fi)/(w2/2));
71
MKFc.m % MKF de un cruce.
function MKFc=MKFc(h,w1,fi)
MKFc=MKFc1(fi)+MKFc2(fi);
Funciones para trayectos múltiples en entorno montañoso
p_mult_1.m
% Distribución de los valores del desvanecimiento debidos a
trayectos
% múltiples en terreno montañoso
% A: incremento del desvanecimiento (dB)
% f: frecuencia en GHz
% teta: ángulo de elevación
function p_mult_1=p_mult_1(A) %para la frecuencia 0.87 GHz y
%elevación teta=30º
a=34.52;
b=1.855;
p_mult_1=a*A.^(-b);
p_mult_2.m
% Distribución de los valores del desvanecimiento debidos a
trayectos
% múltiples en terreno montañoso
% A: incremento del desvanecimiento (dB)
% f: frecuencia en GHz
% teta: ángulo de elevación
function p_mult_2=p_mult_2(A) %para la frecuencia 0.87 GHz
%y elevación teta=45º
a=31.64;
b=2.464;
p_mult_2=a*A.^(-b);
72
p_mult_3.m
% Distribución de los valores del desvanecimiento debidos a
trayectos
% múltiples en terreno montañoso
% A: incremento del desvanecimiento (dB)
% f: frecuencia en GHz
% teta: ángulo de elevación
function p_mult_3=p_mult_3(A) %para la frecuencia 1.5 GHz y
elevación teta=30º
a=33.19;
b=1.710;
p_mult_3=a*A.^(-b);
p_mult_4.m
% Distribución de los valores del desvanecimiento debidos a
trayectos
% múltiples en terreno montañoso
% A: incremento del desvanecimiento (dB)
% f: frecuencia en GHz
% teta: ángulo de elevación
function p_mult_4=p_mult_4(A) %para la frecuencia 0.87 GHz
y elevación teta=45º
a=39.95;
b=2.321;
p_mult_4=a*A.^(-b);
Funciones para trayectos múltiples en un ambiente de árboles
que bordean el camino
m_arboles_1.m
% Distribución de los valores del desvanecimiento debidos a
%trayectos múltiples en un mabiente de árboles que bordean
%el camino.
function m_arboles_1=m_arboles_1(A) %frecuencia=0.87GHz
u=125.6;
v=1.116;
m_arboles_1=u*exp(-v*A)
73
m_arboles_2.m
% Distribución de los valores del desvanecimiento debidos a
%trayectos múltiples en un mabiente de árboles que bordean
%el camino.
function m_arboles_2=m_arboles_2(A) %frecuencia=1.5GHz
u=127.7;
v=0.8573;
m_arboles_2=u*exp(-v*A);
Funciones para la predicción de las estadísticas de
desvanecimiento para un solo enlace de satélites
PA_urb.m
% Probabilidad de aparición del estado A. El estado A se
%corresponde con la condición de visibilidad directa en
%medios despejados.
function PA_urb=PA_urb(teta) %para zonas urbanas
a=1.43*10^(-4);
PA_urb=1-a*(90-teta)^2; %para 10º<=teta<=90º
PA_surb.m
% Probabilidad de aparición del estado A. El estado A se
%corresponde con la condición de visibilidad directa en
%medios despejados.
function PA_surb=PA_surb(teta) %para zonas suburbanas
a=6*10^(-5);
PA_surb=1-a*(90-teta)^2; %para 10º<=teta<=90º
PB_urb.m
% Probabilidad de aparición del estado B. El estado B se
%corresponde con la condición de sombra leve (causada por
%árboles y/o pequeños obstáculos, tales como los portes de
%las compañías de servicios públicos.
function PB_urb=PB_urb(teta) %para zonas urbanas
b=1/4;
PB_urb=b*PC_urb(teta);
74
PB_surb.m
% Probabilidad de aparición del estado B. El estado B se
%corresponde con la condición de sombra leve (causada por
%árboles y/o pequeños obstáculos, tales como los portes de
%las compañías de servicios públicos.
function PB_surb=PB_surb(teta) %para zonas suburbanas
b=4;
PB_surb=b*PC_surb(teta);
PC_urb.m
% Probabilidad de aparición del estado C. El estado C se
%corresponde con la condición de bloqueo total (debida a
%obstáculos importantes, tales como montañas y edificios.
function PC_urb=PC_urb(teta) %para zonas urbanas
b=1/4;
PC_urb=(1-PA_urb(teta))/(1+b);
PC_surb.m
% Probabilidad de aparición del estado C. El estado C se
%corresponde con la condición de bloqueo total (debida a
%obstáculos importantes, tales como montañas y edificios.
function PC_surb=PC_surb(teta) %para zonas suburbanas
b=4;
PC_surb=(1-PA_surb(teta))/(1+b);
MrA_urb.m
%Potencia multitrayecto media en los estados A, B y C.
function MrA_urb=MrA_urb(teta) %zonas urbanas
if teta==30 %teta=30º
MrA_urb=0.158;
else
if teta>=45 %teta>=45º
MrA_urb=0.1;
else
MrA_urb=(0.158-0.1)/2; %Interpolación lineal de
los valores cuando teta=30º(0.185) y teta=45º(0.1)
end
end
75
MrA_surb.m
%Potencia multitrayecto media en los estados A, B y C.
function MrA_surb=MrA_surb(teta) %zonas suburbanas
if teta==30 %teta=30º
MrA_surb=0.0631;
else
if teta>=45 %teta>=45º
MrA_surb=0.0398;
else
MrA_surb=(0.0631-0.0398)/2; %Interpolación lineal
%de los valores cuando
%teta=30º (0.0631) y
%teta=45º (0.0398)
end
end
fxA_urb30.m
%Función fxA para zonas urbanas y ángulo de elevació 30º.
%La integral de fxA nos da fA.
function fxA_urb30=fxA_urb30(x)
fxA_urb30=@(x)((2.*x./MrA_urb(30)).*exp(-
(1+x.^2)./MrA_urb(30)).*besseli(0,2.*x./MrA_urb(30)));
fxA_surb30.m
%Función fxA para zonas suburbanas y ángulo de elevación
%30º. La integral de fxA nos da fA.
function fxA_surb30=fxA_surb30(x) %
fxA_surb30=@(x)((2.*x./MrA_surb(30)).*exp(-
(1+x.^2)./MrA_surb(30)).*besseli(0,2.*x./MrA_surb(30)));
fxA_urb45.m
%Función fxA para zonas urbanas y ángulo de elevació 45º.
%La integral de fxA nos da fA.
function fxA_urb45=fxA_urb45(x)
fxA_urb45=@(x)((2.*x./MrA_urb(45)).*exp(-
(1+x.^2)./MrA_urb(45)).*besseli(0,2.*x./MrA_urb(45)));
76
fxA_surb45.m
%Función fxA para zonas suburbanas y ángulo de elevació
%45º. La integral de fxA nos da fA.
function fxA_surb45=fxA_surb45(x)
fxA_surb45=@(x)((2.*x./MrA_surb(45)).*exp(-
(1+x.^2)./MrA_surb(45)).*besseli(0,2.*x./MrA_surb(45)))
fA_urb30.m
%Función fA(x<=x0)para zonas urbanas y ángulo de elevación
%30º.
function fA_urb30=fA_urb30(x0)
fA_urb30=quad(fxA_urb30,0,x0);
fA_surb30.m
%Función fA(x<=x0)para zonas suburbanas y ángulo de
%elevación 30º.
function fA_surb30=fA_surb30(x0)
fA_surb30=quad(fxA_surb30,0,x0);
fA_urb45.m
%Función fA(x<=x0)para zonas urbanas y ángulo de elevación
%45º.
function fA_urb45=fA_urb45(x0)
fA_urb45=quad(fxA_urb45,0,x0);
fA_surb45.m
%Función fA(x<=x0)para zonas suburbanas y ángulo de
%elevación 45º.
function fA_surb45=fA_surb45(x0)
fA_surb45=quad(fxA_surb45,0,x0);
77
fxzB.m
%Función fxzB. La integral de fxzB nos da fB.
function fxzB=fxzB(x,y)
MrB=10^(-1.5); %-15dB
m=0.1; %-10dB
sigma=10^0.3; %3dB
fxzB=@(x,z)(6.930./(sigma.*MrB).*x.*(1-(1./z.*exp(-
(20.*log10(z)-m).^2./(2.*sigma.^2)-
(x.^2+z.^2)./MrB).*besseli(0,2.*x.*z./MrB))));
fB.m
%Paso 2: Cálculo de la distribución acumulativa del nivel
%de señal x en el estado B. Función fB(x0).
function fB=fB(x0)
epsilon=0.001;
fB=dblquad(fxzB,0,x0,0,epsilon);
fC.m
%Paso 3: cálculo de la distribución acumulativa del nivel
%de señal x en el estado C.
function fC=fC(x0)
MrC=10^(-2); %-20dB
fC=1-exp(-x0^2/MrC);
78
FDA.m
%Paso 4: cálculo de la FDA cuando el nivel de señal x es
%inferior al nivel umbral x0 con una probabilidad P, en
%condiciones de propagación mixta.
function FDA=FDA(teta,zona,prof_desv)
x0=10^(-prof_desv/20);
if zona==0 %Zona urbana
PA=PA_urb(teta);
PB=PB_urb(teta);
PC=PC_urb(teta);
if teta==30 %Ángulo de elevación 30º
fA=fA_urb30(x0);
else %Ángulo de elevación 45º
fA=fA_urb45(x0);
end
else %Zona suburbana
PA=PA_surb(teta);
PB=PB_surb(teta);
PC=PC_surb(teta);
if teta==30 %Ángulo de elevación 30º
fA=fA_surb30(x0);
else %Ángulo de elevación 45º
fA=fA_surb45(x0);
end
end
FDA=100*(PA*fA+PB*fB(x0)+PC*fC(x0));
vector.m
%Obtención del vector para poder representar en una gráfica
%logarítmica la Figura 3.26.
function v=vector(teta,zona)
for i=0:30
v(i+1)=FDA(teta,zona,i);
end
79
Funciones para la diversidad de satélites caso sin correlación
teta_n.m %Elevación de cada satélite. Vamos a suponer que el número
%de satélites visibles (N) es 3.
function teta_n=teta_n(i)
if i==1
teta_n=30;
else
if i==2
teta_n=50;
else
teta_n=70;
end
end
PA_n_urb.m % Probabilidad de aparición del estado A en sistemas OSG.
%El estado A se corresponde con la condición de visibilidad
%directa en medios despejados.
function PA_n_urb=PA_n_urb(i) %para zonas urbanas
a=1.43*10^(-4);
PA_n_urb=1-a*(90-teta_n(i))^2; %para 10º<=teta<=90º
PA_n_surb.m % Probabilidad de aparición del estado A en sistemas OSG.
%El estado A se corresponde con la condición de visibilidad
%directa en medios despejados.
function PA_n_surb=PA_n_surb(i) %para zonas suburbanas
a=6*10^(-5);
PA_n_surb=1-a*(90-teta_n(i))^2; %para 10º<=teta<=90º
PA_div_urb.m %La probabilidad de que aparezca el estado A tras la
%diversidad con selección de estado para sistemas OSG.
function PA_div_urb=PA_div_urb %Zonas urbanas
N=3; %Hemos supuesto 3 satélites visibles
productoA=1; %inicialmente vale 1
for i=1:N
productoA=productoA*(1-PA_n_urb(i));
80
end
PA_div_urb=1-productoA;
PA_div_surb.m
%La probabilidad de que aparezca el estado A tras la
%diversidad con selección de estado para sistemas OSG.
function PA_div_surb=PA_div_surb %Zonas suburbanas
N=3; %Hemos supuesto 3 satélites visibles
productoA=1; %inicialmente vale 1
for i=1:N
productoA=productoA*(1-PA_n_surb(i));
end
PA_div_surb=1-productoA;
PC_n_urb.m % Probabilidad de aparición del estado Cpara sistemas OSG.
%El estado C se corresponde con la condición de bloqueo
%total (debida a obstáculos importantes, tales como
%montañas y edificios.
function PC_n_urb=PC_n_urb(i) %para zonas urbanas
b=1/4;
PC_n_urb=(1-PA_n_urb(i))/(1+b);
PC_n_surb.m % Probabilidad de aparición del estado C para sistemas OSG.
%El estado C se corresponde con la condición de bloqueo
%total (debida a obstáculos importantes, tales como
%montañas y edificios.
function PC_n_surb=PC_n_surb(i) %para zonas suburbanas
b=4;
PC_n_surb=(1-PA_n_surb(i))/(1+b);
PC_div_urb.m %La probabilidad de que aparezca el estado C tras la
%diversidad con selección de estado para sistemas OSG.
function PC_div_urb=PC_div_urb %Zonas urbanas
N=3; %Hemos supuesto 3 satélites visibles
productoC=1; %inicialmente vale 1
for i=1:N
productoC=productoC*PC_n_urb(i);
end
81
PC_div_urb=productoC;
PC_div_surb.m %La probabilidad de que aparezca el estado C tras la
%diversidad con selección de estado para sistemas OSG.
function PC_div_surb=PC_div_surb %Zonas suburbanas
N=3; %Hemos supuesto 3 satélites visibles
productoC=1; %inicialmente vale 1
for i=1:N
productoC=productoC*PC_n_surb(i);
end
PC_div_surb=productoC;
PB_div_urb.m %La probabilidad de que aparezca el estado B tras la
%diversidad con selección de estado para sistemas OSG.
function PB_div_urb=PB_div_urb %Zonas urbanas
PB_div_urb=1-PA_div_urb-PC_div_urb;
PB_div_surb.m %La probabilidad de que aparezca el estado B tras la
%diversidad con selección de estado para sistemas OSG.
function PB_div_surb=PB_div_surb %Zonas suburbanas
PB_div_surb=1-PA_div_surb-PC_div_surb;
82
FDA_OSG.m %Paso 4: cálculo de la FDA cuando el nivel de señal x es
%inferior al nivel umbral x0 con una probabilidad P, en
%condiciones de propagación mixta y diversidad de satélites
%en sistemas OSG. En este caso se van a mantener constantes
%otros valores de parámetros con teta=30º a efectos de una
%utilización provisional. Los ángulos de elevación de los
%satélites visibles se controlan desde teta_n(i).
function FDA_OSG=FDA_OSG(zona,prof_desv)
x0=10^(-prof_desv/20);
if zona==0 %Zona urbana
PA=PA_div_urb;
PB=PB_div_urb;
PC=PC_div_urb;
fA=fA_urb30(x0); %Se considera sólo la fA de 30º
else %Zona suburbana
PA=PA_div_surb;
PB=PB_div_surb;
PC=PC_div_surb;
fA=fA_surb30(x0);
end
FDA_OSG=100*(PA*fA+PB*fB(x0)+PC*fC(x0));
Vector_OSG.m
%Obtención del vector para poder representar en la gráfica
%en escala logarítmica.
function v=vector_OSG(zona)
for i=0:30
v(i+1)=FDA_OSG(zona,i);
end
teta_noOSG.m %Elevación de cada satélite en sistemas no OSG. Vamos a
%suponer que el número de satélites
%visibles (N) es 3. El ángulo de elevación del satélite en
%estos sistemas varía con el tiempo.
%Hemos considerado que los satélites se encuentran a una
%altura de 2000Km(LEO más alto) sobre la Tierra, por lo que
%la velocidad del satélite es 9.747Km/seg(vLEO). La
%velocidad de la Tierra es 0.46511Km/seg(vT).
function teta_noOSG=teta_noOSG(i,t)
vLEO=9.747; %km/seg
vT=0.46511; %Km/seg
83
hs=2000; %Km
if i==1
teta_noOSG=30+atand((vLEO-vT)*t/hs); %en el instante
t=0 suponemos que el satélite tiene un águlo de elevación
de 30º
else
if i==2
teta_noOSG=50+atand((vLEO-vT)*t/hs); % entre un
satélite y otro hay una diferencia de 20º
else
if i==3
teta_noOSG=70+atand((vLEO-vT)*t/hs); % entre
un satélite y otro hay una diferencia de 20º
end
end
end
PA_n_urb_noOSG.m % Probabilidad de aparición del estado A en sistemas no
%OSG. El estado A se corresponde con la condición de
%visibilidad directa en medios despejados.
function PA_n_urb_noOSG=PA_n_urb_noOSG(i,t) %para zonas
urbanas
a=1.43*10^(-4);
PA_n_urb_noOSG=1-a.*(90-teta_noOSG(i,t)).^2; %para
10º<=teta<=90º
PA_n_surb_noOSG.m % Probabilidad de aparición del estado A en sistemas no
%OSG. El estado A se corresponde con la condición de
%visibilidad directa en medios despejados.
function PA_n_surb_noOSG=PA_n_surb_noOSG(i,t) %para zonas
suburbanas
a=6*10^(-5);
PA_n_surb_noOSG=1-a.*(90-teta_noOSG(i,t)).^2; %para
10º<=teta<=90º
prodA_urb.m function prodA_urb=prodA_urb(t)
N=3; %Hemos supuesto 3 satélites visibles
for i=1:N
if i==1
prodA_urb=1-PA_n_urb_noOSG(i,t);
else
84
prodA_urb=prodA_urb.*(1-PA_n_urb_noOSG(i,t));
end
end
prodA_surb.m
function prodA_surb=prodA_surb(t)
N=3; %Hemos supuesto 3 satélites visibles
for i=1:N
if i==1
prodA_surb=1-PA_n_surb_noOSG(i,t);
else
prodA_surb=prodA_surb.*(1-PA_n_surb_noOSG(i,t));
end
end
PA_div_urb_noOSG.m %La probabilidad de que aparezca el estado A tras la
5diversidad con selección de estado para sistemas no OSG.
function PA_div_urb_noOSG=PA_div_urb_noOSG(t) %Zonas
urbanas
PA_div_urb_noOSG=@(t)(1-prodA_urb(t));
PA_div_surb_noOSG.m %La probabilidad de que aparezca el estado A tras la
%diversidad con selección de estado para sistemas no OSG.
function PA_div_surb_noOSG=PA_div_surb_noOSG(t) %Zonas
%suburbanas
PA_div_surb_noOSG=@(t)(1-prodA_surb(t));
PAm_urb_noOSG.m %La probabilidad media de aparición del estado A en
%sistemas no OSG,una vez que ha actuado la diversidad de
%satélites del instante t1 al t2.
function PAm_urb_noOSG=PAm_urb_noOSG(t2) %zonas urbanas
t1=0; %suponemos que el intante inicial es 0 segundos.
PAm_urb_noOSG=1/(t2-t1)*(quad(PA_div_urb_noOSG,t1,t2));
85
PAm_surb_noOSG.m
%La probabilidad media de aparición del estado A en
%sistemas no OSG,una vez que ha actuado la diversidad de
%satélites del instante t1 al t2.
function PAm_surb_noOSG=PAm_surb_noOSG(t2) %zonas
suburbanas
t1=0; %suponemos que el intante inicial es 0 segundos.
PAm_surb_noOSG=1/(t2-t1)*(quad(PA_div_surb_noOSG,t1,t2));
PC_n_urb_noOSG.m
% Probabilidad de aparición del estado Cpara sistemas no
%OSG. El estado C se corresponde con la condición de
%bloqueo total (debida a obstáculos importantes, tales como
% montañas y edificios.
function PC_n_urb_noOSG=PC_n_urb_noOSG(i,t) %para zonas
%urbanas
b=1/4;
PC_n_urb_noOSG=(1-PA_n_urb_noOSG(i,t))./(1+b);
PC_n_surb_noOSG.m % Probabilidad de aparición del estado C para sistemas no
%OSG. El estado C se corresponde con la condición de
%bloqueo total (debida a obstáculos importantes, tales como
% montañas y edificios.
function PC_n_surb_noOSG=PC_n_surb_noOSG(i,t) %para zonas
%suburbanas
b=4;
PC_n_surb_noOSG=(1-PA_n_surb_noOSG(i,t))./(1+b);
productoC_urb.m function prodC_urb=prodC_urb(t)
N=3; %Hemos supuesto 3 satélites visibles
for i=1:N
if i==1
prodC_urb=PC_n_urb_noOSG(i,t);
else
prodC_urb=prodC_urb.*PC_n_urb_noOSG(i,t);
end
end
86
productoC_surb.m function prodC_surb=prodC_surb(t)
N=3; %Hemos supuesto 3 satélites visibles
for i=1:N
if i==1
prodC_surb=PC_n_surb_noOSG(i,t);
else
prodC_surb=prodC_surb.*PC_n_surb_noOSG(i,t);
end
end
PC_div_urb_noOSG.m %La probabilidad de que aparezca el estado C tras la
%diversidad con selección de estado para sistemas no OSG.
function PC_div_urb_noOSG=PC_div_urb_noOSG(t) %Zonas
%urbanas
PC_div_urb_noOSG=@(t)(prodC_urb(t));
PC_div_surb_noOSG.m %La probabilidad de que aparezca el estado C tras la
%diversidad con selección de estado para sistemas no OSG.
function PC_div_surb_noOSG=PC_div_surb_noOSG(t) %Zonas
%suburbanas
PC_div_surb_noOSG=@(t)(prodC_surb(t));
PCm_urb_noOSG.m %La probabilidad media de aparición del estado C en
%sistemas no OSG,una vez que ha actuado la diversidad de
%satélites del instante t1 al t2.
function PCm_urb_noOSG=PCm_urb_noOSG(t2) %zonas urbanas
t1=0; %suponemos que el intante inicial es 0 segundos.
PCm_urb_noOSG=1/(t2-t1)*(quad(PC_div_urb_noOSG,t1,t2));
PCm_surb_noOSG.m %La probabilidad media de aparición del estado C en
%sistemas no OSG,una vez que ha actuado la diversidad de
%satélites del instante t1 al t2.
function PCm_surb_noOSG=PCm_surb_noOSG(t2) %zonas
87
%suburbanas
t1=0; %suponemos que el intante inicial es 0 segundos.
PCm_surb_noOSG=1/(t2-t1)*(quad(PC_div_surb_noOSG,t1,t2));
PB_div_urb_noOSG.m %La probabilidad de que aparezca el estado B tras la
%diversidad con selección de estado para sistemas no OSG.
function PB_div_urb_noOSG=PB_div_urb_noOSG(t) %Zonas
%urbanas
PB_div_urb_noOSG=@(t)(prodA_urb(t)-prodC_urb(t));
PB_div_surb_noOSG.m %La probabilidad de que aparezca el estado B tras la
%diversidad con selección de estado para sistemas no OSG.
function PB_div_surb_noOSG=PB_div_surb_noOSG(t) %Zonas
%suburbanas
PB_div_surb_noOSG=@(t)(prodA_surb(t)-prodC_surb(t));
PBm_urb_noOSG.m
%La probabilidad media de aparición del estado B en
%sistemas no OSG,una vez que ha actuado la diversidad de
%satélites del instante t1 al t2.
function PBm_urb_noOSG=PBm_urb_noOSG(t2) %zonas urbanas
t1=0; %suponemos que el intante inicial es 0 segundos.
PBm_urb_noOSG=1/(t2-t1)*(quad(PB_div_urb_noOSG,t1,t2));
PBm_surb_noOSG.m %La probabilidad media de aparición del estado B en
sistemas no OSG,una vez
%que ha actuado la diversidad de satélites del instante t1
al t2.
function PBm_surb_noOSG=PBm_surb_noOSG(t2) %zonas
%suburbanas
t1=0; %suponemos que el intante inicial es 0 segundos.
PBm_surb_noOSG=1/(t2-t1)*(quad(PB_div_surb_noOSG,t1,t2));
88
FDA_noOSG.m %Paso 4: cálculo de la FDA cuando el nivel de señal x es
%inferior al nivel umbral x0 con una probabilidad P, en
%condiciones de propagación mixta y diversidad de satélites
%en sistemas OSG. En este caso se van a mantener constantes
%otros valores de parámetros con teta=30º a efectos de una
%utilización provisional. Los ángulos de elevación de los
%satélites visibles se controlan desde teta_noOSG(i,t).
function FDA_noOSG=FDA_noOSG(zona,prof_desv,t2) %Depende
%del instante t2(la diversidad de satélites actúa del
%instante t1=0 hasta el intane t2).
X0=10^(-prof_desv/20);
if zona==0 %Zona urbana
PA=PAm_urb_noOSG(t2);
PB=PBm_urb_noOSG(t2);
PC=PCm_urb_noOSG(t2);
fA=fA_urb30(x0); %Se considera sólo la fA de 30º
else %Zona suburbana
PA=PAm_surb_noOSG(t2);
PB=PBm_surb_noOSG(t2);
PC=PCm_surb_noOSG(t2);
fA=fA_surb30(x0);
end
FDA_noOSG=100*(PA*fA+PB*fB(x0)+PC*fC(x0));
vector_no OSG.m %Obtención del vector para poder representar en la gráfica
%en escala logarítmica.
function v=vector_noOSG(zona,t2)
for i=0:30
v(i+1)=FDA_noOSG(zona,i,t2);
end
89
Funciones para la diversidad de satélites caso con correlación
p_bloqueo1.m % Porcentaje de probabilidad de bloqueo debido a los
%edificios. teta1 es el ángulo de elevación del rayo hacia
%el satélite 1 por encima de la horizontal en grados y ang1
%es el ángulo de acimut del rayo con respecto a la
%dirección de la calle en grados. Cf es el despejamiento de
%la zona de Fresnel.
function p_bloqueo1=p_bloqueo1(teta1,Cf)
hb=15; %Altura más común de los edificios (modal)
hm=1.5; %Altura del móvil por encima del suelo.
dm=17.5; %distancia del móvil a la fachada de los edificios
w=2*dm; %anchura media de las calles
l=250; %longitud de la calle considerada (l>=200)
f=1.6*10^9; %Frecuencia en GHz
x1=sqrt((hb/tand(teta1))^2-(w/2)^2);
if (x1^2)>(l/2)
x1=l/2;
end
if (x1^2)<0 %si el satélite 1 se encuentra en
%condiciones de visibilidad directa
p_bloqueo1=0; %para toda separación acimutal
else
ang1=round(atand((w/2)/x1)); %Acimut 1
%h1>h2
h1=hm+(dm*tand(teta1)/sind(ang1)); %Altura del rayo por
%encima del suelo en la fachada de los
%edificios. Es válido para 0<teta1<90ºy 0<ang1<180.
dr=dm/(sind(ang1)*cosd(teta1)); %Distancia en pendiente
%del móvil a la posición a lo
%largo del rayo que supera en
%sentido vertical la fachada
%de los edificios. Es válido
%para 0<teta1<90º y 0<ang1<180.
c=3*10^8; %velocidad de la luz
landa=c/f; %Longitud de onda
h2=Cf*(landa*dr)^(0.5); %distancia de despejamiento de
%Fresnel necesaria por encima de
%los edificios. Es válido para
%0<teta1<90ºy 0<ang1<180.
p_bloqueo1=100*exp(-(h1-h2)^2/(2*hb^2));
end
90
p_ploqueo2.m % Porcentaje de probabilidad de bloqueo debido a los
%edificios. teta2 es el ángulo de elevación del rayo hacia
%el satélite 2 por encima de la horizontal en grados y ang2
%es el ángulo de acimut del rayo con respecto a la
%dirección de la calle en grados. Cf es el despejamiento de
%la zona de Fresnel.
function p_bloqueo2=p_bloqueo2(teta2,Cf)
hb=15; %Altura más común de los edificios (modal)
hm=1.5; %Altura del móvil por encima del suelo.
dm=17.5; %distancia del móvil a la fachada de los edificios
w=2*dm; %anchura media de las calles
l=250; %longitud de la calle considerada (l>=200)
f=1.6*10^9; %Frecuencia en GHz
x2=sqrt((hb/tand(teta2))^2-(w/2)^2);
if (x2^2)>(l/2)
x2=l/2;
end
if (x2^2)<0 %si el satélite 2 se encuentra en
%condiciones de visibilidad directa
p_bloqueo2=0; %para toda separación acimutal
else
ang2=round(atand((w/2)/x2)); %Acimut 2
%h1>h2
h1=hm+(dm*tand(teta2)/sind(ang2)); %Altura del rayo por
%encima del suelo en la fachada de los
%edificios. Es válido para 0<teta1<90ºy
%0<ang1<180.
dr=dm/(sind(ang2)*cosd(teta2)); %Distancia en pendiente
%del móvil a la posición a lo
%largo del rayo que supera en
%sentido vertical la fachada
%de los edificios. Es válido
%para 0<teta1<90º y 0<ang1<180.
c=3*10^8; %velocidad de la luz
landa=c/f; %Longitud de onda
h2=Cf*(landa*dr)^(0.5); %distancia de despejamiento de
%Fresnel necesaria por encima de
%los edificios. Es válido para
%0<teta1<90ºy 0<ang1<180.
p_bloqueo2=100*exp(-(h1-h2)^2/(2*hb^2));
end
91
sepacion.m %Cálculo de la separación acimutal.
function separacion=separacion(teta1,teta2,punto)
h=15; %Altura más común de los edificios (modal)
dm=17.5; %distancia del móvil a la fachada de los edificios
w=2*dm; %anchura media de las calles
l=250; %longitud de la calle considerada (l>=200)
x1=sqrt((h/tand(teta1))^2-(w/2)^2);
x2=sqrt((h/tand(teta2))^2-(w/2)^2);
if (x2^2)>(l/2)
x2=l/2;
end
ang1=round(atand((w/2)/x1)); %Acimut 1
ang2=round(atand((w/2)/x2)); %Acimut 2
if punto=='A'|punto=='D'
separacion=0;
end
if punto=='B'
separacion=ang2-ang1; %separación acimutal del punto B
%en grados.
end
if punto=='C'
if (ang1+ang2)<=90
separacion=ang1-ang2; %separación acimutal del
%punto C en grados.
else
separacion=180-ang1-ang2; %separación acimutal del
%punto C en grados
end
end
92
coef_cc.m %Cálculo del coeficiente de correlación cruzada function coef_cc=coef_cc(teta1,teta2,punto) h=15; %Altura más común de los edificios (modal) dm=17.5; %distancia del móvil a la fachada de los edificios w=2*dm; %anchura media de las calles l=250; %longitud de la calle considerada (l>=200) %Paso 1: definición de valores auxiliares. x1=sqrt((h/tand(teta1))^2-(w/2)^2); x2=sqrt((h/tand(teta2))^2-(w/2)^2); %La siguiente situación se da cuando existe visibilidad para el
satélite 1 y/o 2 %solamente a ambos extremos de la calle: if (x1^2)>(l/2) x1=l/2; end if (x2^2)>(l/2) x2=l/2; end if (x1^2)>=0&(x2^2)>=0 ang1=round(atand((w/2)/x1)); %Acimut 1 ang2=round(atand((w/2)/x2)); %Acimut 2 M1=(ang1+0.5)/90; M2=(ang2+0.5)/90; %Paso 2: cálculo de la información auxiliar relacionada con los
%puntos del %modelo A y D. %Para el punto A: N11A=4*ang1+2; N00A=360-4*ang2-2; N01A=4*(ang2-ang1); N10A=0; %Para el punto D: if (ang1+ang2)<=90 N11D=0; N00D=360-4*ang1-4*ang2-4; N01D=4*ang2+2; N10D=4*ang1+2; else %si ang1+ang2>90º N11D=4*ang1+4*ang2+4-360; N00D=0; N01D=360-4*ang1-2; N10D=360-4*ang2-2; end %Paso 3: cálculo del coeficiente de correlación cruzada en los
%puntos A y D sigma1=sqrt(((4*ang1+2)*(1-M1)^2+(360-4*ang1-2)*(0-M1)^2)/359); sigma2=sqrt(((4*ang2+2)*(1-M2)^2+(360-4*ang2-2)*(0-M2)^2)/359); if (punto=='A')|(punto=='B') %para el punto A o B coef_cc=1/359*(N11A*(1-M1)*(1-M2)+N00A*(0-M1)*(0-M2)+N10A*(1-
M1)*(0-M2)+N01A*(0-M1)*(1-M2))/(sigma1*sigma2); else if (punto=='D')|(punto=='C') %para el punto D o C coef_cc=1/359*(N11D*(1-M1)*(1-M2)+N00D*(0-M1)*(0-
M2)+N10D*(1-M1)*(0-M2)+N01D*(0-M1)*(1-M2))/(sigma1*sigma2); end end %Paso 4: en el punto B el coeficiente de correlación es el mismo
%que en el
93
%punto A y su separación acimutal viene dada por: if punto=='B' acimutB=ang2-ang1; %separación acimutal del punto B en grados end %Paso 5: En el punto C el coeficiente de correlación es el mismo
%que en el punto D y su separación acimutal viene dada por: if punto=='C' if (ang1+ang2)<=90 acimutC=ang1-ang2; %separación acimutal del punto C en
%grados else acimutC=180-ang1-ang2; %separación acimutal del punto C
%en grados end end else %Paso 6: En este caso, para una o ambas elevaciones, aiempre existen %condiciones de visibilidad directa. El coeficiente de correlacón se %calcula de forma ligeramente distinta a la del Paso 3: if (x1^2)<0&(x2^2)<0 %Si ambos satélites son siempre visibles coef_cc=1; else if (x1^2)<0 ang2=round(atand((w/2)/x2)); %Acimut 2 N11=4*ang2+2; coef_cc=(N11/180-1); end if (x2^2)<0 ang1=round(atand((w/2)/x1)); %Acimut 1 N11=4*ang1+2; coef_cc=(N11/180-1); end end end
p_indisp.m %La improbabilidad de la disponibilidad después de la
%diversidad de satélite.
function p_indisp=p_indisp(teta1,teta2,Cf,punto)
indisp=coef_cc(teta1,teta2,punto)*sqrt(p_bloqueo1(teta1,Cf)
*(1-p_bloqueo1(teta1,Cf)))*sqrt(p_bloqueo1(teta1,Cf)*(1-
p_bloqueo2(teta2,Cf)))+p_bloqueo1(teta1,Cf)*p_bloqueo2(teta
2,Cf);
if indisp<0
p_indisp=-1; %cuando se obtengan valores de p_indisp=-
%1, se está diciendo que el coef_cc no es válido
else
p_indisp=indisp;
end
94
p_disp.m %La probabilidad de la disponibilidad después de la
%diversidad de satélite
function p_disp=p_disp(teta1,teta2,Cf,punto)
p_disp=1-p_indisp(teta1,teta2,Cf,punto);