import numpy as np
# Given values
Pt_dBm = 23 # Transmit power in dBm
Gain_rx_dB = 80 # Receiver gain in dB
Bandwidth_Hz = 20e6 # 20 MHz
Noise_Figure_dB = 12 # Noise figure in dB
# Step 1: Calculate noise power (dBm)
kT_dBm_Hz = -174 # Thermal noise density in dBm/Hz
Pn_dBm = kT_dBm_Hz + 10 * np.log10(Bandwidth_Hz) + Noise_Figure_dB
# Step 2: Received power
Pr_dBm = Pt_dBm + Gain_rx_dB
# Step 3: Calculate SNR
SNR_dB = Pr_dBm - Pn_dBm
# Output results
print(f"Noise Power (Pn): {Pn_dBm:.2f} dBm")
print(f"Received Power (Pr): {Pr_dBm:.2f} dBm")
print(f"SNR at receiver output: {SNR_dB:.2f} dB")
aW1wb3J0IG51bXB5IGFzIG5wCgojIEdpdmVuIHZhbHVlcwpQdF9kQm0gPSAyMyAgICAgICAgICAgICAjIFRyYW5zbWl0IHBvd2VyIGluIGRCbQpHYWluX3J4X2RCID0gODAgICAgICAgICAjIFJlY2VpdmVyIGdhaW4gaW4gZEIKQmFuZHdpZHRoX0h6ID0gMjBlNiAgICAgIyAyMCBNSHoKTm9pc2VfRmlndXJlX2RCID0gMTIgICAgIyBOb2lzZSBmaWd1cmUgaW4gZEIKCiMgU3RlcCAxOiBDYWxjdWxhdGUgbm9pc2UgcG93ZXIgKGRCbSkKa1RfZEJtX0h6ID0gLTE3NCAgIyBUaGVybWFsIG5vaXNlIGRlbnNpdHkgaW4gZEJtL0h6ClBuX2RCbSA9IGtUX2RCbV9IeiArIDEwICogbnAubG9nMTAoQmFuZHdpZHRoX0h6KSArIE5vaXNlX0ZpZ3VyZV9kQgoKIyBTdGVwIDI6IFJlY2VpdmVkIHBvd2VyClByX2RCbSA9IFB0X2RCbSArIEdhaW5fcnhfZEIKCiMgU3RlcCAzOiBDYWxjdWxhdGUgU05SClNOUl9kQiA9IFByX2RCbSAtIFBuX2RCbQoKIyBPdXRwdXQgcmVzdWx0cwpwcmludChmIk5vaXNlIFBvd2VyIChQbik6IHtQbl9kQm06LjJmfSBkQm0iKQpwcmludChmIlJlY2VpdmVkIFBvd2VyIChQcik6IHtQcl9kQm06LjJmfSBkQm0iKQpwcmludChmIlNOUiBhdCByZWNlaXZlciBvdXRwdXQ6IHtTTlJfZEI6LjJmfSBkQiIpCg==