mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
Add Python script to plot logged buffers. Modified write_file_matlab() to add .bin extension if binary format is selected.
69 lines
2.2 KiB
Python
69 lines
2.2 KiB
Python
#!/usr/bin/env python
|
|
# coding: utf-8
|
|
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
import argparse
|
|
import pandas
|
|
|
|
def save_fig(fig:plt.figure, figName:str):
|
|
fig.savefig(figName + '.pdf')
|
|
fig.savefig(figName + '.png')
|
|
fig.savefig(figName + '.svg')
|
|
|
|
# Channel Frequency Response
|
|
def channel_est(dataPath):
|
|
binfile = dataPath + 'chestF0_ext_s1.m.bin'
|
|
data = np.fromfile(binfile,dtype=np.int16)
|
|
dataCmp = data[0::2] + 1j*data[1::2]
|
|
fig = plt.gcf()
|
|
plt.plot(np.abs(dataCmp))
|
|
save_fig(fig, 'channel_est')
|
|
plt.close(fig)
|
|
|
|
# Constellation
|
|
def constellation(dataPath):
|
|
binfile = dataPath + 'rxF_comp_s1.m.bin'
|
|
data = np.fromfile(binfile,dtype=np.int16)
|
|
dataCmp = data[0::2] + 1j*data[1::2]
|
|
fig = plt.gcf()
|
|
plt.scatter(np.real(dataCmp),np.imag(dataCmp))
|
|
save_fig(fig, 'constellation')
|
|
plt.close(fig)
|
|
|
|
# LLR
|
|
def llr(dataPath):
|
|
binfile = dataPath + 'rxF_llr.m.bin'
|
|
data = np.fromfile(binfile,dtype=np.int16)
|
|
fig = plt.gcf()
|
|
plt.plot(data,'*')
|
|
save_fig(fig, 'llr')
|
|
plt.close(fig)
|
|
|
|
# BER from data in CSV files generated by nr_dlsim
|
|
def ber(dataPath, csvFiles):
|
|
d0 = pandas.read_csv(dataPath + csvFiles[0] + '.csv')
|
|
ax = d0.plot(x='SNR',y='channel_ber_0',logy=True,label=csvFiles[0])
|
|
plt.ylabel('BER')
|
|
for i in range(1,len(csvFiles)):
|
|
d = pandas.read_csv(dataPath + csvFiles[i] + '.csv')
|
|
d.plot(ax=ax,x='SNR',y='channel_ber_0',logy=True,label=csvFiles[i],grid=True)
|
|
|
|
fig = ax.figure
|
|
save_fig(fig, 'ber_compare')
|
|
plt.close(fig)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
parser = argparse.ArgumentParser(description="DL plot generator")
|
|
parser.add_argument('--data-path', help='Path to directory containing data', default='../../cmake_targets/ran_build/build/')
|
|
parser.add_argument('--csv-data', nargs='+' ,help='CSV file name without extension (generated from nr_dlsim with -Z option)')
|
|
parser.add_argument('--ber-compare', help='Compare BER from multiple CSV files', action='store_true')
|
|
|
|
args = parser.parse_args()
|
|
|
|
channel_est(args.data_path)
|
|
constellation(args.data_path)
|
|
llr(args.data_path)
|
|
if args.ber_compare:
|
|
ber(args.data_path, args.csv_data)
|