Mini Project Code Ber, SNR, Papr
Mini Project Code Ber, SNR, Papr
import numpy as np
import csv
"""
Args:
Returns:
"""
num_symbols = len(received_symbols)
received_bits = np.unpackbits(received_symbols.view(np.uint8))[:int(num_bits)]
transmitted_bits = np.unpackbits(transmitted_symbols.view(np.uint8))[:int(num_bits)]
return ber
def qam_bit_error_rate(snr_db, num_symbols, bits_per_symbol):
"""
Calculate the bit error rate (BER) for QAM signals under given SNR.
Args:
Returns:
ber (numpy array): Array of bit error rates (BER) corresponding to each SNR value.
"""
ber = []
ber.append(calculate_ber(received_symbols, transmitted_symbols))
return np.array(ber)
plt.xlabel('SNR (dB)')
plt.legend()
plt.grid(True)
plt.show()
writer = csv.writer(f)
writer.writerow(snr_db)
writer.writerow(ber_4qam)
writer.writerow(ber_8qam)
writer.writerow(ber_16qam
papr
import numpy as np
import csv
def calculate_papr(modulation_order):
num_symbols = 10**4
return papr
qam_mapping = {
16: [-3 - 3j, -3 - 1j, -3 + 3j, -3 + 1j, -1 - 3j, -1 - 1j, -1 + 3j, -1 + 1j,
# Modulation order
papr_values = []
for _ in range(10):
papr = calculate_papr(modulation_order)
papr_values.append(papr)
plt.xlabel('Symbol Index')
plt.ylabel('PAPR')
plt.grid(True)
plt.show()
writer = csv.writer(f)
writer.writerow(papr_values
snr
import numpy as np
import csv
num_symbols = 10**4
received_power = np.mean(np.abs(noisy_symbols) ** 2)
qam_mapping = {
16: [-3 - 3j, -3 - 1j, -3 + 3j, -3 + 1j, -1 - 3j, -1 - 1j, -1 + 3j, -1 + 1j,
32: [-7+7j,-7+5j,-5+7,-5+5j,-7+1j,-7+3j,-5+1j,-5+3j,-3+7j,-3+5j,-1+7j,-1+5j,-3+1j,-3+3j,-1+1j,-1+3j,-
7+-7j,-7+-5j,-5+-7j,-5+-5j,-7+-1j,-7+-3j,-5+-1j,-5+-3j,-3+-7j,-3+-5j,-1+-7j,-1+-5j,-3+-1j,-3+-3j,-1+-1j,-1+-
3j],
64: [-7 +7j, -5 +7j, -3 +7j, -1 +7j, -7 + 5j, -5+ 5j, -3+ 5j, -1+ 5j, -7+3j, -5 +3j, -3+3j, -1+3j, -7+1j, -
5+1j, -3+1j, -1+1j, -7+-7j, -5+-7j, -3+-7j, -1+-7j, -7+-5j, -5+-5j, -3+-5j, -1+-5j, -7+-3j, -5+-3j, -3+-3j, -1+-
3j, -7+-1j, -5+-1j, -3+-1j, -1+-1j, 7+7j, 5+7j, 3+7j, 1+7j, 7+5j, 5+5j, 3+5j, 1+5j, 7+3j, 5+3j, 3+3j, 1+3j,
7+1j, 5+1j, 3+1j, 1+1j, 7+-7j, 5+-7j, 3+-7j, 1+-7j, 7+-5j, 5+-5j, 3+-5j, 1+-5j, 7+-3j, 5+-3j, 3+-3j, 1+-3j, 7+-
1j, 5+-1j, 3+-1j, 1+-1j]
}
# SNR range in dB
# Modulation orders
snr_values = {}
snr_values[modulation_order] = []
snr_values[modulation_order].append(snr)
plt.xlabel('SNR (dB)')
plt.grid(True)
plt.savefig('SNR_{}bit.png'.format(modulation_order), dpi=800)
plt.show()
writer = csv.writer(f)
writer.writerow(snr_dB_range)
writer.writerow(snr_values[modulation_order])