mirror of https://github.com/DJ2LS/FreeDATA.git
70 lines
1.7 KiB
Python
70 lines
1.7 KiB
Python
import matplotlib.pyplot as plt
|
|
import numpy as np
|
|
|
|
codec2_modes = {
|
|
'datac4': {
|
|
'min_snr': -4,
|
|
'bit_rate': 87, # Bit rate in bits per second
|
|
'bandwidth': 250, # Bandwidth in Hz
|
|
},
|
|
'data_ofdm_500': {
|
|
'min_snr': 1,
|
|
'bit_rate': 276,
|
|
'bandwidth': 500,
|
|
},
|
|
'datac1': {
|
|
'min_snr': 5,
|
|
'bit_rate': 980,
|
|
'bandwidth': 1700,
|
|
},
|
|
#'datac2000': {
|
|
# 'min_snr': 7.5,
|
|
# 'bit_rate': 1280,
|
|
# 'bandwidth': 2000,
|
|
#},
|
|
'data_ofdm_2438': {
|
|
'min_snr': 8.5,
|
|
'bit_rate': 1830,
|
|
'bandwidth': 2438,
|
|
},
|
|
}
|
|
|
|
|
|
# Extracting data from the dictionary
|
|
snr_values = [info['min_snr'] for info in codec2_modes.values()]
|
|
bit_rates = [info['bit_rate'] for info in codec2_modes.values()]
|
|
bandwidths = [info['bandwidth'] for info in codec2_modes.values()]
|
|
modes = list(codec2_modes.keys()) # Get the mode names
|
|
|
|
|
|
|
|
# Plot bit/s vs SNR
|
|
plt.figure(figsize=(12, 6))
|
|
plt.subplot(1, 2, 1)
|
|
plt.scatter(snr_values, bit_rates, color='b')
|
|
for i, txt in enumerate(modes):
|
|
plt.annotate(txt, (snr_values[i], bit_rates[i])) # Annotate each point with mode name
|
|
plt.plot(snr_values, bit_rates, '--', color='b')
|
|
|
|
plt.yscale("log")
|
|
|
|
plt.xlabel('SNR (dB)')
|
|
plt.ylabel('Bit/s')
|
|
plt.title('Bit Rate vs SNR')
|
|
plt.grid(True)
|
|
|
|
# Plot bandwidth vs SNR
|
|
plt.subplot(1, 2, 2)
|
|
plt.scatter(snr_values, bandwidths, color='g')
|
|
for i, txt in enumerate(modes):
|
|
plt.annotate(txt, (snr_values[i], bandwidths[i])) # Annotate each point with mode name
|
|
plt.plot(snr_values, bandwidths, '--', color='g')
|
|
plt.xlabel('SNR (dB)')
|
|
plt.ylabel('Bandwidth (Hz)')
|
|
plt.title('Bandwidth vs SNR')
|
|
plt.grid(True)
|
|
|
|
# Show plot
|
|
plt.tight_layout()
|
|
plt.show()
|