1function g = loss_ITU1411_NLOS_over_rooftop (d, hb, hm, hr, f, l, b, st_w, phi, big)
2
3  %%
4  %% function g = loss_ITU1411_NLOS_over_rooftop(d, hb, hm, hr, f, l, b, st_w, phi, big)
5  %%
6  %% returns the loss at d meters for f frequency and mobile height m and
7  %% base station height of hb
8
9  assert(isscalar(f));
10  assert(f > 0);
11
12
13  lambda = 299792458 / f;
14  fmhz = f/1e6;
15  Dhb = hb - hr;
16  ds = (lambda*d*d)/(Dhb*Dhb);
17  if (l>ds)
18    if (fmhz>2000)
19      kf = -8;
20    else
21      if (big==1)
22        kf = -4+1.5*((fmhz/925)-1);
23      else
24        kf = -4+0.7*((fmhz/925)-1);
25      endif
26    endif
27    if (hb>hr)
28      kd = 18;
29      if (fmhz>2000)
30         ka = 71.4;
31      else
32         ka = 54;
33      endif
34      Lbsh = -18*log10(1+Dhb);
35    else
36      kd = 18 - 15*(Dhb/hr);
37      Lbsh = 0;
38      if (d>=500)
39        ka = 54-0.8*Dhb;
40      else
41        ka = 54-1.6*Dhb;
42      endif
43    endif
44    Lmsd = Lbsh + ka + kd.*log10(d./1000) + kf*log10(fmhz) - 9*log10(b);
45  else
46    theta = atan (Dhb /b);
47    rho = sqrt(Dhb^2 + b^2);
48    if (abs(hb-hr)<1)
49       Qm = b./d;
50    elseif (hb>hr)
51       Qm = 2.35*((Dhb./d)*sqrt(b/lambda))^0.9;
52    else
53       Qm = (b/(2*pi.*d))*sqrt(lambda/rho)*((1/theta)-(1/(2*pi+theta)));
54       b
55    endif
56    Lmsd = -10*log10(Qm*Qm);
57  endif
58  Dhm = hr-hm;
59  if (phi<35)
60    Lori = -10+(0.354*phi);
61  elseif (phi<55)
62    Lori = 2.5+0.075*(phi-35);
63  else
64    Lori = 4- 0.114*(phi-55);
65  endif
66  Lrts = -8.2 -10*log10(st_w) + 10*log10(fmhz) + 20*log10(Dhm) + Lori;
67
68  Lbf = 32.4 +20*log10(d/1000) + 20*log10(fmhz);
69  g = zeros(size(d));
70  if (Lrts+Lmsd>0)
71    L = Lbf + Lrts + Lmsd;
72  else
73    L = Lbf
74  endif
75  g(find(d > 0)) = L;
76
77  g(find(d <= 0)) = 1;
78