m-thesis-introduction/simulations/08_find_beacon_phase_delay.ipynb

251 lines
122 KiB
Text
Raw Normal View History

2022-08-04 20:33:59 +02:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Find Sine delay in Beacon"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import signal\n",
"\n",
"\n",
"import os\n",
"import sys\n",
"# Append parent directory to import path so lib can be found\n",
"sys.path.append(os.path.dirname(os.path.abspath(os.getcwd())))\n",
"from lib.util import *\n",
"\n",
"from lib.timing import *"
2022-08-04 20:33:59 +02:00
]
},
{
"cell_type": "code",
2022-08-05 11:52:45 +02:00
"execution_count": 2,
2022-08-04 20:33:59 +02:00
"metadata": {},
"outputs": [],
"source": [
"us = 1e3 # ns\n",
"ns = 1/us # us\n",
"\n",
"samplerate = 500 # MHz\n",
"timelength = 0.2 # us\n",
"\n",
"\n",
"beacon_time = np.arange(0, timelength, 1/samplerate)\n",
2022-08-05 11:52:45 +02:00
"f_beacon = 70 # MHz\n",
2022-08-04 20:33:59 +02:00
"\n",
"\n",
"beacon_init_phase = phase2time(42/ns, f_beacon)\n",
"beacon_phase_offset = 1.2*np.pi\n",
"\n",
"beacons = np.array([\n",
" sin_delay(f_beacon, beacon_time, phase=-beacon_init_phase),\n",
" sin_delay(f_beacon, beacon_time, phase=-beacon_init_phase-beacon_phase_offset)\n",
"])\n",
"\n",
"ref_time = np.arange(0, 1/f_beacon, 1/samplerate)\n",
"ref_beacon = sin_delay(f_beacon, ref_time, t_delay=0, phase=0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Reference Delay"
]
},
{
"cell_type": "code",
2022-08-05 11:52:45 +02:00
"execution_count": 3,
2022-08-04 20:33:59 +02:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2022-08-05 11:52:45 +02:00
"Cheat Time Delay [ns]: 2.8311078050095477 \\pm [0. 0.]\n",
"Calculated Time Delay [ns]: 2.857142857142857 \\pm [-1. 1.]\n"
2022-08-04 20:33:59 +02:00
]
},
{
"data": {
2022-08-05 11:52:45 +02:00
"image/png": "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
2022-08-04 20:33:59 +02:00
"text/plain": [
"<Figure size 1152x288 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"show_originals = True\n",
"\n",
"\n",
"fig, axes = plt.subplots(3,1, sharex=True, figsize=(16,4))\n",
2022-08-05 11:52:45 +02:00
"axes[0].set_title(\"Determine phase delay of a single beacon\")\n",
2022-08-04 20:33:59 +02:00
"axes[-1].set_xlabel(\"Time [ns]\")\n",
"\n",
"## Originals\n",
"i=0\n",
"axes[i].set_ylabel(\"Originals\")\n",
"axes[i].plot(beacon_time/ns, \n",
" np.pad(ref_beacon, (0,len(beacons[0])-len(ref_beacon)), 'constant', constant_values=0), \n",
" label=\"Reference\",\n",
" color='g')\n",
"axes[i].plot(beacon_time/ns, \n",
" beacons[0], \n",
" label=\"Beacon 0\",\n",
" color='r'\n",
" )\n",
"axes[i].legend(loc='center right')\n",
"\n",
"for i in range(1, 3): \n",
" if i == 1:\n",
" label = \"Cheat\"\n",
" time_delay = phase2time(phase_modulo(beacon_init_phase,0), f_beacon)\n",
" time_delay_err = np.array([0,0])\n",
"\n",
" \n",
" ## Calculated\n",
" else:\n",
" label = \"Calculated\"\n",
" phase_delay, phase_err = beacon_phase_delay(samplerate, f_beacon, ref_beacon, beacons[0])\n",
" time_delay = phase2time(phase_modulo(phase_delay, 0), f_beacon)\n",
" time_delay_err = phase2time(phase_err, f_beacon)\n",
" \n",
" axes[i].set_ylabel(label)\n",
" print(\"{} Time Delay [ns]: {} \\pm {}\".format(label, time_delay/ns, time_delay_err/ns))\n",
"\n",
" ### Show original\n",
" if show_originals:\n",
" axes[i].plot(beacon_time/ns, \n",
" beacons[0],\n",
" color='r', alpha=0.4\n",
" )\n",
"\n",
" axes[i].axvline(time_delay/ns)\n",
" axes[i].plot(beacon_time/ns,\n",
" sin_delay(f_beacon, beacon_time, t_delay=time_delay),\n",
" ls = (4, (10, 4)),\n",
" label='sin')\n",
2022-08-05 11:52:45 +02:00
" axes[i].plot((ref_time+time_delay)/ns,\n",
" ref_beacon,\n",
2022-08-04 20:33:59 +02:00
" ls = (6, (10, 4)),\n",
" label='roll')\n",
" axes[i].legend(loc='center right')\n",
"\n",
2022-08-05 11:52:45 +02:00
"axes[0].set_xlim(0, 30)\n",
2022-08-04 20:33:59 +02:00
"fig.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Determine delay between beacons"
]
},
{
"cell_type": "code",
"execution_count": 5,
2022-08-04 20:33:59 +02:00
"metadata": {},
"outputs": [
{
"data": {
2022-08-05 11:52:45 +02:00
"image/png": "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
2022-08-04 20:33:59 +02:00
"text/plain": [
"<Figure size 1152x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"abs_time_delay, time_delay_err = beacon_time_delay(samplerate, beacons[0], beacons[1])\n",
"time_delay = abs_time_delay % (1/f_beacon)\n",
"\n",
"\n",
"fig, axes = plt.subplots(2, sharex=True, figsize=(16,4))\n",
"axes[-1].set_xlabel(\"Time [ns]\")\n",
"axes[0].set_title(\"Time Delay between two Beacons[ns]: {} \\pm {}\".format(time_delay/ns, time_delay_err/ns))\n",
"\n",
"\n",
"## Originals\n",
"i=0\n",
"axes[i].set_ylabel(\"Originals\")\n",
"axes[i].plot(beacon_time/ns, \n",
" beacons[0], \n",
" label=\"Beacon 0\",\n",
" color='g')\n",
"axes[i].plot(beacon_time/ns, \n",
" beacons[1], \n",
" label=\"Beacon 1\",\n",
" color='r'\n",
" )\n",
"axes[i].axvline(0, color='g', alpha=0.3)\n",
"axes[i].axvline(time_delay/ns, color='r', alpha=0.3)\n",
"\n",
"## Correct Beacon 1\n",
"i=1\n",
"axes[i].set_ylabel(\"Corrected Beacon 1\")\n",
"axes[i].plot(beacon_time/ns, \n",
" beacons[0], \n",
" #label=\"Beacon 0\",\n",
" color='g',\n",
" )\n",
2022-08-05 11:52:45 +02:00
"axes[i].plot((beacon_time-time_delay)/ns,\n",
" beacons[1],\n",
2022-08-04 20:33:59 +02:00
" ls = (6, (10, 4)),\n",
" color='orange',\n",
" label='Corrected Beacon 1'\n",
" )\n",
"\n",
2022-08-05 11:52:45 +02:00
"axes[0].set_xlim(0, 30)\n",
2022-08-04 20:33:59 +02:00
"# put legend between plots\n",
"lines_labels = [ax.get_legend_handles_labels() for ax in fig.axes]\n",
"lines, labels = [sum(lol, []) for lol in zip(*lines_labels)]\n",
"\n",
"fig.subplots_adjust(hspace=0.3)\n",
"fig.legend(lines, labels ,loc='right', ncol=3, bbox_to_anchor=(0.55, 0.51))\n",
"fig.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}