Добавил:
t.me Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Zadaniye1.4_used

.py
Скачиваний:
0
Добавлен:
24.10.2023
Размер:
1.53 Кб
Скачать
import numpy as np
import matplotlib.pyplot as plt

def calculate_loss(d, h_rx, h_bs, f0, S):
    '''
    Calculate the loss (L_db) based on given parameters.
    '''
    arhs = (1.1 * np.log10(f0) - 0.7) * h_rx - (1.56 * np.log10(f0) - 0.8)
    ldb = 46.3 + 33.9 * np.log10(f0) - 13.82 * np.log10(h_bs) - arhs + np.abs(44.9 - 6.55 * np.log10(h_rx)) * np.log10(d) + S
    return ldb

def calculate_capacity(d, P_tx, d_f, T, kn, h_rx, h_bs, f0, S):
    '''
    Calculate the capacity of a communication channel.
    '''
    lg_d = np.log10(d)
    pn = d_f * T * 1.38 * (10 ** -23) * kn
    L_db = calculate_loss(d, h_rx, h_bs, f0, S)
    L = 10 ** (L_db / 10)
    P_rx = P_tx / L
    SNR = P_tx / L / pn
    C = d_f * np.log2(1 + P_tx / L / pn)
    return {'d': d, 'lgD': lg_d, 'L_db': L_db,  'L': L, 'prx': P_rx, 'snr': SNR, 'C': C}

if __name__ == "__main__":
    P_tx = 1
    d_f = 80 * (10 ** 6)
    T = 300
    kn = 2
    h_rx = 1
    h_bs = 30
    f0 = 900
    S = 3

    d = np.linspace(1, 2, 20) # Define d range with 20 points between 1 and 2
    
    data = calculate_capacity(d, P_tx, d_f, T, kn, h_rx, h_bs, f0, S)
    # Create a plot of the data
    plt.figure()
    plt.plot(data['d'], data['C'], 'go-')
    plt.title("Зависимость максимальной пропускной способности\n канала связи от расстояния:")
    plt.xlabel('Расстояние от БС')
    plt.ylabel('Максимальная пропускная способность')
    plt.show()
Соседние файлы в предмете Вычислительные системы, сети и телекоммуникации