summaryrefslogtreecommitdiffstats
path: root/dpd/src/Model.py
diff options
context:
space:
mode:
Diffstat (limited to 'dpd/src/Model.py')
-rw-r--r--dpd/src/Model.py83
1 files changed, 51 insertions, 32 deletions
diff --git a/dpd/src/Model.py b/dpd/src/Model.py
index b962140..64c8857 100644
--- a/dpd/src/Model.py
+++ b/dpd/src/Model.py
@@ -27,10 +27,6 @@ class Model:
self.errs_phase = [0, ]
def get_next_coefs(self, txframe_aligned, rxframe_aligned):
- dt = datetime.datetime.now().isoformat()
- txframe_aligned.tofile(logging_path + "/txframe_" + dt + ".iq")
- rxframe_aligned.tofile(logging_path + "/rxframe_" + dt + ".iq")
-
# Calculate new coefficients for AM/AM correction
rx_abs = np.abs(rxframe_aligned)
rx_A = np.vstack([rx_abs,
@@ -148,9 +144,9 @@ class Model:
dt = datetime.datetime.now().isoformat()
fig_path = logging_path + "/" + dt + "_Model.pdf"
- fig, axs = plt.subplots(8, figsize=(6, 4 * 6))
+ fig = plt.figure(figsize=(3*6, 1.5 * 6))
- ax = axs[0]
+ ax = plt.subplot(3,3,1)
ax.plot(np.abs(txframe_aligned[:128]),
label="TX sent",
linestyle=":")
@@ -160,9 +156,14 @@ class Model:
ax.set_title("Synchronized Signals of Iteration {}".format(len(self.coefs_history)))
ax.set_xlabel("Samples")
ax.set_ylabel("Amplitude")
+ ax.text(0, 0, "TX (max {:01.3f}, mean {:01.3f}, median {:01.3f})".format(
+ np.max(np.abs(txframe_aligned)),
+ np.mean(np.abs(txframe_aligned)),
+ np.median(np.abs(txframe_aligned))
+ ), size = 8)
ax.legend(loc=4)
- ax = axs[1]
+ ax = plt.subplot(3,3,2)
ax.plot(np.real(txframe_aligned[:128]),
label="TX sent",
linestyle=":")
@@ -174,28 +175,7 @@ class Model:
ax.set_ylabel("Real Part")
ax.legend(loc=4)
- ax = axs[2]
- ax.scatter(
- np.abs(txframe_aligned[:1024]),
- np.abs(rxframe_aligned[:1024]),
- s=0.1)
- ax.plot(rx_range_dpd / self.coefs_am[0], rx_range, linewidth=0.25)
- ax.set_title("Amplifier Characteristic")
- ax.set_xlabel("TX Amplitude")
- ax.set_ylabel("RX Amplitude")
-
- ax = axs[3]
- ax.scatter(
- np.abs(txframe_aligned[:1024]),
- phase_diff_rad[:1024] * 180 / np.pi,
- s=0.1
- )
- ax.plot(tx_range, phase_range_dpd * 180 / np.pi, linewidth=0.25)
- ax.set_title("Amplifier Characteristic")
- ax.set_xlabel("TX Amplitude")
- ax.set_ylabel("Phase Difference [deg]")
-
- ax = axs[4]
+ ax = plt.subplot(3,3,3)
ax.plot(np.abs(txframe_aligned[:128]),
label="TX Frame",
linestyle=":",
@@ -217,7 +197,46 @@ class Model:
ax.set_xlabel("Samples")
ax.set_ylabel("Amplitude")
- ax = axs[5]
+ ax = plt.subplot(3,3,4)
+ ax.scatter(
+ np.abs(txframe_aligned[:1024]),
+ np.abs(rxframe_aligned[:1024]),
+ s=0.1)
+ ax.plot(rx_range_dpd / self.coefs_am[0], rx_range, linewidth=0.25)
+ ax.set_title("Amplifier Characteristic")
+ ax.set_xlabel("TX Amplitude")
+ ax.set_ylabel("RX Amplitude")
+
+ ax = plt.subplot(3,3,5)
+ ax.scatter(
+ np.abs(txframe_aligned[:1024]),
+ phase_diff_rad[:1024] * 180 / np.pi,
+ s=0.1
+ )
+ ax.plot(tx_range, phase_range_dpd * 180 / np.pi, linewidth=0.25)
+ ax.set_title("Amplifier Characteristic")
+ ax.set_xlabel("TX Amplitude")
+ ax.set_ylabel("Phase Difference [deg]")
+
+ ax = plt.subplot(3,3,6)
+ ccdf_min, ccdf_max = 0, 1
+ tx_hist, ccdf_edges = np.histogram(np.abs(txframe_aligned),
+ bins=60,
+ range=(ccdf_min, ccdf_max))
+ tx_hist_normalized = tx_hist.astype(float)/np.sum(tx_hist)
+ ccdf = 1.0 - np.cumsum(tx_hist_normalized)
+ ax.semilogy(ccdf_edges[:-1], ccdf, label="CCDF")
+ ax.semilogy(ccdf_edges[:-1],
+ tx_hist_normalized,
+ label="Histogram",
+ drawstyle='steps')
+ ax.legend(loc=4)
+ ax.set_ylim(1e-5,2)
+ ax.set_title("Complementary Cumulative Distribution Function")
+ ax.set_xlabel("TX Amplitude")
+ ax.set_ylabel("Ratio of Samples larger than x")
+
+ ax = plt.subplot(3,3,7)
coefs_history = np.array(self.coefs_history)
for idx, coef_hist in enumerate(coefs_history.T):
ax.plot(coef_hist,
@@ -228,7 +247,7 @@ class Model:
ax.set_xlabel("Iterations")
ax.set_ylabel("Coefficient Value")
- ax = axs[6]
+ ax = plt.subplot(3,3,8)
coefs_history = np.array(self.coefs_pm_history)
for idx, coef_hist in enumerate(coefs_history.T):
ax.plot(coef_hist,
@@ -239,7 +258,7 @@ class Model:
ax.set_xlabel("Iterations")
ax.set_ylabel("Coefficient Value")
- ax = axs[7]
+ ax = plt.subplot(3,3,9)
coefs_history = np.array(self.coefs_history)
ax.plot(self.mses, label="MSE")
ax.plot(self.errs, label="ERR")