diff options
Diffstat (limited to 'two_tone_tuner.ipynb')
-rw-r--r-- | two_tone_tuner.ipynb | 85 |
1 files changed, 46 insertions, 39 deletions
diff --git a/two_tone_tuner.ipynb b/two_tone_tuner.ipynb index af96f5a..1d6f6cb 100644 --- a/two_tone_tuner.ipynb +++ b/two_tone_tuner.ipynb @@ -12,6 +12,7 @@ "import time\n", "import src.gen_source as gen_source\n", "import src.two_tone_lib as tt\n", + "import src.dab_tuning_lib as dt\n", "\n", "import src.tcp_async as tcp_async\n", "import src.tcp_sync as tcp_sync\n", @@ -31,6 +32,7 @@ " reload(tcp_sync)\n", " reload(gen_source)\n", " reload(tt)\n", + " reload(td)\n", "except:\n", " pass" ] @@ -106,24 +108,34 @@ "metadata": {}, "outputs": [], "source": [ - "def measure(param):\n", - " x2, x3, x4, x5, x6, x7, x8 = param\n", + "def measure(param, debug = False):\n", + " #x2, x3, x4, x5, x6, x7, x8 = param\n", + " x1, x2, x3, x4, x5, x6, x7, x8 = param + [1]\n", " \n", " repeat = True\n", " while repeat:\n", " #tt.gen_two_tone(debug = True, predist=tt.predist_poly, par=(x2, x3, x4))\n", " \n", - " top.dpd_memless_poly_0.set_a1(0.8)\n", - " top.dpd_memless_poly_0.set_a2(x2)\n", - " top.dpd_memless_poly_0.set_a3(x3)\n", - " top.dpd_memless_poly_0.set_a4(x4)\n", - " top.dpd_memless_poly_0.set_a5(x5)\n", - " top.dpd_memless_poly_0.set_a6(x6)\n", - " top.dpd_memless_poly_0.set_a7(x7)\n", - " top.dpd_memless_poly_0.set_a8(x8)\n", + " #top.dpd_memless_poly_0.set_a1(0.8)\n", + " #top.dpd_memless_poly_0.set_a2(x2)\n", + " #top.dpd_memless_poly_0.set_a3(x3)\n", + " #top.dpd_memless_poly_0.set_a4(x4)\n", + " #top.dpd_memless_poly_0.set_a5(x5)\n", + " #top.dpd_memless_poly_0.set_a6(x6)\n", + " #top.dpd_memless_poly_0.set_a7(x7)\n", + " #top.dpd_memless_poly_0.set_a8(x8)\n", + " \n", + " top.dpd_lut_0.set_a1(x1)\n", + " top.dpd_lut_0.set_a2(x2)\n", + " top.dpd_lut_0.set_a3(x3)\n", + " top.dpd_lut_0.set_a4(x4)\n", + " top.dpd_lut_0.set_a5(x5)\n", + " top.dpd_lut_0.set_a6(x6)\n", + " top.dpd_lut_0.set_a7(x7)\n", + " top.dpd_lut_0.set_a8(1)\n", " \n", " sync.has_msg()\n", - " np.array(sync.get_msgs(1))\n", + " np.array(sync.get_msgs(3))\n", " msgs = np.array(sync.get_msgs(5))\n", " msgs = [np.fft.fftshift(msg) for msg in msgs]\n", " \n", @@ -135,7 +147,8 @@ " mean_msg = a.mean(axis = 0)\n", " suffix = \"x_2_%.3f_x_3_%.3f_x_4_%.3fx_5_%.3fx_6_%.3fx_7_%.3fx_8_%.3f\" % \\\n", " (x2, x3, x4, x5, x6, x7, x8)\n", - " sig_to_noise = tt.analyse_power_spec(mean_msg, debug=True, debug_path=\"/tmp/out\", suffix=suffix)\n", + " sig_to_noise = tt.analyse_power_spec(mean_msg, debug=debug, debug_path=\"/tmp/out\", suffix=suffix)\n", + " #sig_to_noise = dt.calc_signal_sholder_ratio(mean_msg, sampling_rate=8000000, debug=debug, debug_path=\"/tmp/out\", suffix=suffix)\n", " print(sig_to_noise, x2, x3, x4, x5, x6, x7, x8)\n", " repeat = False\n", " \n", @@ -151,13 +164,14 @@ "def simple_opt(pars, i, d, func):\n", " par = pars[i]\n", " test_pars = []\n", - " for x in [-1, 0, 1]:\n", + " for x in [-3, -2, -1, 0, 1, 2, 3]:\n", + " debug = x == 0\n", " new_par = list(pars)\n", " new_par[i] = par + x * d \n", - " test_pars.append(new_par)\n", - " res = [func(par_new) for par_new in test_pars]\n", + " test_pars.append([new_par, debug])\n", + " res = [func(par_new, debug) for par_new, debug in test_pars]\n", " sel = np.argmax(res)\n", - " best_par = test_pars[sel]\n", + " best_par = zip(*test_pars)[0][sel]\n", " return best_par\n", "\n", "#pars = [1,1,1]\n", @@ -172,14 +186,7 @@ "metadata": {}, "outputs": [], "source": [ - "top.set_txgain(85)\n", - "top.set_rxgain(5)\n", - "\n", - "pars = np.zeros(7)\n", - "\n", - "for i in range(10000):\n", - " i_rand = np.random.randint(0, len(pars))\n", - " pars = simple_opt(pars, i_rand, 0.005, measure)\n" + "#top.blocks_file_source_0.open(\"../dab_normalized_c64.dat\", True)" ] }, { @@ -187,23 +194,23 @@ "execution_count": null, "metadata": {}, "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "top.set_txgain(85)\n", + "reload(dt)\n", + "top.set_txgain(84)\n", + "top.set_rxgain(5)\n", "\n", - "params = []\n", - "for x2 in np.linspace(-0.1, 0.1, num = 11):\n", - " for x3 in np.linspace(-0.1, 0.1, num = 11):\n", - " for x4 in np.linspace(-0.1, 0.1, num = 11):\n", - " params.append((x2, x3, x4))\n", - " \n", - "t_start = time.time()\n", - "for idx, param in enumerate(params):\n", - " measure(param)\n", - " time_per_element = (time.time() - t_start) / (idx + 1)\n", - " print (\"Time per Element \" + str(time_per_element) +\n", - " \", total: \" + str(time_per_element * len(params)),\n", - " \", left: \" + str(time_per_element * (len(params) - 1 - idx))\n", - " )" + "pars = np.array(range(1,8))/8.\n", + "\n", + "for i in range(10000):\n", + " i_rand = np.random.randint(0, len(pars))\n", + " pars = simple_opt(pars, i_rand, 0.05, measure)" ] }, { |