diff options
author | andreas128 <Andreas> | 2017-08-19 16:21:01 +0200 |
---|---|---|
committer | andreas128 <Andreas> | 2017-08-19 16:21:01 +0200 |
commit | b4d1df33b3bffd5799da5a2dbe941e784b96b9d4 (patch) | |
tree | b80d2c3fc7f8c5a50fd610e5b13e34d69a2816db /dpd/src/phase_align.py | |
parent | c70b33b4cc3a4c61c2f29944e6dd4cbb17031cb6 (diff) | |
download | dabmod-b4d1df33b3bffd5799da5a2dbe941e784b96b9d4.tar.gz dabmod-b4d1df33b3bffd5799da5a2dbe941e784b96b9d4.tar.bz2 dabmod-b4d1df33b3bffd5799da5a2dbe941e784b96b9d4.zip |
Add phase alignment. Unstable for small angles.
Diffstat (limited to 'dpd/src/phase_align.py')
-rw-r--r-- | dpd/src/phase_align.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/dpd/src/phase_align.py b/dpd/src/phase_align.py new file mode 100644 index 0000000..9e78483 --- /dev/null +++ b/dpd/src/phase_align.py @@ -0,0 +1,48 @@ +import numpy as np +from scipy import signal, optimize +import sys +import matplotlib.pyplot as plt +import datetime +import logging + + +def phase_align(sig, ref_sig): + """Do phase alignment for sig relative to the reference signal + ref_sig. + + Returns the aligned signal""" + + angle_diff = (np.angle(sig) - np.angle(ref_sig)) % (2. * np.pi) + + dt = datetime.datetime.now().isoformat() + fig_path = "/tmp/phase_align_" + dt + ".pdf" + plt.subplot(311) + plt.hist(angle_diff, bins=60, label="Angle Diff") + plt.xlabel("Angle") + plt.ylabel("Count") + plt.legend(loc=4) + + plt.subplot(312) + plt.plot(np.angle(ref_sig[:128]), label="ref_sig") + plt.plot(np.angle(sig[:128]), label="sig") + plt.xlabel("Angle") + plt.ylabel("Sample") + plt.legend(loc=4) + + angle = np.median(angle_diff) + logging.debug("Compensating phase by {} rad, {} degree.".format( + angle, angle*180./np.pi + )) + sig = sig * np.exp(1j * -angle) + + plt.subplot(313) + plt.plot(np.angle(ref_sig[:128]), label="ref_sig") + plt.plot(np.angle(sig[:128]), label="sig") + plt.xlabel("Angle") + plt.ylabel("Sample") + plt.legend(loc=4) + plt.tight_layout() + plt.savefig(fig_path) + plt.clf() + + return sig |