Example #1
0
def pathloss(mobile, baseStation, cell):
    """ pathloss calculation. different models are possible. 
    The pathloss consists of a distance loss, a loss due to disalignment with the antenna lobe and the shadowing loss (LNS). Returns: Pathloss in linear format.  """
    LNS = mobile.baseStations[baseStation]['LNS']
    distance = mobile.baseStations[baseStation]['distance']
    distancepathloss = 128.1 + 37.6*log10(distance/1e3) # distance in meters
    antennaG = antennaGain(getAngleUEBSHex(baseStation.position, cell.center, mobile.position)) 
    pathloss = distancepathloss + LNS - antennaG
    #print "%.2f" % pathloss, '=', "%.2f" % distancepathloss, '+', "%.2f" % LNS, '-', "%.2f" % antennaG
    return utils.dBToW(-pathloss)
Example #2
0
def pathloss(mobile, baseStation, cell):
    """ pathloss calculation. different models are possible. 
    The pathloss consists of a distance loss, a loss due to disalignment with the antenna lobe and the shadowing loss (LNS). Returns: Pathloss in linear format.  """
    LNS = mobile.baseStations[baseStation]['LNS']
    distance = mobile.baseStations[baseStation]['distance']
    distancepathloss = 128.1 + 37.6 * log10(
        distance / 1e3)  # distance in meters
    antennaG = antennaGain(
        getAngleUEBSHex(baseStation.position, cell.center, mobile.position))
    pathloss = distancepathloss + LNS - antennaG
    #print "%.2f" % pathloss, '=', "%.2f" % distancepathloss, '+', "%.2f" % LNS, '-', "%.2f" % antennaG
    return utils.dBToW(-pathloss)
Example #3
0
def fsf(N, T, centerFrequency, totalTime, bandwidth, relativeVelocity):
    """Returns frequency selective fading over a number of subcarriers and time slots."""
    delay_taps = 1e-05 * array([
        0, 0.0060, 0.0075, 0.0145, 0.0150, 0.0155, 0.0190, 0.0220, 0.0225,
        0.0230, 0.0335, 0.0370, 0.0430, 0.0510, 0.0685, 0.0725, 0.0735, 0.0800,
        0.0960, 0.1020, 0.1100, 0.1210, 0.1845
    ])
    delay_taps.shape = (23, 1)  # promote
    tapGains_dB = array([
        -6.4000, -3.4000, -2.0000, -3.0000, -3.5500, -7.0000, -3.4000, -3.4000,
        -5.6000, -7.4000, -4.6000, -7.8000, -7.8000, -9.3000, -12.0000,
        -8.5000, -13.2000, -11.2000, -20.8000, -14.5000, -11.7000, -17.2000,
        -16.7000
    ])
    tapGains_dB.shape = (23, 1)  # promote

    startTime = 0  # no effect
    chunkwidth = bandwidth / N
    N_harmonics = 5  # magic number from model
    numTaps = delay_taps.size
    speedOfLight = 3e8
    dopplerFrequency = relativeVelocity * centerFrequency / speedOfLight

    chunkCenters = linspace(centerFrequency - bandwidth / 2,
                            centerFrequency + bandwidth / 2 - chunkwidth,
                            num=N)
    timeStamp = linspace(startTime,
                         startTime + totalTime * (1 - 1. / T),
                         num=T)

    tapGains = utils.dBToW(tapGains_dB)
    tapGainsNorm = tapGains / np.sum(tapGains)
    N_chunks = chunkCenters.size

    path_rand = random.rand(numTaps, N_harmonics)
    phase_rand = random.rand(numTaps, N_harmonics)

    H = empty([chunkCenters.size, timeStamp.size], dtype=complex)
    H[:] = nan
    for t in range(timeStamp.size):
        disc_dopp_freq = dopplerFrequency * cos(2 * math.pi * path_rand)
        disc_dopp_phase = 2 * math.pi * phase_rand

        for f in range(chunkCenters.size):
            H[f,
              t] = instantChunkFading(timeStamp[t], chunkCenters[f],
                                      tapGainsNorm, disc_dopp_phase,
                                      disc_dopp_freq, delay_taps, N_harmonics)

        # normalize
        H[:, t] = H[:, t] / sum(abs(H[:, t])) * N_chunks

    return H, chunkCenters, timeStamp
Example #4
0
def fsf(N, T, centerFrequency, totalTime, bandwidth, relativeVelocity):
    """Returns frequency selective fading over a number of subcarriers and time slots."""
    delay_taps = 1e-05 * array([0,
    0.0060,
    0.0075,
    0.0145,
    0.0150, 
    0.0155, 
    0.0190, 
    0.0220, 
    0.0225, 
    0.0230, 
    0.0335, 
    0.0370, 
    0.0430, 
    0.0510, 
    0.0685, 
    0.0725, 
    0.0735, 
    0.0800, 
    0.0960, 
    0.1020, 
    0.1100, 
    0.1210, 
    0.1845])
    delay_taps.shape = (23,1) # promote
    tapGains_dB = array([-6.4000, 
   -3.4000,
   -2.0000,
   -3.0000,
   -3.5500,
   -7.0000,
   -3.4000,
   -3.4000,
   -5.6000,
   -7.4000,
   -4.6000,
   -7.8000,
   -7.8000,
   -9.3000,
  -12.0000,
   -8.5000,
  -13.2000,
  -11.2000,
  -20.8000,
  -14.5000,
  -11.7000,
  -17.2000,
  -16.7000])
    tapGains_dB.shape = (23,1) # promote

    startTime = 0 # no effect
    chunkwidth = bandwidth/N
    N_harmonics = 5 # magic number from model
    numTaps = delay_taps.size
    speedOfLight = 3e8
    dopplerFrequency = relativeVelocity * centerFrequency / speedOfLight

    chunkCenters = linspace(centerFrequency-bandwidth/2,centerFrequency+bandwidth/2-chunkwidth, num=N)
    timeStamp = linspace(startTime, startTime+totalTime*(1-1./T),num=T)

    tapGains = utils.dBToW(tapGains_dB)
    tapGainsNorm = tapGains/np.sum(tapGains)
    N_chunks = chunkCenters.size

    path_rand = random.rand(numTaps, N_harmonics)
    phase_rand = random.rand(numTaps, N_harmonics)
    
    H = empty([chunkCenters.size, timeStamp.size ],dtype=complex)
    H[:] = nan
    for t in range(timeStamp.size):
        disc_dopp_freq = dopplerFrequency * cos(2*math.pi*path_rand)
        disc_dopp_phase = 2*math.pi*phase_rand

        for f in range(chunkCenters.size):
            H[f,t] = instantChunkFading(timeStamp[t], chunkCenters[f], tapGainsNorm,disc_dopp_phase, disc_dopp_freq, delay_taps, N_harmonics)
        
        # normalize
        H[:,t] = H[:,t]/sum(abs(H[:,t]))*N_chunks

    return H, chunkCenters, timeStamp