1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
"""
This is a client for gr_server.py
It attaches to the tcp sockets of both the gnu radio server and the control
server of gr_server
"""
import time
import numpy as np
import src.tcp_sync as ts
import src.dab_tuning_lib as dt
import pandas as pd
import src.SendDictTcp as sdt
use_fft=True
if use_fft: t1 = ts.UhdSyncMsg(port=47009, packet_size=4*16384, packet_type="f"*16384)
else: t1 = ts.UhdSyncMsg(port=47009, packet_size=4*1, packet_type="f")
sender = sdt.SendDictTcp('127.0.0.1', 1112)
sender.send({"txgain":83})
sender.send({"rxgain":15})
sender.send({"a1":0.8})
sender.send({"a2":0.0})
sender.send({"a3":0.0})
sender.send({"a4":0.0})
sender.send({"a5":0.0})
sender.send({"a6":0.0})
sender.send({"a7":0.0})
sender.send({"a8":0.0})
t1.has_msg()
np.mean(t1.get_msgs(10))
def measure_sholders(verbose = False, raw_data=False, std_max=0.025):
"""
Measure the soulders of the received fft spectrum. Repeat measurement if
standard deviation larger than std_max
"""
for i in range(20):
try:
if verbose: print("%d measurement" % i)
t1.has_msg()
msgs = t1.get_msgs_fft(200)
def sig_mean(s): return dt.calc_mean_in_freq_range(np.array(s), 8192000, -700000, 700000)
def sholder_mean(s): return dt.calc_mean_in_freq_range(np.array(s), 8192000, 900000, 1500000)
sig = [sig_mean(msg) for msg in msgs]
sholders = [sholder_mean(msg) for msg in msgs]
std = np.std(sholders)
mean = np.mean(sholders)
std_perc = std/np.abs(mean)
if verbose == 2:
print( {"mean":mean, "std":std, "std_perc":std_perc})
if std_perc > std_max:
if verbose: print("%.4f std/mean" % (std_perc))
continue
else:
if raw_data: return sholders, sig
else: return np.mean(sholders), np.mean(sig)
except Exception as e:
print (e)
raise Exception("Variance of measurement to high")
res = []
for i in range(5):
for txgain in range(80, 89):
sender.send({"txgain":txgain})
sender.send({"input_path":"/home/andreas/dab/out_cut.iq"})
sh, sig = measure_sholders(verbose=0, std_max=100)
res.append({"txgain":txgain, "shoulder":sh, "sig":sig, "dpd":False})
sender.send({"input_path":"/home/andreas/dab/out_dpd_cut.iq"})
sh, sig = measure_sholders(verbose=0, std_max=100)
res.append({"txgain":txgain, "shoulder":sh, "sig":sig, "dpd":True})
df = pd.DataFrame(res)
df.to_csv("~/dab/doc/dab_mod_sholder.csv")
sender.send({"txgain":20})
sender.send({"rxgain":15})
sender.send({"a1":0.1})
|