{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "iNt83nhEmGgf" }, "source": [ "# FMCW Radar 103 - AoA\n", "[![](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/matt-chv/mmWrt/blob/main/docs/FMCW-Radar-103_AoA.ipynb)\n", "\n", "> In FMCW MIMO (multiple TX, multiple RX antennas) radar, the Angle of Arrival is computed from the phase difference measured at each antenna.\n", "\n", "Status:\n", "* Minimum Reproducible Example for 1 target multiple angles, 2 RX antennas and calculation of the Angle of Arrival\n", "* Shows how to compute Bartlet and Capon with code\n", "* Back-up code also looks at using FFT and cross-correlation (not yet finished)\n", "\n", "Results:\n", "* shows that Barlett ,for 6 elements, is limited to 8.5 degrees and CAPON goes done to 2.5 degrees all other parameters equivalent.\n", "* compares code to existing pyargus library (similar results).\n", "\n", "Next:\n", "* instead of implicit compute of Rxx from steering vector (Eq 7.21 below) , compute its estimates with ADC samples (Eq RXX_1) and add this into radar signal chain\n", "\n", "History:\n", "* 2023-01-02: Added 2D FFT AoA, CAPON and Bartlet
(\n", " see code cell for warning about same range bin)
\n", "* 2022-12-16: Moved 2 RX antennas MRE to fore-front.\n", "* 2022-12-14: added MRE for single target 2 antennas\n", "* 2022-10-28: adding investigations with Pyargus on resolution as function elements in ULA with Capon vs Bartlet\n", "* 2022-10-22: fixed Bartlett and Capon code to allow for any number of RX elements" ] }, { "cell_type": "markdown", "metadata": { "id": "aAJENwbvsZx3" }, "source": [ "Next:\n", "\n", "* click to access other workbooks:\n", " * [FMCW 101 - Range and Speed](https://colab.research.google.com/gist/matt-chv/bdd8b835c5cb7e739bb8b68d00257690/fmcw-radar-101.ipynb): Measure distance and speed for FMCW radar.\n", " * [FMCW 102 - CFAR](https://colab.research.google.com/gist/matt-chv/33e98a23d4b9d90dd27c1bf7f0a54781/fmcw-radar-102-cfar.ipynb) : CFAR or how to detect objects of interest from range FFT.\n", " * [FMCW 103 - AoA](https://colab.research.google.com/gist/matt-chv/d81f7e2166009a623a36781a0773ae47/fmcw-radar-103-aoa.ipynb) : angle of arrival (CAPON vs Bartlett)\n", " * [FMCW 104 - increased resolution vs FFT bin](https://colab.research.google.com/gist/matt-chv/0b25dbc4673f2d7d63804cc6241643b9/fmcw-radar-104-1-fft-freq-estimation.ipynb)increase accuracy option compared to standard FFT.\n", " * Also available on github as gist for forking:\n", " * [fmcw 101](https://gist.github.com/matt-chv/bdd8b835c5cb7e739bb8b68d00257690)\n", " * [fmcw 102](https://gist.github.com/matt-chv/33e98a23d4b9d90dd27c1bf7f0a54781)\n", " * ...\n", "\n", "Related ressources:" ] }, { "cell_type": "markdown", "metadata": { "id": "8VzKg_OnsrwX" }, "source": [ "## AoA Maths" ] }, { "cell_type": "markdown", "metadata": { "id": "z3_nV_1Mst5T" }, "source": [ "## Minimum Reproductible Examples" ] }, { "cell_type": "markdown", "metadata": { "id": "FUAB_Om3s4eO" }, "source": [ "## Phase based AoA estimate" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "PWNqe1oErEqc", "outputId": "947c3df3-9f0f-473e-95cd-e55b8d117b40" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "theta: -60, calculated: -62\n", "theta: -30, calculated: -31\n", "theta: -18, calculated: -18\n", "theta: 0, calculated: -0.018\n", "theta: 18, calculated: 18\n", "theta: 30, calculated: 31\n", "theta: 60, calculated: 62\n" ] } ], "source": [ "from numpy import abs ,angle, arange, arcsin, cos, sin, pi, sqrt, tan\n", "from scipy.fft import fft\n", "\n", "def y_IF(f0_min, slope, T, antenna_tx, antenna_rx, target, v=3e8):\n", " \"\"\" This function implements the mathematical IF defined in latex as\n", " y_{IF} = cos(2 \\pi [f_0\\delta + s * \\delta * t - s* \\delta^2])\n", " into following python code\n", " y_IF = cos (2*pi*(f_0 * delta + slope * delta * T + slope * delta**2))\n", " Parameters:\n", " -----------\n", " f0_min: float\n", " the frequency at the begining of the chirp\n", " slope: float\n", " the slope with which the chirp frequency inceases over time\n", " T: ndarray\n", " the 1D vector containing time values\n", " antenna_tx: tuple of floats\n", " x, y, z coordinates\n", " antenna_rx: tuple of floats\n", " x, y, z coordinates\n", " target: tuple of floats\n", " x, y, z coordinates\n", " v: float\n", " speed of light in considered medium\n", " Returns:\n", " --------\n", " YIF: ndarray\n", " vector containing the IF values\n", " \"\"\"\n", " tx_x, tx_y, tx_z = antenna_tx\n", " rx_x, rx_y, rx_z = antenna_rx\n", " t_x, t_y, t_z = target\n", " distance = sqrt((tx_x-t_x)**2 + (tx_y-t_y)**2 + (tx_z-t_z)**2)\n", " distance += sqrt((rx_x-t_x)**2 + (rx_y-t_y)**2 + (rx_z-t_z)**2)\n", " # delta = sqrt((A.x-target.x)**2+(A.y-target.y)**2+(A.z-target.z)**2)/3e8\n", " delta = distance/v\n", " YIF = cos(2 *pi *(f0_min * delta + slope * delta * T + slope * delta**2))\n", " return YIF\n", "\n", "f0_min = 60e9\n", "c = 3e8\n", "# lambda ~5mm at 60GHz\n", "lambda0_max = 3e8/f0_min\n", "n_rx = 2\n", "Distance = 10\n", "k = 200e12\n", "n_samples = 512\n", "f_if = 2*k*Distance/c\n", "fs = 50e6\n", "ts = 1/fs\n", "\n", "antenna_tx = (-lambda0_max/2,0,0)\n", "T = arange(0, n_samples*ts+ts, ts)\n", "\n", "for theta in [-180/3, -180/6, -180/10, 0, 180/10, 180/6, 180/3]:\n", " target = (4*sin(theta/180*pi), 4*cos(theta/180*pi),0)\n", "\n", " Antennas_RXs = [(i*lambda0_max/2,0,0) for i in range(n_rx)]\n", "\n", " phases = []\n", " i_peaks = []\n", " for antenna_rx in Antennas_RXs:\n", " tx_x, tx_y, tx_z = antenna_tx\n", " rx_x, rx_y, rx_z = antenna_rx\n", " t_x, t_y, t_z = target\n", " distance = sqrt((tx_x-t_x)**2 + (tx_y-t_y)**2 + (tx_z-t_z)**2)\n", " distance += sqrt((rx_x-t_x)**2 + (rx_y-t_y)**2 + (rx_z-t_z)**2)\n", " f_if = 2*k*Distance/c\n", " assert f_if < 1/ts/2\n", " YIF = y_IF(f0_min, k,T, antenna_tx, antenna_rx, target)\n", " FT = fft(YIF)\n", " MAG = abs(FT)[0:int(n_samples/2)]\n", " ANG = angle(FT)[0:int(n_samples/2)]\n", "\n", " # now find the peak\n", " amplitude_peak = sorted(MAG, reverse = True)[0]\n", " i_peak = list(MAG).index(amplitude_peak)\n", " if not i_peaks:\n", " i_peaks.append(i_peak)\n", " else:\n", " try:\n", " assert i_peak in i_peaks\n", " except:\n", " # exit now as we don't have the logic to track across range bins\n", " print(\"bin range change\")\n", " break\n", " phases.append(ANG[0:int(n_samples/2)][i_peak])\n", " f_peak = i_peak * 1/ts / n_samples\n", " d2 = f_peak*c/2/k\n", " dfixed = 0\n", "\n", " delta_phase = (phases[0]-phases[1]) #/len(phases)\n", " if delta_phase/pi>1:\n", " theta_calc = arcsin(delta_phase/pi -2)*180/pi\n", " print(f\"theta: {theta:.2g}, calculated_p: {theta_calc:.2g}\")\n", " elif delta_phase/pi<-1:\n", " theta_calc = arcsin(delta_phase/pi % +2)*180/pi\n", " print(f\"theta: {theta:.2g}, calculated_m: {theta_calc:.2g}\")\n", " else:\n", " theta_calc = arcsin(delta_phase/pi)*180/pi\n", " print(f\"theta: {theta:.2g}, calculated: {theta_calc:.2g}\")" ] }, { "cell_type": "markdown", "metadata": { "id": "lFyDfSeKs_xS" }, "source": [ "## FFT based AoA" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 444 }, "id": "qCMP9W4XtJEo", "outputId": "df18228e-50d9-4e7d-f49c-6f7a76fe2630" }, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'AoA-Range 2D FFT')" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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aNFCRo4cmdvdAQAAhOeCeI0bN5YxY8bI9u3bT8buAAAATl0g8+2330qnTp2kbt26ZurcubMsWrRIChcunJvdAQAA5M0F8T766CPp27evXHvttTJgwACzbPHixXLZZZfJhAkT5Oabb85dSfIrj0es5cl9ws5TyJOzfadbX69PlLo8bb20If+eiEIikamnradYMfOYXDHGPM6b9J55vOTOO81jid//Tt32wKHUx6PHzINz/HjqfEpK6mO6e4RpB/bU59MefU+krR+Ek37dnMpi367mPVYAYEsg88wzz8hzzz0n999/v2+ZBjTa0VeHaBPIAACAvJLjP7k3bdpkmpXS0+alzZs3n6xyAQAAnPxApnr16jJ//vwMy+fNm2eeAwAAcG3T0pAhQ0xT0urVq821Y7x9ZPRO2K+88sqpKCMAAMDJCWTuueceqVy5srmJ5CeffGKWNWjQwNy+oHbt2jndHQAAQK7laljKNddcI999953s3bvX9Ivp2bOnPP300+aWBSdTcnKyPProo+b+TsWKFZM6deqYDsW+USUAAKBAy3FGxis+Pl7effddmTp1qlStWtUMxx47duxJLdyoUaNk3Lhx5pYIDRs2lBUrVpih3zExMb6h3wAAoODKUSCj91fSa8VoAJOYmCjdu3eXpKQkmT59umleOtmWLFkiXbp0kY4dO5r5mjVryuTJk2X58uWZbqPl0clLywkAAAp405IOua5fv778/PPP5nYEO3bskFdfffWUFk47E+sIKb3rtvrpp59Mk1aHDh0y3SYuLs5kbLwTI6kAAMi/Qs7IzJo1yzTnaGffevXqSV546KGHTEblzDPPlIiICNNnRi/I16NHj0y3iY2NlcGDB/vmdXuCGQAACnhGRjMhBw4ckGbNmknLli3ltddek3/++eeUFk5HRU2cOFEmTZokq1atMn1lXnjhBfOYmaioKImOjg6YAABAAQ9kzj//fHn77bdl586dctddd8mUKVNMJ9+UlBSZO3euCXJOtgcffNBkZW688UZzh+1evXqZWyNo8xEAAECOh1+XKFFCbr31VpOhWbNmjblA3siRI6VixYrmNgUn0+HDh6WQ96aBabSJSYMnAACA3N/eWMR0/tUbSP71119mNNHJph2MtU/MzJkzZcuWLTJt2jRzc0q9jg0AAECuryOTPkvStWtXM51MOipKL4jXr18/2bNn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GgRrk4juX8+Dfv36mT41GqQqbbbQ5dqUogkK/cNC+7Zk1kSsP+jaD6dPnz4By3U/GpjqHw/aFKPHQZs2tLnNJtrUqp8d/YPr6aefNk27s2fPNs16CxYskEsuuSTodnqctVlu9erVQZ/31ltWv1mb0upQ+/jpd6L+Iffiiy+a/kf6h02wYEW/R7UpUIMvLw1etPlKg1g9T7SpXvehzVn6/etajuW2b99uUmFLliwJWP7ggw+alHgwmnqdNGlSwLKxY8c6FStWdAqqrVu3mvevTQJeJ9q0lNO6yUla89133zVNSUeOHDHzd9xxh9l23bp1vnVWrlxplgVrbpo4caJTvHhx04SWFS1LdHR0jlO24aBp5mrVqpnHn3/+2fnggw+csmXLOhMmTAhp+2DHJCd1qOnu9evXO99++63TqVMn59xzz3X++++/XDUtffPNN6Ys77//fpbrHT161DRVDB8+3LG1aUnfgx6vpk2bOgkJCdnuKykpydmwYYOzYsUK56GHHnLKly/v/PLLL746LFKkSIZtmjdv7gwdOtT8//777zdNIFl97i6//HKnaNGipk69pk6d6ng8Hufw4cO+7SpVquS8/fbb5nz7/PPPnerVqztPPvlk0HJfccUVztVXX53t+/M2dQVrlnRznXo/KzfddFPAelq3N954Y9B9JCYmOjVr1nS++uor37L0TUuLFy82+92xY0fAttdff73pJuGtd13nzTffdLz0u1HPjTfeeMNJb82aNea5p556ysnOxRdfnKvmsrxkfUZG05H612f6Xvk6n1kHVF2ek/ULAk0R618U/lG3/iWunUG1M5hG53qcT3XdhEozJ/oXoHaQ07/S9S+JyMhIk9b10l75SpuG/DspauZJm500e5NdE5r+Zav73Lhxo7jdgw8+aLIyN954o5nXETGapYqLi5PevXtnuW1mxyQndajpbp3q1asn559/vhk1oX/N61//OaEdVLXD8UsvvWQ6+2alcOHCJpVuQ/0Eo81Amv3SetLMYXbZGKUZl7p16/o6WWvWSkefaOZK60SbcDTz4Z+V8a8vfR3N6nz22Wdm3juqTetaO4BqFlI/T9qkpPXp/3nSdf/66y9Tx9qJVTuX6nnjPd80G3fnnXea/fg3Wen7mzdvXkhZFv1sK61THQlnCz1++h3kzY75H7fMBgxo52D9DtPz3b+JSum+NDPlrTetQ60XL533jv6rkrbc/7V1pJk2j6dvGtdmxcsuu8zU0/Dhw7N9Xzpgwu0DHqzvI6Mfav0wa98A/xNB573txunpcv/1labBM1u/INATW7/cNL3pnTS9qM0S+v+cBjG5rZtQaZn0i9Lbm75Vq1YmsNEvBi9vXxFNW3vpyAvt1a+P2hcoO5oq1n36f4G4lfYrSN/fQevN+8WYmayOSW7rUH/wdNIAOCd0pIeWQdPy+kWbHQ229by1oX4yC2K0T5b+yGv/r9zQ+vAeZ60rDe7860t/DPXHzFtfOrpF+095P+fafKAWLVrkGxatnycd7aTnv//nSc8vbxNeZuebSj/kX5uj9LMaymfO28RiW53qZ0WHWuvx9qfHzf87yJ82A6f/3tWRazp6UP+v/cC0r5kGM/51qk3I2tzjrdNmaZc18H9tPb80SPJ/bW2C1X3rHzb+l6bIipbD9XXh5ANTpkwxPbg1ha6jV+68806ndOnSzq5du8zzvXr1MilY/1SdNku88MILpke/prq1uUnTbXAybVpKfxw1xf3jjz+aqUqVKs4DDzxg/q9p71DrRu3cudNspylqPSXj4+PNvHfEhDZraLPV6tWrnT/++MP56KOPnAoVKji33HJLwEgabcrQNOiqVatM2l1HommK3EvTr1rv2oyor+md/NPnQ4YMcRYuXOhs3rzZnCft2rUzKdg9e/Y4bqcpaR25MGPGDFN+TfVr2b1NCkrrT+sxJ8ckuzrUOnn22WfNMdcRN3rcNJ2uzVq7d+/27UfPC61XHR14xhln+M4dPY/8m5NiY2MDyuI/ckZHU82ZM8e8pjYdaspem0C8TStuGwHofY96Xo8ePdr8X4+RNid17tzZNAXqee3/fr3HQ+mooFdffTWg/rTpTutXm3N0Xpt7vv76a986d999t1OjRg1zPLVOLrjgAjNlJljTkpZdy9atWzdzbPU1dTTj7bff7ltHvzdLlSplmjI3bdpkyqDNfN7mDv/PppZn2LBhGV5bm4+0KUrLqe/piy++cGrXrm0+x26UVZ0q/czpb8lbb71lznetu4iICGfRokWZfo+ml75pSY0cOdJ85vT4aL3r87Vq1Qpouh04cKD5/OvnQ5vTb7vtNtNd4N9//zXP6++bfm9qM5H/+eb/3abfs9OnTzdl1/V1n4UKFXLmzZvnuFm+CGSUnjD6YdH2YW27X7ZsWcAPsp4c/j755BPzZarrN2zY0Jk5c2YYSm1XIJP+OOoXj36Y00+6Xqh14/1CDLYfHWqr9AdLgxIdDqo/WmeddZb54fT2j/Fvo9bhxiVLljRt93369An4EdRyBXsd//ekfQc0KNOy6peCzru9rd6/vV3rS4+1Hif9QXjkkUcCfhj1vfrXTyjHJLs61OPeoUMH86WpX+L6A3jzzTdn6JuU2WvpeeQtW3bn06BBg3zl0DrW4dkauLqRN0AIdmwz++zopNv59z3Tz4eXDq/XZfr+9UfpsssuCwhilP646bBaHZatgeE111xjfrCyK2f6vmn6R54G8sWKFTN1qkOrvf1jvEN+R4wYYYIXPd+0f4y+bvr96A9r+v5r/n3zNGjRoFeD5bp165r+V6H0FXJbnfr339P3ocdE+4JpYOAv2O9RdoGMDsF+9NFHzTmvx0nrPf3xPHr0qPlDTD+HGmBq3a1duzbb71k9n7xGjRrlq0+tkzZt2piA2O08+k+4s0IAAAAFso8MAAAouAhkAACAtQhkAACAtQhkAACAtQhkAACAtQhkAACAtQhkAACAtQhkAACAtQhkABRIetPDUO7nlBW9AZ/ee0hvlgggPAhkAORInz59xOPxmElvUKg3tRs6dKgcOXJEbLFr1y5zx2i9S/OJ0LsN652+R48efdLKBiBnCGQA5NiVV14pO3fulE2bNslLL70kb775pjz++ONiC73j84UXXpjpXYlzQu8cPm7cOHP3dQB5j0AGQI5FRUVJ5cqVpXr16tK1a1dp166dzJ071/f83r175aabbpLTTjtNihcvLo0bN5bJkycH7KNNmzYyYMAAk80pW7as2d+IESMC1vn999+ldevWUrRoUZP9mDdvnskETZ8+3bfOtm3bpHv37lK6dGmzny5dusiWLVuyLP+UKVOkU6dOGcpz3333yaBBg6RMmTJSqVIlefvtt02zkQYrpUqVkrp168qsWbMCtrv88svl33//lW+//TZXxxLAiSGQAXBC1q5dK0uWLJEiRYr4lmkzU7NmzWTmzJnmee2L0qtXL1m+fHnAtu+//76UKFFCvv/+e3nuuefkySef9AVEycnJJkjSQEiff+uttzI0BR07dkzat29vgoxFixbJ4sWLpWTJkiZjdPTo0aDl1aBD+7acd955GZ7T8pQvX96UU4Oae+65R66//nqTvVm1apVcccUV5n0cPnzYt42+73POOce8PoAwCPfttwHYpXfv3k5ERIRTokQJJyoqytGvkUKFCjmfffZZltt17NjRGTJkiG/+kksucVq3bh2wTvPmzZ1hw4aZ/8+aNcuJjIx0du7c6Xt+7ty55vWmTZtm5j/88EOnfv36TkpKim+dpKQkp1ixYs6cOXOCluPHH380+9i6dWvA8vTlOX78uHmPvXr18i3Tsui2S5cuDdj2mmuucfr06ZPl+wdwakSGI3gCYLe2bduafiHa7KJ9ZCIjI+W6667zPa/ZlGeffVY++eQT2b59u8mOJCUlmeyKv7PPPjtgvkqVKrJnzx7z/3Xr1pmmK21y8mrRokXA+j/99JNs3LjRZGT8aUbojz/+CFr2//77zzxqc1V6/uWJiIiQcuXKmWYxL21uUt4yehUrViwgSwMg7xDIAMgxbQ7S/iLqvffekyZNmsi7774rt912m1n2/PPPm1FBY8aMMYGArq99T9I39+ioJ3/a/yUlJSXkchw8eNA0YU2cODHDcxUqVAi6jTYdqX379mVYJ1h5/JfpvEpfRm2uqlOnTsjlBnDy0EcGwAkpVKiQPPzwwzJ8+HBftkP7qmin2549e5ogp3bt2rJ+/foc7bd+/fqmI+/u3bt9y3744YeAdc4991zZsGGDVKxY0QRW/lNMTEzQ/WrAER0dbfrJnCzaD6hp06YnbX8AQkcgA+CEaYdYbYoZO3asma9Xr57ptKudgH/77Te56667AgKSUOhoIA06evfuLT///LMJjjRY8s+M9OjRw2RYNGjSzrabN2+WhQsXmtFQf/31V6aBl46y+u677+Rk0BFS2nym+wSQ9whkAJww7SNz7733mpFH2m9GAw7NluiIIh3WrP1cdARSTmhgpMOstfmoefPmcvvtt/tGLXn7t2ifm/j4eKlRo4Zce+21ctZZZ5nmLe0jo1mXzOi+dAh2TpqxMqPDynU008m4Jg2AnPNoj99cbAcAeU6zMnpdGe3geyJ9UvRrr2XLlnL//feb693klvb50ezTpEmTpFWrVrneD4Dco7MvANeaNm2auS6MBgsavAwcONAEDCfasVabpvS6NGvWrDmh/WzdutX0DyKIAcKHjAwA1/rggw/k6aefNgGD9oXRfigvvviiGRYNAIpABgAAWIvOvgAAwFoEMgAAwFoEMgAAwFoEMgAAwFoEMgAAwFoEMgAAwFoEMgAAwFoEMgAAQGz1f22oZIpyhXRiAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# single target FFT AoA MRE\n", "from numpy import abs ,angle, arange, arcsin, cos, pi, sqrt, tan, zeros\n", "from scipy.fft import fft, fft2\n", "import matplotlib.pyplot as plt\n", "\n", "def y_IF(f0_min, slope, T, antenna_tx, antenna_rx, target, v=3e8):\n", " \"\"\" This function implements the mathematical IF defined in latex as\n", " y_{IF} = cos(2 \\pi [f_0\\delta + s * \\delta * t - s* \\delta^2])\n", " into following python code\n", " y_IF = cos (2*pi*(f_0 * delta + slope * delta * T + slope * delta**2))\n", " Parameters:\n", " -----------\n", " f0_min: float\n", " the frequency at the begining of the chirp\n", " slope: float\n", " the slope with which the chirp frequency inceases over time\n", " T: ndarray\n", " the 1D vector containing time values\n", " antenna_tx: tuple of floats\n", " x, y, z coordinates\n", " antenna_rx: tuple of floats\n", " x, y, z coordinates\n", " target: tuple of floats\n", " x, y, z coordinates\n", " v: float\n", " speed of light in considered medium\n", " Returns:\n", " --------\n", " YIF: ndarray\n", " vector containing the IF values\n", " \"\"\"\n", " tx_x, tx_y, tx_z = antenna_tx\n", " rx_x, rx_y, rx_z = antenna_rx\n", " t_x, t_y, t_z = target\n", " distance = sqrt((tx_x-t_x)**2 + (tx_y-t_y)**2 + (tx_z-t_z)**2)\n", " distance += sqrt((rx_x-t_x)**2 + (rx_y-t_y)**2 + (rx_z-t_z)**2)\n", " # delta = sqrt((A.x-target.x)**2+(A.y-target.y)**2+(A.z-target.z)**2)/3e8\n", " delta = distance/v\n", " YIF = cos(2 *pi *(f0_min * delta + slope * delta * T + slope * delta**2))\n", " return YIF\n", "\n", "f0_min = 60e9\n", "c = 3e8\n", "# lambda ~5mm at 60GHz\n", "lambda0_max = 3e8/f0_min\n", "n_rx = 32\n", "Distance = 10\n", "k = 200e12\n", "n_samples = 512\n", "f_if = 2*k*Distance/c\n", "fs = 50e6\n", "ts = 1/fs\n", "\n", "antenna_tx = (-lambda0_max/2,0,0)\n", "T = arange(0, n_samples*ts, ts)\n", "\n", "#for theta in [-180/3, -180/6, -180/10, 0, 180/10, 180/6, 180/3]:\n", "theta = -180/6\n", "target = (4*tan(theta/180*pi),4,0)\n", "\n", "Antennas_RXs = [(i*lambda0_max/2,0,0) for i in range(n_rx)]\n", "\n", "phases = []\n", "i_peaks = []\n", "cube2D = zeros((n_rx, n_samples))\n", "for i, antenna_rx_i in enumerate(Antennas_RXs):\n", " tx_x, tx_y, tx_z = antenna_tx\n", " rx_x, rx_y, rx_z = antenna_rx_i\n", " t_x, t_y, t_z = target\n", " distance = sqrt((tx_x-t_x)**2 + (tx_y-t_y)**2 + (tx_z-t_z)**2)\n", " distance += sqrt((rx_x-t_x)**2 + (rx_y-t_y)**2 + (rx_z-t_z)**2)\n", " f_if = 2*k*Distance/c\n", " assert f_if < 1/ts/2\n", " YIFi = y_IF(f0_min, k, T, antenna_tx, antenna_rx_i, target)\n", " cube2D[i, :] = YIFi\n", "\n", "Z_fft2 = abs(fft2(cube2D))\n", "Data_fft2 = Z_fft2[0:n_rx//2,0:n_samples//2]\n", "\n", "# change scale for 2D plot to display range and velocity values\n", "# https://stackoverflow.com/a/53746824\n", "# range formula\n", "ranges = arange(0, fs*c/2/k, fs*c/2/k/n_samples)\n", "no_labels = 10 # how many labels to see on axis x\n", "step_x = int(n_samples / (no_labels - 1)) # step between consecutive labels\n", "x_positions = arange(0, n_samples, step_x) # pixel count at label position\n", "x_labels = ranges[::step_x] # labels you want to see\n", "plt.xticks(x_positions, x_labels)\n", "\n", "# angle of arrival\n", "# angles = arange(-90, 90, 1)\n", "# no_labels_y = 5 # how many labels to see on axis y\n", "# step_y = int(n_chirps / (no_labels_y - 1)) # step between consecutive labels\n", "# y_positions = arange(0, n_chirps, step_y) # pixel count at label position\n", "# y_labels = speeds[::step_y] # labels you want to see\n", "# plt.yticks(y_positions, y_labels)\n", "\n", "# adding aspect=10 to have a more readable image\n", "# since we have ~512 samples\n", "# and only ~16 antennas\n", "plt.imshow(Data_fft2, interpolation='nearest', aspect=10)\n", "\n", "# plt.rcParams[\"figure.figsize\"] = (10,100)\n", "plt.xlabel(\"Range (m)\")\n", "plt.ylabel(\"AoA\")\n", "plt.title('AoA-Range 2D FFT')\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 312 }, "id": "nNU-z_IQdupA", "outputId": "43f773a8-f369-4211-bbaf-cfcfb4bd6c8d" }, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'AoA-Range 2D FFT')" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 3 targets FFT AoA MRE\n", "from numpy import abs ,angle, arange, arcsin, cos, pi, sin, sqrt, tan, zeros\n", "from scipy.fft import fft, fft2\n", "import matplotlib.pyplot as plt\n", "\n", "def y_IF(f0_min, slope, T, antenna_tx, antenna_rx, target, v=3e8):\n", " \"\"\" This function implements the mathematical IF defined in latex as\n", " y_{IF} = cos(2 \\pi [f_0\\delta + s * \\delta * t - s* \\delta^2])\n", " into following python code\n", " y_IF = cos (2*pi*(f_0 * delta + slope * delta * T + slope * delta**2))\n", " Parameters:\n", " -----------\n", " f0_min: float\n", " the frequency at the begining of the chirp\n", " slope: float\n", " the slope with which the chirp frequency inceases over time\n", " T: ndarray\n", " the 1D vector containing time values\n", " antenna_tx: tuple of floats\n", " x, y, z coordinates\n", " antenna_rx: tuple of floats\n", " x, y, z coordinates\n", " target: tuple of floats\n", " x, y, z coordinates\n", " v: float\n", " speed of light in considered medium\n", " Returns:\n", " --------\n", " YIF: ndarray\n", " vector containing the IF values\n", " \"\"\"\n", " tx_x, tx_y, tx_z = antenna_tx\n", " rx_x, rx_y, rx_z = antenna_rx\n", " t_x, t_y, t_z = target\n", " distance = sqrt((tx_x-t_x)**2 + (tx_y-t_y)**2 + (tx_z-t_z)**2)\n", " distance += sqrt((rx_x-t_x)**2 + (rx_y-t_y)**2 + (rx_z-t_z)**2)\n", " # delta = sqrt((A.x-target.x)**2+(A.y-target.y)**2+(A.z-target.z)**2)/3e8\n", " delta = distance/v\n", " YIF = cos(2 *pi *(f0_min * delta + slope * delta * T + slope * delta**2))\n", " return YIF\n", "\n", "f0_min = 60e9\n", "c = 3e8\n", "# lambda ~5mm at 60GHz\n", "lambda0_max = 3e8/f0_min\n", "n_rx = 32\n", "k = 200e12\n", "n_samples = 512\n", "fs = 50e6\n", "ts = 1/fs\n", "\n", "antenna_tx = (-lambda0_max/2,0,0)\n", "T = arange(0, n_samples*ts, ts)\n", "\n", "Antennas_RXs = [(i*lambda0_max/2,0,0) for i in range(n_rx)]\n", "\n", "phases = []\n", "i_peaks = []\n", "cube2D = zeros((n_rx, n_samples))\n", "\n", "d0, theta0 = 4, 0\n", "target0 = (d0*sin(theta0/180*pi),d0*cos(theta0/180*pi),0)\n", "t_x, t_y, t_z = target0\n", "\n", "d1, theta1 = 4, 180/3\n", "target1 = (d1*sin(theta1/180*pi),d1*cos(theta1/180*pi),0)\n", "t_x, t_y, t_z = target1\n", "\n", "d2, theta2 = 12, 180/3\n", "target2 = (d2*sin(theta2/180*pi),d2*cos(theta2/180*pi),0)\n", "\n", "for i, antenna_rx_i in enumerate(Antennas_RXs):\n", " tx_x, tx_y, tx_z = antenna_tx\n", " rx_x, rx_y, rx_z = antenna_rx_i\n", "\n", " distance = sqrt((tx_x-t_x)**2 + (tx_y-t_y)**2 + (tx_z-t_z)**2)\n", " distance += sqrt((rx_x-t_x)**2 + (rx_y-t_y)**2 + (rx_z-t_z)**2)\n", " f_if = 2*k*distance/c\n", " assert f_if < 1/ts/2\n", " YIFi0 = y_IF(f0_min, k, T, antenna_tx, antenna_rx_i, target0)\n", " YIFi1 = y_IF(f0_min, k, T, antenna_tx, antenna_rx_i, target1)\n", " YIFi2 = y_IF(f0_min, k, T, antenna_tx, antenna_rx_i, target2)\n", "\n", " YIFi = YIFi0 + YIFi1 + YIFi2\n", "\n", " cube2D[i, :] = YIFi\n", "\n", "Z_fft2 = abs(fft2(cube2D))\n", "Data_fft2 = Z_fft2[0:n_rx,0:n_samples//2]\n", "\n", "# change scale for 2D plot to display range and velocity values\n", "# https://stackoverflow.com/a/53746824\n", "# range formula\n", "ranges = arange(0, fs*c/2/k, fs*c/2/k/n_samples)\n", "# convert to int for ease of dispaly on x_axis\n", "ranges = ranges.astype(int)\n", "no_labels = 10 # how many labels to see on axis x\n", "step_x = int(n_samples / (no_labels - 1)) # step between consecutive labels\n", "x_positions = arange(0, n_samples, step_x) # pixel count at label position\n", "x_labels = ranges[::step_x] # labels you want to see\n", "plt.xticks(x_positions, x_labels)\n", "\n", "# angle of arrival labels\n", "# non linear as we have arcsin to convert phase delta to AoA\n", "phases = arange(0, 1, 1/n_rx)\n", "angles = arcsin(phases)*100\n", "angles = angles.astype(int)\n", "n_angles = len(angles)\n", "no_labels_y = 10 # how many labels to see on axis y\n", "step_y = int(n_rx / (no_labels_y - 1)) # step between consecutive labels\n", "y_positions = arange(0, n_rx, step_y) # pixel count at label position\n", "y_labels = angles[::step_y] # labels you want to see\n", "plt.yticks(y_positions, y_labels)\n", "\n", "# adding aspect=10 to have a more readable image\n", "# since we have ~512 samples\n", "# and only ~16 antennas\n", "plt.imshow(Data_fft2, interpolation='nearest', aspect=10)\n", "\n", "# plt.rcParams[\"figure.figsize\"] = (10,100)\n", "plt.xlabel(\"Range (m)\")\n", "plt.ylabel(\"AoA in degrees\")\n", "plt.title('AoA-Range 2D FFT')" ] }, { "cell_type": "markdown", "metadata": { "id": "tHccDScatCcT" }, "source": [ "## Bartlet based AoA\n", "\n", "* Eq RXX_1\n", "\n", "$$ R_{xx} \\approx \\frac{1}{N} \\cdot \\displaystyle\\sum_{k=0}^{n} X(t) \\cdot X^H(t) $$\n", "[source Eq 14.](https://www.mdpi.com/2411-5134/4/3/43/pdf)\n", "Where X(t) is\n", "$$ X(t) =\n", "\\begin{pmatrix}\n", " x_1(t_1) & x_1(t_2) & \\cdots & x_1(t_n) \\\\\n", " x_2(t_1) & x_2(t_2) & \\cdots & x_2(t_n) \\\\\n", "\\vdots & \\vdots & \\ddots & \\vdots \\\\\n", " x_M(t_1) & x_M(t_2) & \\cdots & x_M(t_n)\n", "\\end{pmatrix} $$\n", "\n", "and 7.22:\n", "\n", "* PB(θ) = /aH(θ) * Rxx * /a(θ)\n", "\n", "
\n", "\n", "
\n", "\n", "The non-correlation constraint for the correlation matrix, implies that the targets _cannot_ be in the same range bin !!\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 314 }, "id": "O2XhhZEQtLTA", "outputId": "4082c938-9c2b-4346-b91a-315d7a53b5c6" }, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 0, 'AoA in degrees')" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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Z+t8++23w2KIgpT4448/pEGDBpIjRw51LDZv3uz3bd64cUPef/99KVu2rGTPnl2aNm0qu3fv9vt2if/gvRTeUIwEOPv27ZPnn39eypUrJ1mzZlVlgxs2bChjxoyRK1euSKgIBHPCPt56663Ss2dPOXnypN3NI6lw/fp1efzxx+Xs2bMyatQomTFjhpQuXdqv27x586Y8+uijantdunRRomTHjh3SqlUrJVIcrys7BRqu4apVqyqRVqpUKWnbtm2ygikuLk5effVVNX5HtmzZpF69evLLL794tM2FCxdKnTp11PaKFi0qbdq0UcfFKitWrHC6Fx2ndevW+aXNhATV2DThCn5c8EOPojgdOnSQatWqybVr12TVqlXyyiuvyPbt22XSpEkSCrz77rvqKffq1atq/yZMmCCLFi2Sbdu2qSdfX/DMM8/IE088wSJDPhbLhw4dks8++0wJg/Rg+PDhsmzZMtmwYYPq7AFGAG/fvr3qUJs3by528+GHH8rq1avV/Xv77ber0crHjh0rd9xxh+rYcS878uyzz8o333wjvXv3lltuuUWJqQceeECWL18ujRo1siR+HnnkEXU8PvroIzUI248//qjmV6lSxaO2v/TSS0rUOFKhQoUky6W1zYQ4gaJnJPDYv3+/kTNnTqNSpUrG8ePHk3y+Z88eY/To0UawM23aNBTdM/744w+n+X379lXzZ82aleZtXLp0yfAXgwcPVu1Mb/y5T56wcuVKtf9z585Nl307f/68kTt3buP11193mn/gwAHVjuHDhztdV3axevVqIy4uzmne7t27jcjISKN9+/ZO89evX6/aOmzYsIR5V65cMcqXL2/Ur1/f0vYGDBhgZMiQwThx4oTT/KtXr1pu8/Llyy2fS1+0OVDupUC6n8IZumkCFDzdXLp0SaZMmaJMrq7gSeXll19W7/Fk+uKLL0rFihWVuTR//vzqicw1NsL0ye7cuVOZjOHywbJYDywSrvz1119y//33q+Vy5swp99xzTxJzrbnOvXv3qielPHnyqBEaO3XqJJcvX/Z6/5s1a6ZeDxw4kDDv2LFj8txzz6mnYFg38BQ4depUt+2Befqpp56SvHnzJjylJRczYmU/ASw2eGKEK6l8+fLy6aefum271fXhKb527dpO63PnN09pnzw993ATPP300+ocFSxYUN566y01xDeGMceTNdpc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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from numpy import arange, array, cos, column_stack, exp, identity, matrix, random, pi, sin, sqrt, zeros\n", "import matplotlib.pyplot as plt\n", "\n", "n_rx = 6\n", "# M = n_rx\n", "f0_min = 60e9\n", "c = 3e8\n", "# lambda ~5mm at 60GHz\n", "lambda0_max = 3e8/f0_min\n", "k = 200e12\n", "n_samples = 512\n", "fs = 50e6\n", "ts = 1/fs\n", "\n", "def a(theta, M=n_rx):\n", " # a_theta is the steering vector - defined by the sensing array\n", " theta=theta/180*pi\n", " return array([exp(n*1j*pi*sin(theta)) for n in range(M)])\n", "\n", "def R_est(Xs):\n", " n = Xs.shape[1]\n", " X = matrix(Xs)\n", " Rxx = X*X.H\n", " Rxx = Rxx/n\n", " return Rxx\n", "\n", "def Rxx_expl(thetas,M=6,s2_n=0.1):\n", " \"\"\"\n", " A: MxD matrix of steering vectors\n", " M: number of elements in array\n", " D: number of targets\n", " assumed: D" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.plot(theta, PC, 'r')\n", "plt.ylabel('Amplitude')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "MQ2QDmzPtO-j" }, "source": [ "## Back-up" ] }, { "cell_type": "markdown", "metadata": { "id": "Gwkr1SB46Mfr" }, "source": [ "### imports" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "i2XrRr9eFsuA", "outputId": "6a0108c3-d3db-41ef-eef3-72ec41c79e17" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "imports done\n" ] } ], "source": [ "#imports\n", "from numpy import abs,angle,arange,array, linspace,matrix, pi,sin,cos, exp\n", "from numpy import column_stack, identity\n", "#import scipy.fftpack\n", "from scipy.fftpack import fft, fftshift, fftfreq\n", "import matplotlib.pyplot as plt\n", "\n", "print(\"imports done\")" ] }, { "cell_type": "markdown", "metadata": { "id": "_KCndjBf4kjM" }, "source": [ "### defines" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "id": "A9Cj7f-QmDhl" }, "outputs": [], "source": [ "# defines\n", "\n", "def fmcw_fft(signal,time,Fs,plot_fft=True,plot_abs_nphase=True,minf=0,maxf=1,Npeaks=1):\n", " \"\"\"main function for fmcw FFT related math\n", " Parameters:\n", " -----------\n", " signal: numpy ndarray\n", " the signal whose FFT we are interested int\n", " time: numpy ndarray\n", " time stamps at which we sampled the signal\n", " Fs: float\n", " sampling frequency\n", " plot_fft: bool\n", " if we show FFT or not\n", " plot_abs_n_phase: bool\n", " if we look at magnitude or phase\n", " minf: float\n", " zoom inside FFT (between 0 and 1.0)\n", " maxf: float\n", " zoom inside FFT (between 0 and 1.0)\n", " Returns:\n", " --------\n", " None if plot_fft==True\n", " freq or phase for which magnitude is max for FFT\n", " \"\"\"\n", " N2 = int(len(signal)/2)\n", " FFT = fft(signal) #/len(signal) #normalise amplitude\n", " FFT = FFT[range(int(len(signal)/2))]\n", " tpCount = len(signal)\n", " values = arange(int(tpCount/2))\n", " timePeriod = tpCount/Fs\n", " frequencies = linspace(0.0, Fs/(2), N2) #values/timePeriod\n", "\n", " magnitude = abs(FFT)\n", " phase = angle(FFT)\n", "\n", " #peak = max(list(magnitude))\n", " #fpeak = list(magnitude).index(peak)\n", " sorted_magnitude = sorted(magnitude,reverse = True)\n", " sorted_magnitude = sorted_magnitude[:Npeaks]\n", " fpeaks = [list(magnitude).index(peak) for peak in sorted_magnitude]\n", "\n", "\n", " if plot_fft:\n", " #either we plot the fft or we return the peak position\n", "\n", " if plot_abs_nphase:\n", " #either we plot amplitude or phase\n", " #added provision for zooming on certain section of the FFT\n", " plt.plot(frequencies[int(len(frequencies)*minf):int(len(frequencies)*maxf)],\n", " magnitude[int(len(frequencies)*minf):int(len(frequencies)*maxf)])\n", " plt.title('FFT')\n", " plt.xlabel('Freq (Hz)')\n", " plt.ylabel('X(t)')\n", " else:\n", " plt.plot(frequencies[int(len(frequencies)*minf):int(len(frequencies)*maxf)],\n", " phase[int(len(frequencies)*minf):int(len(frequencies)*maxf)])\n", " plt.title('FFT (phase)')\n", " plt.xlabel('Freq (Hz)')\n", " plt.ylabel('phase')\n", " else:\n", " if plot_abs_nphase:\n", " return [frequencies[fpeak] for fpeak in fpeaks]\n", " #return frequencies[fpeak]\n", " else:\n", " #return phase[fpeak]\n", " return [phase[fpeak] for fpeak in fpeaks]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "e6N288JXmUji", "outputId": "2569e445-973a-418a-d6c1-6d776971bfae" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Estimated Distance: 10 real distance was 10\n", "Estimated speed: 1e+02 real speed was 1e+02\n", "Estimated Distance: 10 real distance was 10\n", "Estimated speed: 5e+02 real speed was 5e+02\n", "Estimated Distance: 10 real distance was 10\n", "Estimated speed: 2e+02 real speed was 2e+02\n", "Estimated Distance: 20 real distance was 20\n", "Estimated speed: 1e+02 real speed was 1e+02\n", "Estimated Distance: 20 real distance was 20\n", "Estimated speed: 5e+02 real speed was 5e+02\n", "Estimated Distance: 20 real distance was 20\n", "Estimated speed: 2e+02 real speed was 2e+02\n" ] } ], "source": [ "start = 0\n", "\n", "#R0: distance between radar and target in meters (m)\n", "Distance=10\n", "R0 = Distance\n", "# c: speed of light\n", "c=3e8\n", "# Chirp_Slope: chirp ramp 10 MHz/us = 10e12\n", "Chirp_Slope=10e12\n", "S = Chirp_Slope\n", "# target object speed in m/s\n", "v=1\n", "#60GHz = 0.005 m\n", "#should be lambda at end of chirp, keeping 5mm to simplify\n", "fmin = 60e9 #60GHz\n", "lambda_max=0.005\n", "tof = 2*Distance/c\n", "# frequency of IF signal\n", "f_if = 2*Chirp_Slope*Distance/c\n", "N=1024\n", "step = 1/f_if/4096\n", "stop = 5/f_if\n", "\n", "stop = 5/f_if\n", "step = stop/N\n", "\n", "\n", "N=2048\n", "t = None\n", "y0, y1 = None, None\n", "Y1, Y1 = None, None\n", "#R0=33\n", "f_if0 = f_if\n", "Ts = 1/f_if0/512\n", "Fs = 1/Ts\n", "N=1024\n", "delta_2_chirps=1.2e-6\n", "\n", "def fmcw_if(t,delta_T=1e-6,vt=0,dt=10,show_phase = False):\n", " \"\"\" generates the IF signal and returns key values for debug\n", " Parameters:\n", " t: numpy array\n", " vt: float\n", " dt: float\n", " show_phase: Bool\n", " Returns:\n", " y_t: numpy array (if show_phase == False)\n", " phase: float (if show_phase == True\n", " \"\"\"\n", " phase_count = 2*(dt+vt*delta_T)*fmin/c\n", " phase = 2*pi*phase_count\n", " freq_if = Chirp_Slope*2*(dt+vt*delta_T)/c\n", " y_t = sin(2*pi*freq_if*t+phase)\n", " if show_phase:\n", " return phase\n", " else:\n", " return y_t\n", "\n", "for Distance in [10,20]:\n", " for v in [0.1e3, 0.5e3, 0.2e3]:\n", "\n", " # ensure no phase ambiguity\n", " assert v*4*pi*delta_2_chirps/lambda_max d = f0* c/ 2/s\n", " R0_est = f0*c/2/S\n", " print(f\"Estimated Distance: {R0_est:.2g} real distance was {Distance:.2g}\")\n", "\n", " #get the phase at target frequency bin for first chirp\n", " ph0 = fmcw_fft(y0,t,1/Ts,plot_fft=False,plot_abs_nphase=False)\n", " ph0=ph0[0]\n", " #get the phase at target frequency bin for second chirp\n", " ph1 = fmcw_fft(y1,t,1/Ts,plot_fft=False,plot_abs_nphase=False)\n", " ph1=ph1[0]\n", "\n", " v_est = lambda_max*(ph1-ph0)/(4*pi*delta_2_chirps)\n", " print(f\"Estimated speed: {v_est:.2g} real speed was {v:.2g}\")\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "id": "pP-M0lpFpAj3" }, "outputs": [], "source": [ "\n", "from numpy import sqrt, arccos, arctan, sign, mean, unwrap\n", "\n", "def fmcw_if_target(t,rx_antenna,tx_antenna,target,delta_T=1e-6,): #vt=0,dt=10,show_phase = False):\n", " \"\"\" generates the IF signal and returns key values for debug\n", " Parameters:\n", " t: numpy array\n", " rx_antenna: t-uple of float\n", " target: t-uple of float\n", " delta_T: float\n", " time offset between current chirp and first chirp of frame\n", " Returns:\n", " y_t: numpy array (if show_phase == False)\n", " phase: float (if show_phase == True\n", " \"\"\"\n", " dt = distance(target,tx_antenna,rx_antenna)\n", " vt = 0\n", "\n", " phase_count = 2*(dt+vt*delta_T)*fmin/c\n", " phase = 2*pi*phase_count\n", " freq_if = Chirp_Slope*2*(dt+vt*delta_T)/c\n", " y_t = sin(2*pi*freq_if*t+phase)\n", " return y_t\n", "\n", "def distance(target,tx,rx):\n", " xt,yt,zt = target\n", " xrx,yrx,zrx = rx\n", " xtx,ytx,ztx = tx\n", " d = sqrt((xt-xrx)**2+(yt-yrx)**2+(zt-zrx)**2+\\\n", " (xt-xtx)**2+(yt-ytx)**2+(zt-ztx)**2)\n", " return d\n", "\n", "def _unwrap(X0,debug=False):\n", "\n", " X1 = [X0[0]]\n", " for x in X0[1:]:\n", "\n", " if abs(X1[-1]-x)>250:\n", " x1 = x+sign(X1[-1])*sign(x)*360\n", " elif abs(X1[-1]-x)>90:\n", " #if we cross 0 only add 180\n", " if sign(X1[-1])==sign(x):\n", " x1 = x+sign(X1[-1])*sign(x)*180\n", " else:\n", " x1 = x+sign(X1[-1])*180\n", "\n", " else:\n", " x1=x\n", " if debug:\n", " print(92,x,x1,abs(X1[-1]-x))\n", " X1.append(x1)\n", " return X1" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 399 }, "id": "DuaOoKdMnUY2", "outputId": "738e1cb9-d400-40a1-fa08-0dc0b33e506d" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AoA 1 45.0\n", "AoA target_0 0.0\n", "AoA target_1 12.528807709151511\n", "AoA target_2 48.012787504183336\n", "116 5.026548245743669\n", "600000.0\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAloAAAHHCAYAAABnS/bqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAXKlJREFUeJzt3Qd4VGX2+PGTXghJaKE36R0BRUQRFEHE7q4d7K4u+l/FVZeVRUV/i2JfRdFVF1y7rhWVIgiKNEFAeu+9pJAQUuf/nDe5wyQkIQlzZ+7MfD/PM84kczNzuSBzOOe85w1zuVwuAQAAgNeFe/8lAQAAoAi0AAAAbEKgBQAAYBMCLQAAAJsQaAEAANiEQAsAAMAmBFoAAAA2IdACAACwCYEWAACATQi0AAAAbEKgBSDoTJo0ScLCwsq8/e1vfzPHtGjRotxjpk6dWu5zpW8AUJHICp8FgAA2duxYadmyZYnvde7c2f24e/fu8uCDD57wc6effrr897//LfG9UaNGSUJCgjz66KM2njGAYEOgBSBoDRkyRHr16lXu840bN5abbrqpzOdKf//pp5+WunXrlns8AJSF0iEAAIBNyGgBCFrp6ely8ODBEt/TrJQlLy/vhOfj4+PNDQC8gUALQNAaOHDgCd9zuVzux9OnT5d69eqVeP6xxx6Txx9/3CfnByD4EWgBCFoTJkyQtm3blvt879695amnnirxvdNOO80HZwYgVBBoAQhaZ555ZoXN8FpGLCvrBQDeQjM8AACATQi0AAAAbEKgBQAAYBMCLQAAAJsQaAEAANgkzOU5VAYAAABeQ0YLAADAJgRaAAAANiHQAgAAsAmBFgAAgE0ItAAAAGxCoAUAAGATNpWuhMLCQtm9e7fUrFlTwsLC/H06AACgEnSC1ZEjR6RRo0YSHu6f3BKBViVokNW0aVN/nwYAAKiGHTt2SJMmTcQfCLQqQTNZ1m9UYmKiv08HAABUQkZGhkmUWJ/j/kCgVQlWuVCDLAItAAACS5gf235ohgcAALAJgRYAAEAwBlqvv/66dO3a1V2S69Onj3z//ffu548dOyYjRoyQOnXqSEJCglx99dWyb9++Eq+xfft2GTp0qMTHx0tKSoo89NBDkp+fX+KY2bNnS48ePSQmJkZat24tkyZN8tmvEQAAhC6/Blq6AuDpp5+WJUuWyOLFi+X888+Xyy+/XFatWmWef+CBB+Sbb76RTz/9VObMmWNW/1111VXuny8oKDBBVm5ursybN08mT55sgqgxY8a4j9myZYs5ZsCAAbJs2TK5//775Y477pBp06b55dcMAABCR5hLh0w4SO3ateXZZ5+VP/zhD1KvXj354IMPzGO1du1a6dChg8yfP1/OOussk/265JJLTABWv359c8zEiRPlkUcekQMHDkh0dLR5/O2338rKlSvd73HddddJWlqaTJ06tdKrFpKSkiQ9PZ1meAAAAkSGAz6/HdOjpdmpjz76SLKyskwJUbNceXl5MnDgQPcx7du3l2bNmplAS+l9ly5d3EGWGjx4sLmwVlZMj/F8DesY6zXKkpOTY17D8wYAABBwgdaKFStM/5X2T919993yxRdfSMeOHWXv3r0mI5WcnFzieA2q9Dml955BlvW89VxFx2jwlJ2dXeY5jRs3zkTA1o1hpQAAICADrXbt2pneqYULF8o999wjN998s6xevdqv5zRq1CiTZrRuOqgUAAAg4AaWatZKVwKqnj17yq+//iovv/yyXHvttabJXXupPLNauuqwQYMG5rHeL1q0qMTrWasSPY8pvVJRv9ZabVxcXJnnpNk1vQEAAAR0RqusDZy1R0qDrqioKJk5c6b7uXXr1plxDtrDpfReS4/79+93HzNjxgwTRGn50TrG8zWsY6zXAAAACMqMlpbohgwZYhrcdXdtXWGoM6909IL2Rt1+++0ycuRIsxJRg6f77rvPBEi64lANGjTIBFTDhg2T8ePHm36s0aNHm9lbVkZK+75effVVefjhh+W2226TWbNmySeffGJWIgIAAARtoKWZqOHDh8uePXtMYKXDSzXIuvDCC83zL774ooSHh5tBpZrl0tWCr732mvvnIyIiZMqUKaa3SwOwGjVqmB6vsWPHuo9p2bKlCap0JpeWJHV211tvvWVeCwAAIKTmaDmRE+ZwVFZ2boHERUf4+zQAAPA7J3x+O65HC9X3w+p90vnxafL+wm3+PhUAAECgFVyWbE+VgkKXLN6a6u9TAQAABFrB5cixPHOfejTX36cCAAAItILLkWP55j7taFHABQAA/ItAKwgDrfRsAi0AAJyAQCsIS4dplA4BAHAEAq0gzWgVFjK1AwAAfyPQCsJAS2OsIzlFjwEAgP8QaAWRjOLSoUqnIR4AAL8j0AoSWirM9MhiMeIBAAD/I9AKElm5+eK5mVIaKw8BAPA7Aq0g68+ysPIQAAD/I9AK0kCLWVoAAPgfgVaQzdCyMB0eAAD/I9AK2tIhgRYAAP5GoBWEox1UWjY9WgAA+BuBVpAgowUAgPMQaAUJa4ZWjegIc8+qQwAA/I9AK8ia4ZvWjjf3zNECAMD/CLSCrHRoBVpswQMAgP8RaAVboFXreEbL5TkqHgAA+ByBVtCVDuPMfUGpvQ8BAIDvEWgFiYzijFa9mjESE1n028rKQwAA/ItAK8hKhzVjoyQ5Pso8ZhseAAD8i0AryEqHNWMjJTku2jxOZcQDAAB+RaAVZBmtxNhISSrOaFE6BADAvwi0goCuLrQa303pMK440KJ0CACAXxFoBYGjuQVmlaFVOqwVX1Q6TKd0CACAXxFoBVHZMCI8TOKiItzN8JQOAQDwLwKtIGuEDwsLO96jRekQAAC/ItAKohlaGmgpa9UhGS0AAPyLQCuIMloJMUWZrOOlQ3q0AADwJwKtIHB8xaGV0aJ0CACAExBoBdkMLcUcLQAAnIFAK6ia4a3SYfF4h+xcM2MLAAD4B4FWUO1zWJTRqlWc0corcJkZWwAAwD8ItIIw0NJZWtERRb+19GkBAOA/BFpBIKNU6bDELC1WHgIA4DcEWkGY0Sqx8pCGeAAA/IZAKwib4RXb8AAA4H8EWkGa0UqypsNnUzoEAMBfCLSCcI6WIqMFAID/EWgFaenQGvGQzqpDAAD8hkArwOlA0jKb4YuHlrLqEAAA/yHQCnDH8golv9B1QkYriVWHAAD4HYFWkJQNw8NEakRHuL9PjxYAACEeaI0bN07OOOMMqVmzpqSkpMgVV1wh69atK3FM//79zQBOz9vdd99d4pjt27fL0KFDJT4+3rzOQw89JPn5ReU0y+zZs6VHjx4SExMjrVu3lkmTJkkwyCguGybERJprY0lm1SEAAKEdaM2ZM0dGjBghCxYskBkzZkheXp4MGjRIsrKyShx35513yp49e9y38ePHu58rKCgwQVZubq7MmzdPJk+ebIKoMWPGuI/ZsmWLOWbAgAGybNkyuf/+++WOO+6QadOm+fTX66tGeEVGCwAA/zvePe0HU6dOLfG1BkiakVqyZIn069fP/X3NVDVo0KDM15g+fbqsXr1afvjhB6lfv750795dnnzySXnkkUfk8ccfl+joaJk4caK0bNlSnn/+efMzHTp0kLlz58qLL74ogwcPlkCWmXNiI3yJHq3sPNMw75ntAgAAIdijlZ6ebu5r165d4vvvv/++1K1bVzp37iyjRo2So0ePup+bP3++dOnSxQRZFg2eMjIyZNWqVe5jBg4cWOI19Rj9fllycnLMz3venKqsFYeqVo2i0mFufqFpmAcAACGW0fJUWFhoSnp9+/Y1AZXlhhtukObNm0ujRo3k999/N5kq7eP6/PPPzfN79+4tEWQp62t9rqJjNIDKzs6WuLi4E3rHnnjiCQnk0qE2xkeGh5kVidqnFRdd8tcIAABCKNDSXq2VK1eakp6nu+66y/1YM1cNGzaUCy64QDZt2iStWrWy5Vw0azZy5Ej31xqQNW3aVAIpo6WlQu3TOpiZa/q0GiYRaAEAEJKlw3vvvVemTJkiP/74ozRp0qTCY3v37m3uN27caO61d2vfvn0ljrG+tvq6yjsmMTHxhGyW0pWJ+pznzemrDksHWp59WqkMLQUAIPQCLW3S1iDriy++kFmzZpmG9ZPRVYNKM1uqT58+smLFCtm/f7/7GF3BqMFRx44d3cfMnDmzxOvoMfr9QFde6dBzOnw6Kw8BAAi9QEvLhe+995588MEHZpaW9lLpTfumlJYHdQWhrkLcunWrfP311zJ8+HCzIrFr167mGB0HoQHVsGHDZPny5WZkw+jRo81ra2ZK6dytzZs3y8MPPyxr166V1157TT755BN54IEHJNCVVzpUyR4rDwEAQIgFWq+//rpZaahDSTVDZd0+/vhj87yOZtCxDRpMtW/fXh588EG5+uqr5ZtvvnG/RkREhCk76r1mqG666SYTjI0dO9Z9jGbKvv32W5PF6tatmxnz8NZbbwX8aIeTZbSSmKUFAEDoNsNr6bAi2oCuQ01PRlclfvfddxUeo8Hc0qVLJdhYGa3EMjJatayNpZkODwBA6DbDw97SIT1aAAD4B4FWUDfDUzoEAMCfCLSCOKOVVFw6ZLwDAAD+QaAVNIFWVPmlQ1YdAgDgFwRaAexYXoHkFhSW36NF6RAAAL8i0AqCbJZKiC6rGZ5VhwAA+BOBVhA0wifEREp4eNgJzyfXKMpoHcsrNNkvAADgWwRaASwzp/xGePP9mEiJKA7A6NMCAMD3CLSCdMWhCgsLc28sTZ8WAAC+R6AVpDO0Sq88ZMQDAAC+R6AVwDJOktFS7HcIAID/EGgF6QytE2dpkdECAMDXCLSConRYfkYr2dpYmowWAAA+R6AVxM3wJYaWsuoQAACfI9AKgoxWYoWlQzJaAAD4C4FWiGS06NECAMD3CLRCJNBKzSKjBQCArxFoBUMzfEz5pUP3wFJ6tAAA8DkCraDPaBX1aKUzsBQAAJ8j0AqKgaUnn6NFRgsAAN8j0AryOVq1ijNaR3MLJCe/wGfnBgAACLQCVm5+oeTkF5400NLnwsKKHqeT1QIAwKcItAJUZk5R2VAlxJQfaIWHh7kb4tOZpQUAgE8RaAV42TA+OkIiIyr+bbT6tFIJtAAA8CkCrSBecWhJcu93yMpDAAB8iUArQGW4G+HLX3FoYeUhAAD+QaAVAhkt9zY8lA4BAPApAq2AD7ROntGyRjyksd8hAAA+RaAVxDO0TtiGh4wWAAA+RaAV4BmtxCqUDunRAgDAtwi0Aj6jFVX5QItVhwAA+BSBVqD3aFUwrNSSHGeNdyCjBQCALxFohcQcLXq0AADwBwKtEJqjxV6HAAD4FoFWCGS0rPEOuj9iXkHRRtQAAMB+BFoh0AyfWJzRUmS1AADwHQKtEMhoRYSHucdA0KcFAIDvEGiFQKClkovLh+lMhwcAwGcItAJQfkGhZOcVVLp06DlLKzWLjBYAAL5CoBWAtKndUtmMlnsbHnq0AADwGQKtAC4bxkaFS1REeJVKh0yHBwDAdwi0gnyGlqVWcemQVYcAAPgOgVYINMJ7Di1l1SEAAL5DoBXQgVblM1pJVumQjBYAAD5DoBXAw0qt2VhVy2jRowUAgK8QaIVK6ZCNpQEACK1Aa9y4cXLGGWdIzZo1JSUlRa644gpZt25diWOOHTsmI0aMkDp16khCQoJcffXVsm/fvhLHbN++XYYOHSrx8fHmdR566CHJzz8+AkHNnj1bevToITExMdK6dWuZNGmSBPz2OzFRVQ+0GFgKAEBoBFpz5swxQdSCBQtkxowZkpeXJ4MGDZKsrCz3MQ888IB888038umnn5rjd+/eLVdddZX7+YKCAhNk5ebmyrx582Ty5MkmiBozZoz7mC1btphjBgwYIMuWLZP7779f7rjjDpk2bZqESkYrKc4a70BGCwAAXwlzuVwucYgDBw6YjJQGVP369ZP09HSpV6+efPDBB/KHP/zBHLN27Vrp0KGDzJ8/X8466yz5/vvv5ZJLLjEBWP369c0xEydOlEceecS8XnR0tHn87bffysqVK93vdd1110laWppMnTr1pOeVkZEhSUlJ5nwSExPF30Z9vkI+XLRdHhjYVv4ysE2lfuZQZo70fOoH83jj/w2RyErO3wIAIFBlOODz21GftnohVO3atc39kiVLTJZr4MCB7mPat28vzZo1M4GW0vsuXbq4gyw1ePBgc3FXrVrlPsbzNaxjrNcI2NJhlTJax8uMGcUZMQAAYK/Kf1LbrLCw0JT0+vbtK507dzbf27t3r8lIJScnlzhWgyp9zjrGM8iynreeq+gYDcays7MlLi6uxHM5OTnmZtHjAr10qBmsmjGRciQn36w8rF2jqJQIAABCIKOlvVpa2vvoo4/8fSqmSV9TjdatadOm4syMVuWb4VWSuyGePi0AAEIm0Lr33ntlypQp8uOPP0qTJk3c32/QoIFpctdeKk+66lCfs44pvQrR+vpkx2i9tnQ2S40aNcqUMa3bjh07xIkZrarM0So54oGVhwAABH2gpX34GmR98cUXMmvWLGnZsmWJ53v27ClRUVEyc+ZM9/d0/IOOc+jTp4/5Wu9XrFgh+/fvdx+jKxg1iOrYsaP7GM/XsI6xXqM0HQGhP+95c5LMnKJAK6GqgRYrDwEACJ0eLS0X6orCr776yszSsnqqtFynmSa9v/3222XkyJGmQV4Dnvvuu88ESLriUOk4CA2ohg0bJuPHjzevMXr0aPPaGjCpu+++W1599VV5+OGH5bbbbjNB3SeffGJWIobKFjwlSocEWgAABH9G6/XXXzeluf79+0vDhg3dt48//th9zIsvvmjGN+igUh35oGXAzz//3P18RESEKTvqvQZgN910kwwfPlzGjh3rPkYzZRpUaRarW7du8vzzz8tbb71lVh4GmoJClzujVZVmeFWLHi0AAEIno1WZEV6xsbEyYcIEcytP8+bN5bvvvqvwdTSYW7p0qQQ6K8iqTqBllQ7T6dECACB0muFR9RWH0ZHhEhMZUaWfPb4NDxktAAB8gUArwFR3xaHn0FJ6tAAA8A0CrRBphFfJ8daqQ0qHAAD4AoFWCGy/Y6F0CACAbxFoBZjqbL9jSaZ0CACATxFoBWpGK6b6pcOMY3lmTAQAALAXgVaAyTiFjJbVDK9TNayADQAA2IdAK4Sa4XUkRI3oopEQlA8BALAfgVYINcOXWHlIQzwAALYj0AqhZnjP8mEqIx4AALAdgVaAZrQSq1E69BzxkE7pEAAA2xFohVhGyz1Li4wWAAC2I9AK0E2lE+jRAgDA8Qi0QmjVoWJoKQAAvkOgFWB02Kg3SofpZLQAALAdgVYAKSx0uUuH1Q604thYGgAAXyHQCiBZuflmqvuprDpMKs5opVI6BADAdgRaAdifFRURJjGR4afUo0XpEAAA+xFoBWgjfFhY2KmtOqR0CACA7Qi0Qmj7HVXLoxlee74AAIB9CLRCaFipSiwuHWqMdaS4sR4AANiDQCsQRzvEVK8RXsVGRUhcVIR5zDY8AADYi0ArxDJaJbbhyaZPCwAAOxFohdBUeEtScfmQEQ8AANiLQCvEmuEVG0sDAOAbBFoBmNFKPNVAq3g6PLO0AACwF4FWQGa0Tq10WKsGG0sDAOALBFoh2Ayf5N7vkEALAAA7EWgFEGvuVQKrDgEACAgEWiG46tC93yEZLQAAbEWgFcKrDlNZdQgAgK0ItEJw1aG7R4tVhwAA2IpAK0C4XC7JzPFS6dDaWJrSIQAAtiLQChBHcwukQHeC9kLpsFb88YyWBnAAAMAeBFoBVjaMCA9zbwp9qhktDdysLBkAAPA+Aq0AbIQPCws7pdeKjYqQmMii33pmaQEAYB8CrQCR4aVhpSf0adEQDwCAbQi0Ai2jFXNqjfCl9ztkxAMAAPYh0Aqx7XcsSdZ0eEqHAADYhkArxKbCl54OzywtAADsQ6AVYKXDUx1WWnrEQzqlQwAAbEOgFaKlQ/fG0pQOAQCwDYFWwI13iPJujxalQwAAbEOgFSCO5Hg5o2Xtd0hGCwAA2xBoBVjpMMHrc7To0QIAwC5V/tQuLCyUOXPmyM8//yzbtm2To0ePSr169eT000+XgQMHStOmTe050xDn7dKhteow1YcZrXkbD0rrlARJSYz12XsCABAQGa3s7Gx56qmnTCB18cUXy/fffy9paWkSEREhGzdulMcee0xatmxpnluwYIG9Zx2CAn2O1m/bU+WGtxbK/R8v88n7AQAQUIFW27Zt5ffff5d///vfkpGRIfPnz5f//e9/8t5778l3330n27dvl02bNsm5554r1113nTnuZH766Se59NJLpVGjRmb/vi+//LLE87fccov5vuftoosuKnHM4cOH5cYbb5TExERJTk6W22+/XTIzM0sco+et5xUbG2sCxfHjx0ugBlpeH++QnSsul0vstnR7mrlfsyfD9vcCAMApKv2pPX36dOnQoUOFxzRv3lxGjRolf/3rX03gdTJZWVnSrVs3ue222+Sqq64q8xgNrP7zn/+4v46JiSnxvAZZe/bskRkzZkheXp7ceuutctddd8kHH3xgntegcNCgQaasOXHiRFmxYoV5Pw3K9LiQLR0WZ7TyClxyNLdAasR4J4Arz4Z9R9ylSv21eOvXAQCAk1X609UzyNIgSjNDmmHypJmRHTt2SLNmzaRVq1Ynfc0hQ4aYW0U0sGrQoEGZz61Zs0amTp0qv/76q/Tq1ct875VXXjHly+eee85kyt5//33Jzc2Vd955R6Kjo6VTp06ybNkyeeGFFwIm0NLr6u3SYVxUhERHhEtuQaEZ8WB3oLW+ONBSOw5nS8dGBFoAgOBXrVWH2ot14MCBE76vZTx9zptmz54tKSkp0q5dO7nnnnvk0KFD7ue0fKmZKSvIUpq5Cg8Pl4ULF7qP6devnwmyLIMHD5Z169ZJampqme+Zk5NjMmGeN386llco+YVF5T1vZYI0SD7ep5Vre6C4Yd/xcu6O1KO2vh8AAAEdaOkHZ+lsltLeKO2D8hYtG7777rsyc+ZMeeaZZ8xqR82AFRQUmOf37t1rgjBPkZGRUrt2bfOcdUz9+vVLHGN9bR1T2rhx4yQpKcl98/dKSqtsGB4mUiM6wmuva608TLe5IX5vxjH3HDC14zCBFgAgNFSpXjRy5Ehzr0HWP/7xD4mPj3c/p8GPZpG6d+/utZPTpnpLly5dpGvXrqYkqVmuCy64QOyifWbWr1VpRsufwVaGNUMrJrLMAPdU+7TsHvGw3iObpQi0AAChokqB1tKlS90ZLW0q9yzH6WNtbNdGeLucdtppUrduXTNOQgMt7d3av39/iWPy8/NNCdPq69L7ffv2lTjG+rq83i/tCyvddB9MjfCWJGs6vM1DS61GeI0RdYHjjtRsW98PAICADLR+/PFHc68r+15++WUzUsGXdu7caXq0GjZsaL7u06ePmeW1ZMkS6dmzp/nerFmzzFDV3r17u4959NFHzYrEqKiiQEVXKGrPV61atSQQeLsR3lLLR7O0rEb405smy2/b08hoAQBCRrV6tHTcgjeCLO3p0hWAelNbtmwxj3VVoz730EMPmeGnW7duNX1al19+ubRu3do0s1srIbWP684775RFixbJL7/8Ivfee68pOeqKQ3XDDTeYbJvO11q1apV8/PHHJkj0LA0Gzgwt72a0jm/D45vS4QUd6rub4X0xuwsAgIAJtO6++26TUaoMDWZ0rMLJLF682GzdozelwY8+HjNmjJk4r4NGL7vsMjMsVQMlzVrp1j+eZT19n/bt25tSoo51OOecc+TNN990P6/N7DoDTIM4/fkHH3zQvH6gjHYoWTr0bkYruXhoqZ2rDjWg2ri/KNDq366eKR/qKsoDmTm2vScAAE5R6U9u3c9QZ1D17dvXTHPXkQqaNdJVhjomYfXq1TJ37lz56KOPzPc9g53y9O/fv8LMxrRp0076GrrC0BpOWh5totcALVDZVTpMirO/dLg7/Zhk5uRLZHiYtEmpKQ0TY833dJZWSk32PAQABLdKf3I/+eSTMmLECHn77bfltddeM4GVp5o1a5oZVhpgld4mB85shrdKhzqw1O5G+BZ1a0h0ZLg0rR1vAq2dqUelZ/PA6JEDAKC6qpQi0VV62liuN81iaS+VbjatKwF17II3Rw/gOGsGlddLh3H2lw6tQaVt6yeYew20Fm45LNsP0RAPAAh+VWqG19lZOj5B6Yo9Hedw1llnmQZ1DbI08LrwwgvtOteQZZUOE7zeo2V/6dBacahlQ9W0VtHsNabDAwBCQZUCrcmTJ8sZZ5whK1euPOG5N954Qzp37mwmsyPwSod2rQJcX9wI37Z+caBVO87ca48WAADBrkqBlgZYOqFdG+F1mxqdV6VZLO3Nevjhh81Gzt9//719Zxuijo93sGfVYW5+oVkJaMuKw+KMllU6bFabjBYAIHRUKdDS2Vm696A1i6pHjx4m8NKyoY5iCKSRCYHErlWHum+irga0azr8rrRsycotkKiIMNMMb/Voqd1p2ZJX4P3gDgCAgB9Yqn1ZGmBpcKVZrdGjR0vz5s29f3awtXSoAbKdfVpWI3zLujUkKqLoj1q9hBiz+rDQJbIn7ZjX3xMAgIAOtD788EPp2LGjCbDWrFkj99xzjwwaNEgeeOABOXaMD85AymjZPUvL3Qhf3J+lwsPDpGmt4j4tyocAgCBXpUDr6quvNtvdPP7442ZLHN0vcPz48WYPxO+++86sQpw/f759ZyuhHmh5N6Nl93R4a+udtsUrDi1W+ZA9DwEAwa5KKZK9e/fK0qVLpU2bNiW+f/bZZ5s9Cv/2t7/JeeedJ7m59s1lCjXH8gokt7iXyY6MVnKcfUNLN+wv2QhvsUY8bCfQAgAEuSp9cus2NuHhZSfB4uLiTIO8Zr3g/WyWzoJNiI60MaPl3UCrsNDl7tHyLB2WGPGQyogHAEBwq1LpsLwgy1O/fv1O5XxQTiO8Blna3+Rtx2dp5Xp9xWF2XoFER4RLizpFGSyLe8QDGS0AQJCr1qpDBEcjvGfpMN3LGS2rEf60ejUksnjFoaWJNR2eQAsAEOQItEK4EV7ZNd5hfTllQ89m+ENZuZJVvI8jAADBiEArYGZo2ZPRSrJ6tLxcOtxgTYRPSTjxPeOi3FPud9KnBQAIYgRaDuer0qG3M1ob9pef0VLNivu2KB8CAIIZgZbDZdg0Fd7O0qGuONzo3kz6xIyWYsQDACAUEGg5XGaOvRmtWjaUDrUcaK04tFYYluYeWsp0eABAECPQCpDSYYJtPVpFGa1jeYVmOKrdKw5PnA5PjxYAIHgRaAVIM3yiTaXDmjGRElE8nyvdS9Ph17snwpfdn6Ws/Q53ktECAAQxAq0Qb4YPCwvz+sbS1kT48vqzPDNa2qPlcrm88r4AADgNgVaIB1olVx7merV0WN6KQ9U4uSijdTS3QA5nsTcmACA4EWgFyhytGHtKh559WqleyGgVlFhxWH6gFRsVIQ0SY81j9jwEAAQrAi2H82VGK90LKw91LlZOfqHERJa/4rD05tKMeAAABCsCLYfLsHkLnhIjHryQ0bLKhq3qJbib7MtjzdJiaCkAIFgRaIX4FjyepcM0L6w6tCbCV9QIb2lSnPFi5SEAIFgRaDlYbn6hKcPZOd5BJcd5P6NVUSO8xSotMksLABCsCLQCIJtl58BSz214vNGjtd492uHkgZY1S4seLQBAsCLQCoBG+BrRESftd3LCfoe64nDTgcqXDq1ZWrvTss3PAgAQbAi0AmLFoX1lQ2UNLD3V8Q7bDmWZcmdsVLi70b0i9RNjzX6I+YUu2ZNO+RAAEHwItEK8EV4lF686TD/FgaVWI3zrlAQJr0QGTrN0jYvLh/RpAQCCEYFWQIx2sDfQquWlVYcbihvh26acvD/L0sQdaNGnBQAIPgRaDpaZ45vSobXqULfDyckvOOVG+MqsOCzdp7WDEQ8AgCBEoOVgviod6uuHFVf60k8hq+Ue7ZBy8kb4E0c8EGgBAIIPgVaIb7+jtJ/KaohPr2ZDfH5BoWw+kFXp0Q4Wq2meEQ8AgGBEoBUQGS17S4ee+x1Wt09r2+GjkltQKHFREe6+q8qw9jtkY2kAQDAi0AqEjFaMvRktlVS88jA1K/eUGuEru+KwdEbrwJEcOZZX/f4wAACciEDLwXxVOvRGRut4I3xC1d43PsodSLLnIQAg2BBoOViGD0uH1oiH6vZoWY3wVenPUmFhYe7NpenTAgAEGwItB/NpRqu4dJhWzf0ON7j3OKxaRstzz0OGlgIAgg2BloP5shneWnVYnf0O83TF4cHi0mEVhpVaGPEAAAhWBFoO5tuMVvV7tHSPw7wCl8RHR0jj5MqvOLQwtBQAEKwItAIg0Er0xXiHU+jRcjfCV3HFYekRD9spHQIAggyBlkNpOS67eNyBb1YdFo93qMbG0u6J8FVshC894mHn4aPicrmq9RoAADgRgZZDZRZns1SCDwKtJKt0WI2M1qk0wqsmxYHWkZz8U9oCCAAApyHQcnjZUCetR0WE+2yOVnUCnQ37Ty2jFRcdIfVqxpjHjHgAAAQTvwZaP/30k1x66aXSqFEjM0/pyy+/LPG8lpHGjBkjDRs2lLi4OBk4cKBs2LChxDGHDx+WG2+8URITEyU5OVluv/12ycwsyrBYfv/9dzn33HMlNjZWmjZtKuPHj5fAmaFlfzZL1Soe75CZk2/KlpWlx245WPU9DktjxAMAIBj5NdDKysqSbt26yYQJE8p8XgOif/3rXzJx4kRZuHCh1KhRQwYPHizHjh1zH6NB1qpVq2TGjBkyZcoUE7zddddd7uczMjJk0KBB0rx5c1myZIk8++yz8vjjj8ubb74pTubLFYcqsTijVdWs1taDRSsOE2IipVFSbLXf3z3igZWHAIAg4ptP8XIMGTLE3Mqi2ayXXnpJRo8eLZdffrn53rvvviv169c3ma/rrrtO1qxZI1OnTpVff/1VevXqZY555ZVX5OKLL5bnnnvOZMref/99yc3NlXfeeUeio6OlU6dOsmzZMnnhhRdKBGROo5klX83QUhHhYZIYGykZx/JNn1bdhKJSXmVXHOoeh5qVrC73iAdKhwCAIOLYHq0tW7bI3r17TbnQkpSUJL1795b58+ebr/Vey4VWkKX0+PDwcJMBs47p16+fCbIsmhVbt26dpKamlvneOTk5JhPmefPfsFLfxcLWdPj0KkyHP771TvUa4UuvPKRHCwAQTBwbaGmQpTSD5Um/tp7T+5SUlBLPR0ZGSu3atUscU9ZreL5HaePGjTNBnXXTvq5gLx2WGFpahZWH7kb4akyE99SkeJbWzlR6tAAAwcOxgZY/jRo1StLT0923HTt2+C+jFeOb0qHnNjypVQi03MNKTzGjZfVo7UrNlsJCZmkBAIKDYwOtBg0amPt9+/aV+L5+bT2n9/v37y/xfH5+vlmJ6HlMWa/h+R6lxcTEmFWMnrfQyGgVbyxdyaGlufmFphn+VFccqoZJcRIZHia5BYWy78jxxQ4AAAQyxwZaLVu2NIHQzJkz3d/TXintverTp4/5Wu/T0tLMakLLrFmzpLCw0PRyWcfoSsS8vONZGl2h2K5dO6lVq5Y4lTal+7IZXtWytuGp5KpDHeuQX+iSmjGR0vAUVhxazfiNivdJ3H6IPi0AQHDwa6Cl8650BaDerAZ4fbx9+3azgu3++++Xp556Sr7++mtZsWKFDB8+3KwkvOKKK8zxHTp0kIsuukjuvPNOWbRokfzyyy9y7733mhWJepy64YYbTCO8ztfSMRAff/yxvPzyyzJy5EhxMr80w8dVrUfLaoRvXf/UVhyW3vNwB31aAIAg4dfxDosXL5YBAwa4v7aCn5tvvlkmTZokDz/8sJm1pWMYNHN1zjnnmHEOOnjUouMbNLi64IILzGrDq6++2szesmgz+/Tp02XEiBHSs2dPqVu3rhmC6uTRDv4qHSZZpcNKZrQ2WCsOT7ER3rNP6xc5xIgHAEDQ8Gug1b9//wo3EdYsydixY82tPLrC8IMPPqjwfbp27So///yzBJLjGa0oP2S0cn3aCF96z0MCLQBAsHBsj1aoszJaOkTU1+MdKtujtb54tMOpNsKfMLSU6fAAgCBBoOX40mGUzwOt1EpktHLyC2RbcdO6twIt9zY87HcIAAgSBFoO5Y9m+KQ4a7zDyTNamw9kSYGuOIyNlPqJlduup7IbS+t4h2N5BV55TQAA/IlAy4E0gMnKLfB5oGWNd9BsWn5BYYXHbtif6c5meWPFoapdI1rioyNE2/Z2pZHVAgAEPgItB8osLhv6unRoTYb3nON10hWHXmqEVxqwWXse0hAPAAgGBFoOlFFcNoyJDJfoSN/9FkVGhJvho5VZeWjN0DrVPQ7Lb4gnowUACHwEWg6UmeP7RnhLkrWx9ElWHm4oHu3grUb40kNLd5LRAgAEAQItB/LHaIcTRjxU0BCvjepbD2V5vXSorNLhdgItAEAQINByIH+sOLQkF688rGjEg644LHQV9XTVq+mdFYcWZmkBAIIJgZaDM1oJfgi03KXDCjJaG4oHlbZJ8c4eh56YpQUACCYEWk7OaMX4vkerViV6tNyN8F7uz1JNimdp6XT6yk6oBwDAqQi0HMgareDP0mF6BaVDa49Db/dnqRoxkVKnRtE5MOIBABDoCLQcyB/b75Ruhq8oo3V8hpb3M1qefVo76dMCAAQ4Ai0H8mczvDW0tLweLV1xuK0409TGhoxWiYZ4+rQAAAGOQMvRGS1/jHeIrjCjtXF/ptkiRzNf9RK8u+Kw9J6HjHgAAAQ6Ai0HZ7QS/Vk6LKdHy1px2DbFe3sclsaIBwBAsCDQciC/ZrROUjq0GuHtKhuWHPFAoAUACGwEWg7k32b4aPd+iwU6ldTHjfCe0+F3pmZLYRnnAABAoCDQciAnNMNrH5Z1Hp427Lc/o9UwOVbCw0Ry8gvlQGaObe8DAIDdCLQcyJ+lw+jIcKkRHVFm+TA7t8DdoG5nRisqIlwaJRc1xFM+BAAEMgIth9FSWWau/0qHFa083HSgaMVh7RrRUtemFYely4c0xAMAAhmBlsNokKXBjL8yWiVnaeWWvfVOin1lQ0vT2sUjHg4xSwsAELgItBwms7hsGB0RLrFRRSU8/414yCtn6x37yoYWMloAgGBAoOUw/uzPOtksreMrDu3PaDWr49sRD3kFheYGAIA3EWg5jLXSL8GvgVbZPVrri4eVtvFBRquJx4gHu2mT/8AX5sgl/5orufkEWwAA7yHQchhHZLTKGFp6NDffvfegT0qHxT1au9OzbQ9+Zq3dL9sOHZV1+47I1FV7bX0vAEBoIdByGB0UqmrG+GfFoWfpMN0jo6V7HKo6NaLNqkO76T6KsVHhZmHA7jR7s1pTft/tfvzuvK22vhcAILQQaDmMMzJa0Sf0aPli6x1Puo+iLxriM3PyTUar6D1FFm9LldW7M2x7PwBAaCHQchh/br9jSbKa4T0yWr7YeqfczaWLS5Z2mLlmn5lA37JuDbm4S0Pzvf8uIKsFAPAOAi2H8ef2OxX1aLlnaPky0KpVPEvLxpWH3ywvKhte0rWh3NynhXn8xdJdkl7OptoAAFQFgZZDM1qJTlh1WEbpsK0PhpWekNGyqXSoPWhz1h8wjy/p2kjOaFFL2jeoKcfyCuXTJTtseU8AQGgh0HJsRst/pcNaHs3wuiVQVk6+7CpuSPdH6XCnTRmt6av2Sl6By0y6b9egpukLG16c1XpvwTbzawcA4FQQaDmME5rhE4tLhxpnHMnJlw3FKw51f8NaPlhxaLGa4e0qHU75fY87m2W54vRG5tpvPXRUftpQlO0CAKC6CLQcxgnN8Lr1T1zx9j/aq+TLifBlzdJKPZpnVgd6U2pWrvyy8aB5fEm3oiZ4FR8dKX/o2cQ8/u/8bV59TwBA6CHQcuocLT9mtEpsw5Od685o+bJsaAWbVhnT21vx6GDS/EKXdGyYKK3qlQwgh53V3NzPWrffZ1sAAQCCE4GWwzihdKiSPFYeHl9x6NuMVskRD0ftWW3okc2ynFYvQc5tU9cMS9VeLQAAqotAy2Gc0AzvmdFKPZorG/b5J6NlV5/WgSM5smDzIfP4ki7H+7M8WU3xHy/eIcfyCrz23gCA0EKg5SAul8vdi+TP8Q6e0+F1taF7xWGK7wOtJsV9Wt7cXPr7lXtMo3+3JknSrE5RIFfa+e1TpHFynMnoWdkvAACqikDLQY7mFpgAwAkZrVo1it5/8dZUc59SM8Y9Md6XmtlQOpyy/MTVhqVFhIfJTcW9Wu/O32aCYAAAqopAy4H9WZHhYWZDZX9KKs5oLd562G9lQ+Xt/Q73ph+TX7cV/ZqGdj2xP8vTtWc0lejIcFmxK12W7UjzyvsDAEILgZYD+7MSYiPN8Ewn9GhlFAd//miEL73foTeySt+u2GOa3Hs1ryWNkovKkuWpXSNaLi3OejHqAQBQHQRaDpLhkBWHnvsdWvyV0dI+KY05s/MK5GDm8S2BqmvK78f3NqyM4X2au4ebHsrMOeX3BwCEFgItJ644jPFvf5ZnRsui29T4g5buGibGeqV8qH1eS7enmcDt4i6VC7S6NU02TfO5BYXy0a/sfwgAqBoCLQdxygwtzx4tSxs/ZbRUEy81xGvZUPVuWVtSioO3yhhWPOrhg4XbpYD9DwEAVUCg5SBO2H6nrIxW/cQY9wBTvzbEn2KgdbxsWP5qw7JomVEn1OuYi5lr9p3SOQAAQguBlgNLh/6eoaVqxUf7vT/rxBEP1Z+ltfVglqzclWHGNgzp3KDKez9ee0Yz96gHAACCItB6/PHHzeo7z1v79u3dzx87dkxGjBghderUkYSEBLn66qtl376SGYft27fL0KFDJT4+XlJSUuShhx6S/HzvblAcjKVDz4xWGz8MKi1rc+lT6dGysllnt6ojdRJiqvzzN/ZuZnq75m48KJsOFE3KBwAgoAMt1alTJ9mzZ4/7NnfuXPdzDzzwgHzzzTfy6aefypw5c2T37t1y1VVXuZ8vKCgwQVZubq7MmzdPJk+eLJMmTZIxY8aIEzll+x0rixMTWfTHo62fRjuUHvFwKtvw6KpBZY1rqM45XNC+vnnMqAcAQNAEWpGRkdKgQQP3rW7duub76enp8vbbb8sLL7wg559/vvTs2VP+85//mIBqwYIF5pjp06fL6tWr5b333pPu3bvLkCFD5Mknn5QJEyaY4MtpnJTRUimJRZmfDg0T/XoeVo/WnvRjkl9QWOWf37DviKzde0SiIsJkcKeqlQ3LGvXwvyU7Jat4qyQAAAI60NqwYYM0atRITjvtNLnxxhtNKVAtWbJE8vLyZODAge5jtazYrFkzmT9/vvla77t06SL16xdlItTgwYMlIyNDVq1aJc6do+X/jJYad2VXGT20g3RtkuTX89Dtf3TMg67402Crqr4pzmad26beKW0jdE7rutKybg05kpMvXyzdVe3XAQCEDkcHWr179zalvqlTp8rrr78uW7ZskXPPPVeOHDkie/fulejoaElOTi7xMxpU6XNK7z2DLOt567ny5OTkmGDM8+bb0qEzMlrntKkrd5x7mt+n1IeHh0mTWsV9WlUsH+o0+aoOKa3oPIYV73+o5UP2PwQABHSgpaW+P/7xj9K1a1eTifruu+8kLS1NPvnkE1vfd9y4cZKUlOS+NW3aVEKxdOgkVvmwqn1aa/Yckc0HskxG7MKOJYPu6ri6ZxOJi4qQdfuOyMItRXsmAgAQkIFWaZq9atu2rWzcuNH0a2mflQZennTVoT6n9L70KkTra+uYsowaNcr0gFm3HTt8MxH8SI5zmuGdxj3ioYorD61s1oB29bxyXXWe2BWnNzaPaYoHAARVoJWZmSmbNm2Shg0bmub3qKgomTlzpvv5devWmR6uPn36mK/1fsWKFbJ//373MTNmzJDExETp2LFjue8TExNjjvG8+UJmcUbLCXO0nMY94qEKs7SKyoZ7qjWktDJN8dNW7ZV9GVXvGQMAhA5HB1p//etfzdiGrVu3mtWEV155pURERMj1119vSnq33367jBw5Un788UfTHH/rrbea4Oqss84yPz9o0CATUA0bNkyWL18u06ZNk9GjR5vZWxpMOYkGBU6aDB8MpcPfd6ab47XUd0GHFK+di67CPLNFbckvdJlteQAACMhAa+fOnSaoateunVxzzTVmMKmObqhXr555/sUXX5RLLrnEDCrt16+fKQd+/vnn7p/XoGzKlCnmXgOwm266SYYPHy5jx44VpzmWV2g+uBU9WuXP0tpZhdKhVTY8v0OKxEd795oOK85qfbBou+TmV33kBAAgNDj6E/2jjz6q8PnY2FgzE0tv5WnevLlponc6a8VheJhIfHSEv0/HsYHWwcxcOZqbf9LAqbDQJd+e4pDSiug8Lh07sf9IjikhXtrN++8BAAh8js5ohRJrhlZCTKTfxyk4kTahW71rO1NP3qe1dEeq7E4/Zq5n/3ZFGVBv0lWM159ZtP8hTfEAgPIQaDmEk7bfcSr3VjyHTl4+/GZ5UTZLRzrodkJ2uKF3M4kMD5NFWw/Lmj2+mbUGAAgsBFoOwQwt74140Any363Y45UhpRWpnxgrgzsXjQl5l6wWAKAMBFoOC7QSyWidNKN1shEPv249bHqntNSo2+7YaXjxpPgvl+6S9OyirKSTs6avz94k/cb/KH//YgWT7QHABwi0HMJp2+84UVNrG56TZLS+Wb7b3bCuvVR2OrNlbWlXv6Zk5xXIZ0t2ihMdzsqV56evk7OfniXPTF1rRl7oWIqXZ26QYPbzhgPSacxUeWPOJn+fCoAQRqDlEJQOT66JO6NVfqCVX1AoU1cW7WPpi5WAunDBGvXw3oJtZrWjU+xJz5ax36yWvk/PkldmbTR/xlrVq+EeuPrSDxvcQWmwyckvkEe/WClZuQUyfto6WbEz3d+nBCBE8anuEDTDV6FH6/BRU/Yqa3Xm/M2H5FBWrtSuES1nt6rjk/O68vTG8sz3a2XLwSyZu/Gg9Gtrb7nyZLYezJI3ftpkMmx5BUWBX+fGiXLvgNYyqGMDszl2dES4vDV3i/z10+WmJNu9acnN2QPdO3O3uofbas+e/jq/ue8c2zOcAFAaf+s4bLwDGa3yNU4uKh1qliL1aNn9UFOKVxte1LmBREb45o93jZhIs9m0enf+VvGXtXsz5P99uFTOf362fLhohwmytLQ5+bYz5Zt7z5GLOjc0QZYadXEHOb99iuTkF8qd7y422a9gsT/jmLw6q6gsOnpoB6lTI9psAv5K8fcAwJcItByC7XdOTsc01E+MKXcrHp3QPnXVXttXG5bFKh/OXLu/wtKmHZZuT5U7Ji+Wi176Wb5evlu0eqmzwz69u4988qc+cl7beidk/yLCw+Tl67qb/rIDR3LMz+sg2GCgpUINxrs1TZbb+raUJ6/obL7/2uxNlBAB+ByBlkPQDF+1PQ/LCmZ+2XjQrPyrVzNGerf0TdnQ0qpegpzbpq7oQr73fbD/oZZO9dd7w78XyJWvzZMf1uwTjaWGdmkoU+47Rybdeqac0aJ2ha+hQf1bN/cyGZ9VuzNk5MfLHdVjVh3Ld6S5FyU8dmlHk8G7uEtDc12sEiJbJgHwJQIth6AZ/tRnaVmN3Rd3bmAyNr42rHjUw8e/bpdjeQW2vIcGQjNW7zPB1Y1vLZR5mw6Zoal/7NlEfhh5nky4sYd0bpxU6dfT/qyJw3qani3NBr4wY70EKg0+n/hmlXl81emNpUezWu7nxl7eiRIiAL8g0HKIIzlFGS3maFV25WHJniINbKav3mce+2vfwQs61Dd9ZNo/NqV4n0Vv0dWUXy3bJUNe/tn0VC3bkSYxkeFyc5/mMufhAfLsH7uZrFp1aOZr3FVdzONXf9woXyx15piKk9Gy6W/b08xeoQ9f1L7Ec3USYighAvAL0icOkUlGq2qztEqVDuesPyCZOfnSMCm2RCbDlzSLduNZzWT81HXy3/lb5Q/FDfIny1Bl5uZLRnaeZGTnS8axPFP+NF8fy3c//nHdftlWvPWQ7t+oPWHaf6RlUm/QZv6NBzLNQNNHPlshzWrXkJ7N/XMdq0P7y8Z9t9Y8HjGgtTRIij3hGKuE+O2KPaxCBOAzfKo7BM3wp1Y6tDJI+kFqrazzh2t7NZWXZmyQ5TvT5aUf1ktEWJhH8FQUSHl+rb15lW2LqhUfZYKr4X1aSFK89/+cPDSonWzan2kyg3/672L5ckRfaVLcE+d0E2dvkr0Zx6RJrTi5/ZyW5R6nJcQFmw+5S4gPDmrn0/MEEHoItByCHq2qbcOzOy3bNDdrFik7t0BmrikqG17ip7KhZ4lKVzx+vnSXGQhaWdojlRgXJUlxkeZeS8hJeq9fx0aZAPOy7o0kPtq+Px8aoL54bXf5w8T5ZpNsXYn42T1nmwyak+1MPSpv/LTZPH704g4VbiJulRD//P5vpoSouwdUpacNAKrK2X+DhgjtL8otKFoJlUCgddKNnKMiwsyMKM1gaE/UrLX75WhugTStHSfdmvj/Q3PkoLZmSx5VFCxp4BTp8TjqeFBV/Lii4MCXdCaYrkS8/NVfZO3eI3L/R0vljWG9/LK4oLLGfb/WzAM767TaZn7ayZQuIX59LyVEAPbhU91B2Sxdnp9gY8YiGOgHvgZXWw8dle2HjprH1mrDS7o2KnNavK9pue31m3pKoNJr+u/hPeXaNxfID2v2y/ipa82AUydauPmQfPv7HtE4cMwlnSr9+2+VEDWYpIQIwE78M85BM7Q0yPJnf1GglQ+1T0sb4LVR3B9DSoPZ6c1qybN/6Goea1nuk8U7xGm0dPzEN6vN4+vPbCYdGyVW+mdLr0JcuYtViADsQaDlAPRnVS/Q2nn4qPywep8pG51Wt4Z0bFj5D1qc3OXdG8v/O7+1efzoFytk0ZbD4iQa/K3ek2HKsiMvbFvln2eQacWbcts1Cw4INQRaDsCKw+pNh9dteKb8bpUNGzqibBhs7h/YVi7u0sD0xOlKRC3XOoGu3Hxu2jrz+C8D25oMVXVYg0ytEmKo23YoS8Z+s1p6PfmD9H16lsxaW7TIBED1EWg5ANvvVI02vSvNZvy0/qAjVhsGKy1lP//H7tKlcZIZxHr75F9NkONvr8zcIIeycqVVvRoyvHifyeqghFg0UX/uhoNyx+Rfpf9zs+WdX7bIkZx8c31vm7RYHv96Fdkt4BQQaDkApcPqzdJavy/TrNZsWz9B2tav6e/TClpx0RHy7+G9zIbeG/Znyn0fLDWT6v1l04FM+c8vW83jf1zSUaIiTu2vsVAtIeqQ1/cXbpNBL/4kN7290Cx8cBVvSP7OLb3k1r4tzHGT5m01Wz5t3H/E36cMBCQ+2R3AyhBQOqxa6dByaVeyWXbTSetvDT9D/vjGPDOF/5/frZUxl3b0y7n837drJL/QJee3T5H+7VK88pq+XoWoc+D+u2Cb2afyrNPqmCn8vhrxobsq6Ht/tGi72X1A1YiOMDsZDD+7hXsrp/Pb15d+beqZ4FPnql3yylx57NJOct0ZTSnTA1VAoOUAZLSqJjk+ygzR1BWHirKhb3RpkiQvXNPdDPvU8lLrlAS5oXczn56DrjDVuWkaoIwe6r2RE74aZJqVky9vzNkkb/68WY7lFWXOXpm10QysPb1ZsvRpVUf6nFZHujdLlpjICK+WBxdsPiyT5m0xm5JbuxFodvjms1vIH3s1KXOf1QHtU+T7v5wrIz9ZLnM3HpRRn6+Qn9YfkKev6mrL7gRAMOKT3QFohq8a/de0rjzUf2V3apQoLevW8PcphQwtsz14YVt5fsZ6GfPVSmlRN17OblXXJ++dV1AoT04pGudwy9kt5LRqbqLtj0GmWpb835Kd8uz0dXLgSI753pktakvjWnEyf9MhM3x34ZbD5vaSbJDYqHCT5dKgS4Ovrk2Sq1Ui1d4q3YxcS62arbOc07quKQ1qRvBkw2hTEmPl3dvOlH//vFmenbZOvl+5V5bvSJOXrz/dbEgOoGIEWg5AM3zVtUlJMIHWZWSzfO7e81ubXq2vl++We977zeyJ6Itg993522TzgSyzSvC+C9rY8h6eJcRXZ22QkV4oIf6y8aA89e0a8+dVNa8TL6OGdJDBneqbfzRotmnLwSyZv/mQCbr0/Q9m5sovGw+Zm4qPjjBBjZXx0n9gRFYQeGlp8r0F2+TDRdvNIgYVFxUhV/VobILUNlXsadRFEX86r5V5///34VIzMPjaN+bLfee3kfvOb13huQChLsyl/5ejQhkZGZKUlCTp6emSmOj9WU13/3eJTF21V568vJMM61PUgIqT72/347oDpl/kVJuhIdXKlFz35gJZtiPNzDD74M6zTB+XXQ5l5pgVcZr9HXdVFzOg1C7frdhjSoia6flqRN9qlxC1aX/cd2tMk7n1D6m/XNDGbApeUaZM/0reuD+zROBlBUuWmjGRcmbLosBLe7x0hpy2TS3ZlmqyV/r3iWbRrEn/N5/dXK7t1cwr5T4t2T/21Sr53287zde9mteSl67rHjAbkCO0ZNj8+V0ZBFoO+I266a2Fpv/hpWu7yxWnN/b66wN22H/kmFzx6i+yO/2Yybhopuv2c1p6tbfIogNT31+43QQU39x3ju17L454/zdTQmzfoGaVS4ipWbny8swNJqOkTft6rsPOai7/74I2UrtGdJXPpbDQJev2HZF5m4oCr4VbDrnbDSy6j2a9mjEmQLPo3o+3nN1SBnZIsSXjpCXJR79YaQIvDSK1b2souzPAYTIItAKD3b9Rl786V5bvTJe3b+4lF3So7/XXB+yiWZuHPl0uv21Pc5fF/jG0o1zQIcVrK9NW79YVbz+bBu6P7zpLep9WR+ymGTQde6CzpHQ6fmVKiDpN/b/zt8m/Zm5wr+bTIOdvQzqYhQPeopkqvSbzNx80gZdO7M/KLZpzFRMZLld0b2wa3KuyJVF16QDb+z5aanq2lGaYdTVqPHu2wiEyCLQCg92/Uec/N1s2H8yST/7Ux5QDgECif4V8uWyXjPturewvbvQ+r209M+PqVAMMfe3r/73ArJjTbMmEG3qIr1S2hKjnOG3VXhn3/VrZVjw5v0PDRLMqsm9r+xcK6EyzFbvSzU4J57apV62s2akuUnhxxnp5fc4mM4dLh8j+6/rTpVMj76/aBKqKQCtA2P0b1eupH+RgZo5ZRq1/QQOBSEtIE37cKG//vMUMktURDLqyTRvXyxodUBnfr9gj97z/m8nUzHzwPJ/3AZ2shPj7zjR5asoaWbS1aB9ILd89NKidXN2zie3lTaeZt/GgPPDJMtmXkWPGVTwypL3c1rcFM7fgVwRaAcLu36h2o783GyP//PAA94bJQKDSFXRPTVktM9cWNYHXTYiWhy9qL3/o0cSsXqtKw/3AF+bIztTsSpfvfFVC3JOeLc9OXSefL91lvtZA8K5+p5mVeTrjLVQdzsqVhz/7XX5YU7RH4oB29eTZP3aTutXYi1I/mrQkqj1vev2t+8NZOWYBjI7jqJ9o3wIMBIcMAq3AYOdvlG730Xb09+bx8jGDGAKIoKHDRZ/8ZrUpi6tuTZLk8cs6yenNalXq5zU7pnObGiTGyqy/nue3vh/PEuIHd/Q24xo8B45eeXpjeWhwO2mUXLQHZ6jTjxSdPK8jLfTvNw2yXry2mxlLkZadZ4KxSt2O5la4HZLG7APapcg1ZzQ1uwQE4+pj7cfTX6fTsoLaj/jO3K2yane6PHJRe0cnCDIItAKDnb9R+i/mnk/9YB5v+ufFIVduQHDTD0qdRv6vmRvdk/yv7tFEHrmonRmEWZ696cfk/Odny9HcAnn5uu5yeXf/rsa1SoiezmhRS0YP7Sjdmib77bycbO3eDDNzS/ckVRorVOfTRoe31qkRI7VqREntGjFSOz5KdqVly69bU93HaDCnWwhd06uJ1wfZ+tL+jGPy2/ZUWbo9zdx+35VmBln/dVBb+WPPplXKCNtl4eZD8vcvVsimA0X/gKoVHyUTbuzhs8HFVUWgFSDs/I3aejDLzAfSvcZWjb3Iq68NOGkUxPip6+SzJUWzl/TPu447uLVvyzJHJ4z8eJkpy+l09M/u7uP3f9F7lhB125pRQ9rLRZ0b+P28nE7Lv099u1reW7DdfK2XKzkuSmrViDaDZ2vFR0udhKJ7beK3HluBld7rpublrXj9ZPEOM3FfB7xadEHRtb2amtJieT/rlKzQqt0ZJqDS4GrZ9jQTQJana3FGuEclM8LepqXbf363Rj4t/n9YWwLq1Yw1g3g1QTDmko4yvE9zx/0/kUGgFRjs/I1asTNdLn11rimPLPj7BV59bcBplm5Plce/XmXGmSgddqqrE3VPPYt+6Fz12jzzWFf7OSVjpDOqVu/JMBPd7ZgVFsw0ULXmfXl7ppeuetT9Lz/+dYfMXrffvY+jDnW9rHsjue6MZtK5caJfAwD9mNV5c79tK85W7UiVVbsyzKIRT5qwalu/pvRoXktOb5os3Zsmm03cX/phQ8mM8JB2klIz1mfn/r/fdpkgS0u6Svc4fWRwe4mJCjf7X35R3Kuo4z3GXt7Za1tXeQOBVoCw8zdKV+rc8NZCs6XMjJHnefW1ASfSAZw6VfyZqevMalulPTYacDWvHS9Xvj7PzGXSUtBzf+zm79NFANGS82dLdsgni3eacRcWXc2tQYDOGPNFH2x2boEZuaH/sLBKgdboE0+axevRLNn0Leqm4rqnZVmLKUpnhPUY3WVA56XZGdToPy5Gf7nCjFdR7erXlH9e1Vl6Nj8+hkhDCN0H8+nv15ogV3cKeP2mnmYFrhNkEGgFBjt/o6au3Ct3v7fE/M/2+Z/7evW1Aafv8fnKrI3yztwtZoJ6VESYmQOl2QktLf741/4V9nEBFQXzunXRx4t3mE2wraZ6DUqGdG5gSou6dVF1ep50bpmWkHVzcA2AzH1GjhzILLrfmXZU1u45Yv5Me9Lymu5soAGVlv/0XsvQVcm0nZARrldDHru0k5lb5+2S72s/bpSJczabrJv2yd0/sK3Z+aG8RQeaTbzvw6Vm14KGSbHy5rBe0qWJ/2epEWgFCDt/oz5dvEMe+ux38z/K5NvO9OprA4FA/9X85JTVpkRi0ZVM9/Rv5dfzQnBIO5orXy7dJR8v3une2FtpkKPN83/o2dTs06mluaKg6Zg7aCp5f8xkYDXIqsynpmZ0eriDqlrSpXGSV3rGNIj87LedMn7qWndv2oUd65sdGZrVOfXVf7qqdvSXK82YFmtEh5YDK7OycPOBTLnj3cVm83cdeTL+D139vpCFQCtA2Pkbpf+aHztltVzStaG86sOp14CT6F9DmsnScQ6JcVHy39vPpA8KXv8ztnJXhnz063b5etluOVLc86RJrdioCLPCtbL0Z3SlowZTKTWL7osex0r9xBizi4Bu5m1nX1jGsTx5+YcNMnneVpM902zdXeeeJn8e0Kpao1A0iPy/b9e4+63016XN95oBrMqvQ8/r/o+Wmf+f1d3ntTLjT/y1op5AK0DY+Rul/6O8+MN6uf7MZjLuqi5efW0AQNk9VDofTRvoran+SkvWVsBkBU9lBVPaW+WUUTwb9h2RJ75ZLXM3HjRfa9nu7xd3MP94r0yApBkyLbFqj1V6dp5ZGTr8rOby4OB21d7RQed/PT99nbw2e5M7K/by9adX+/VOBYFWgLDzN0onaL81d4v8qd9pMuriDl59bQBAxXanZZseLg2iagToVP+i/Tb3mVEaupOC6t2ytslIVbSt27q9R+TRL1bI4m1FM8k6NUqUf17ZxWsrfb9evlse/my5Ge6r/WT/Ht5LWvl4zpkTAi3nrMEMUdo4qGrGBub/4AAQyHSif4u6NQI2yFKaudK5bj+MPE9GXtjWNK8v3HJYhv7rZxnz1UrTp1Y6o/fM1LXmeQ2y4qMjzCbo3h6nclm3RvLZ3WebLJv2bV0x4RezY0SoIdDyM2s2ik7/BQCgurTXTAcBz3ywvwzt2tCMW3h3/jYZ8NxseX/hNlPS09WBg16aI6/P3mR6uwZ1rG8CtDvOPc3rM85U58ZJZkN2HfugiYXbJv0qb8zZZLJwoYLSoZ9Tj8PeXig/bzgoL1zTTa7q0cSrrw0ACF3zNh2UJ75eLev2HTFf62DsvRnHzONGSbGmtDioUwOfnEtufqE89vVK+XDRDvP1Fd0bydNXdzXBoZ0oHcKjdEhGCwDgPbr/4Lf/7xx54rJOkhgbaYIs7eG/45yWZkC2r4Ispasitf/rycs7SWR4mHy5bLf8ceJ82ZNe/rZDwSJwi9JBNLRR0aMFAPA2LQfqBHldhaijGzT46tjIT6vvwsJkWJ8W0jqlpvz5/SVmev6lr/wibwzrUWLafLAJqYzWhAkTpEWLFhIbGyu9e/eWRYsWOSajVda2CwAAeEOdhBjTh+WvIMtTn1Z1TN9W+wY1zfyu695cIB//WrTxeDAKmUDr448/lpEjR8pjjz0mv/32m3Tr1k0GDx4s+/fvd0Sg5Y/5IgAA+EPT2vHyv3vONgNR8wpc8sj/VpjthXST8GATMoHWCy+8IHfeeafceuut0rFjR5k4caLEx8fLO++847dz0j9Q2XlF04gpHQIAQkmNmEh57cYeZiSF0iGyqaVGUQSDkPh0z83NlSVLlsioUaPc3wsPD5eBAwfK/PnzTzg+JyfH3DxXLdghszibpRIItAAAISYsLMyMpNAyojV5P9iEREbr4MGDUlBQIPXr1y/xff167969Jxw/btw4sxzUujVt2tSW8zqaVyA1YyLNtg/l7YgOAECwG9Spgdl8Oxjx6V4GzXzpzA3rtmNH0dwPb9NNR1c8MVhWPD7YltcHAAD+FRL1qrp160pERITs27evxPf16wYNTpwjEhMTY26+Eu6QzUkBAIB3hURGKzo6Wnr27CkzZ850f6+wsNB83adPH7+eGwAACF4hkdFSOtrh5ptvll69esmZZ54pL730kmRlZZlViAAAAHYImUDr2muvlQMHDsiYMWNMA3z37t1l6tSpJzTIAwAAeAubSgfIppQAACDwPr9DokcLAADAHwi0AAAAbEKgBQAAYBMCLQAAAJsQaAEAANiEQAsAAMAmBFoAAAA2IdACAACwCYEWAACATUJmC55TYQ3P1wmzAAAgMGQUf277cxMcAq1KOHLkiLlv2rSpv08FAABU43Nct+LxB/Y6rITCwkLZvXu31KxZU8LCwrwebWsAt2PHDvZRrAKuW/Vw3aqOa1Y9XLfq4bp597ppiKNBVqNGjSQ83D/dUmS0KkF/c5o0aWLre+gfDP6nqjquW/Vw3aqOa1Y9XLfq4bp577r5K5NloRkeAADAJgRaAAAANiHQ8rOYmBh57LHHzD0qj+tWPVy3quOaVQ/XrXq4bsF33WiGBwAAsAkZLQAAAJsQaAEAANiEQAsAAMAmBFoAAAA2IdCqwIQJE6RFixYSGxsrvXv3lkWLFlV4/Keffirt27c3x3fp0kW+++67Es/ruoMxY8ZIw4YNJS4uTgYOHCgbNmwocczhw4flxhtvNAPXkpOT5fbbb5fMzMwSx/z+++9y7rnnmvfRSbjjx4+v8rnYKVCv27///W/zfK1atcxN3+dk5+5NgXrdPH300Udm94QrrrhCfCWQr1taWpqMGDHCvJeulmrbtq1P/l8N5Gv20ksvSbt27cz76DEPPPCAHDt2THzBiddNf+233HKLef3IyMhy/9+bPXu29OjRw/w5a926tUyaNEl8ZUKAXrfPP/9cLrzwQqlXr555nT59+si0adOqfgF01SFO9NFHH7mio6Nd77zzjmvVqlWuO++805WcnOzat29fmcf/8ssvroiICNf48eNdq1evdo0ePdoVFRXlWrFihfuYp59+2pWUlOT68ssvXcuXL3dddtllrpYtW7qys7Pdx1x00UWubt26uRYsWOD6+eefXa1bt3Zdf/317ufT09Nd9evXd914442ulStXuj788ENXXFyc64033qjSudglkK/bDTfc4JowYYJr6dKlrjVr1rhuueUW8747d+502S2Qr5tly5YtrsaNG7vOPfdc1+WXX+7yhUC+bjk5Oa5evXq5Lr74YtfcuXPN9Zs9e7Zr2bJlLjsF8jV7//33XTExMeZer9e0adNcDRs2dD3wwAMuuzn1umVmZrruvvtu15tvvukaPHhwmf/vbd682RUfH+8aOXKkOZdXXnnFnNvUqVNddvsogK/bX/7yF9czzzzjWrRokWv9+vWuUaNGmXP57bffqnQNCLTKceaZZ7pGjBjh/rqgoMDVqFEj17hx48o8/pprrnENHTq0xPd69+7t+tOf/mQeFxYWuho0aOB69tln3c+npaWZvzT0LxSlf6g09v3111/dx3z//feusLAw165du8zXr732mqtWrVrmL2nLI4884mrXrl2lz8VOgXzdSsvPz3fVrFnTNXnyZJfdAv266bU6++yzXW+99Zbr5ptv9lmgFcjX7fXXX3eddtpprtzcXJcvBfI10/M+//zzS5yLBg99+/Z1hep181Te/3sPP/ywq1OnTiW+d+2115oAw25nBvB1K0vHjh1dTzzxhKsqKB2WITc3V5YsWWLSkZ77HerX8+fPL/Nn9Puex6vBgwe7j9+yZYvs3bu3xDG6/5KmUa1j9F5TnL169XIfo8frey9cuNB9TL9+/SQ6OrrE+6xbt05SU1MrdS52CfTrVtrRo0clLy9PateuLXYKhus2duxYSUlJMel5Xwn06/b111+bUoSWDuvXry+dO3eWf/7zn1JQUCB2CfRrdvbZZ5vzt0pPmzdvNmWliy++WOzk5OtWGXwmSLWuW2mFhYVmg+qqfiYQaJXh4MGD5i87/cvPk36tv8Fl0e9XdLx1f7Jj9MPKk9aO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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "tx_antenna = [(0,0,0)]\n", "NRX = 500\n", "d=lambda_max/2\n", "X_rx = [(n-NRX/2)* d for n in range(1,NRX)]\n", "rx_antennas = [(x,0,0) for x in X_rx]\n", "Z0=0.9*R0\n", "X_step = 10\n", "offset = 3\n", "NScatterers = 3\n", "targets = [(offset+(n-int(NScatterers/2))*X_step,0,Z0) for n in range(NScatterers)]\n", "targets = [(0,0,Z0),(2,0,Z0),(10,0,Z0)]\n", "\n", "phases = []\n", "aoa = []\n", "#targets=[targets[1]]\n", "#rx_antennas = [rx_antennas[0]]\n", "\n", "#fmcw_if_new = fmcw_if_target\n", "print(\"AoA 1\",arctan(1)*180/pi)\n", "for i,target in enumerate(targets):\n", " x,y,z = target\n", " print(f\"AoA target_{i}\",arctan(x/z)*180/pi)\n", "for rx in rx_antennas:\n", " y=0\n", " for i,target in enumerate(targets):\n", "\n", " # ensure no phase ambiguity\n", " assert v*4*pi*delta_2_chirps/lambda_max d = f0* c/ 2/s\n", " R0_est = f0*c/2/S\n", " #print(f\"Estimated Distance: {R0_est:.3g} real distance was {Distance:.3g}\")\n", " #get the phase at target frequency bin for first chirp\n", " ph0 = fmcw_fft(y,t,1/Ts,plot_fft=False,plot_abs_nphase=False)\n", " ph0=ph0[0]\n", " aoa.append(ph0*180/pi)\n", "\n", "\n", "\n", "\n", "P=0\n", "if P==0:\n", " myd = False\n", "else:\n", " myd=True\n", "#_unwrap\n", "#aoa = _unwrap(aoa[P:-1],debug=myd)\n", "#print(len(aoa))\n", "aoa = list(unwrap(aoa))\n", "#print(\"a8\",len(aoa))\n", "X = [180*(n-NRX/2)/2/NRX for n in range(1,NRX)]\n", "#X=X[P:-1]\n", "#X = [180*(n-NRX/2)/2/NRX for n in range(1,P+1)]\n", "\n", "maoa = mean(aoa)\n", "#print(maoa)\n", "aoa=[x-maoa for x in aoa]\n", "if False:\n", " f, ax1 = plt.subplots(num=1, clear=True)\n", " ax1.plot(X,aoa,'xb')\n", "else:\n", " fmcw_fft(aoa,X_rx,d,plot_fft=True,plot_abs_nphase=True,maxf=0.1)\n", "\n", "#f.title('phase array')\n", "#ax1.xlabel('X')\n", "#ax1.ylabel('Y')\n", "#phases.append(aoa)\n", "#aoa=[]\n", "\n", "#peak = min(aoa)\n", "#fpeak = aoa.index(peak)\n", "#print(peak,fpeak)\n", "\n", "# plt.plot(range(len(phases)),phases,'xb')\n", "# plt.title('phase array')\n", "# plt.xlabel('X')\n", "# plt.ylabel('Y')\n", "print(116,2*pi/NRX/d)\n", "print(12/.00002)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 295 }, "id": "1cD-zsu11mb3", "outputId": "2f9fdabf-1e98-42c6-d8d8-9851e969d8a2" }, "outputs": [ { "data": { "image/png": "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97/X3Wann356o+OqZqd3796tuj8A7Y+aHQCmdO6558rnn3+ui39VAAncVDBSYSI+Pl42btzof48KMaqLqzmqa6y4uLjJwNMS1Zrzs5/9THddqWHmoajCavU5AMyBsAPAlGbMmKFbSCZPniybNm3SXVdvvfWWHtrt8Xh099a0adN015MaXaUChuqCamk4uQohqgVHFUJHSoWkH/3oR3p+HjViTL1Wmxrh5bNr1y759ttvZezYsa36dQNof4QdAKakinxVIFHB5rLLLpOBAwfqIeXp6en+QDN//nz5wQ9+oLu7VLi46KKLGtX+NKSGuqvAtHjx4ojv6auvvtIjwlQhtOpK823nnXee/5yXX35Z32/37t1b8asG0BEchhpSAAA2oebZUUO/Q82G7KNaYwYMGKCHqbdnKFEF02pUmVqG4sILL2y36wJoG1p2AMQcNXxcDVvfs2dPu15XXU+N0iLoAObCaCwAMenqq69u92v6CqgBmAvdWAAAwNboxgIAALZG2AEAALZG2AEAALZG2AEAALZG2AEAALZG2AEAALZG2AEAALZG2AEAALZG2AEAAGJn/x+At87O2CyBmQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "N=512\n", "TM=pi/2*10\n", "t = linspace(0.0, TM, N)\n", "y=sin(t)\n", "#plt.plot(t,y)\n", "f0 = fmcw_fft(y,t,TM/N,plot_fft=True,plot_abs_nphase=True,maxf=0.3)" ] }, { "cell_type": "markdown", "metadata": { "id": "8MqU9b3MDdDp" }, "source": [ "## BARTLET in python\n", "\n", "From\n", "Smart Antennas\n", "for Wireless\n", "Communications\n", "With MATLAB\n", "\n", "Frank B. Gross, PhD\n", "Senior Systems Engineer\n", "Argon ST\n", "Fairfax, Virginia" ] }, { "cell_type": "markdown", "metadata": { "id": "HnmZcHChDnle" }, "source": [ "Example 7.5\n", "Use MATLAB to plot the pseudo-spectrum using the Bartlett\n", "estimate for an M = 6 element array. With element spacing d = λ/2, uncorrelated,\n", "equal amplitude sources, (s1, s2), and σ2\n", "n = .1, and the two different\n", "pairs of arrival angles given by ±10◦ and ±5◦, assume ergodicity.\n" ] }, { "cell_type": "markdown", "metadata": { "id": "u7KLVZieDth2" }, "source": [ "### Solution\n", "Solution From the information given we can find the following:\n", "* /s = [1 1]\n", "\n", "* a¯(θ) = [1 e jπ sin θ · · · e j5π sin θ ]T\n", "* A = [/a(θ1) /a(θ2)]\n", "* Rss = [[1 0] [0 1]]\n", "\n", "Note: Rss = [[1 0] [01]] is the DxD (with D number of sources) source correlation matrix - assumption is that all signals are not correlated.\n", "\n", "Applying Eq. (7.21) we can find \u0003Rxx for both sets of angles. Substituting Rxx\n", "into Eq. (7.22) and usingMATLAB,we can plot the pseudospectrum as shown\n", "in Figs. 7.2a and b.\n", "\n", "Where 7.21 is:\n", "\n", "* Rxx = A * Rss * AH + Rnn\n", "\n", "or implicitly\n", "\n", "* Eq RXX_1\n", "\n", "$$ R_{xx} \\approx \\frac{1}{N} \\cdot \\displaystyle\\sum_{k=0}^{n} X(t) \\cdot X^H(t) $$\n", "[source Eq 14.](https://www.mdpi.com/2411-5134/4/3/43/pdf)\n", "Where X(t) is\n", "$$ X(t) =\n", "\\begin{pmatrix}\n", " x_1(t_1) & x_1(t_2) & \\cdots & x_1(t_n) \\\\\n", " x_2(t_1) & x_2(t_2) & \\cdots & x_2(t_n) \\\\\n", "\\vdots & \\vdots & \\ddots & \\vdots \\\\\n", " x_M(t_1) & x_M(t_2) & \\cdots & x_M(t_n)\n", "\\end{pmatrix} $$\n", "\n", "and 7.22:\n", "\n", "* PB(θ) = /aH(θ) * Rxx * /a(θ)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 577 }, "id": "fpsiwGk-EyQ3", "outputId": "aee4f5e4-725e-4593-fdde-58baa18f2139" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[2.01 +0.00000000e+00j 1.47618256-8.79346446e-01j\n", " 0.45349966-8.37458879e-01j 0.00334958+8.17798235e-02j\n", " 0.59732525+9.15343130e-01j 1.61315704+7.89961043e-01j]\n", " [1.47618256+8.79346446e-01j 2.01 -2.21956895e-17j\n", " 1.47618256-8.79346446e-01j 0.45349966-8.37458879e-01j\n", " 0.00334958+8.17798235e-02j 0.59732525+9.15343130e-01j]\n", " [0.45349966+8.37458879e-01j 1.47618256+8.79346446e-01j\n", " 2.01 +1.99410676e-17j 1.47618256-8.79346446e-01j\n", " 0.45349966-8.37458879e-01j 0.00334958+8.17798235e-02j]\n", " [0.00334958-8.17798235e-02j 0.45349966+8.37458879e-01j\n", " 1.47618256+8.79346446e-01j 2.01 -4.69395873e-18j\n", " 1.47618256-8.79346446e-01j 0.45349966-8.37458879e-01j]\n", " [0.59732525-9.15343130e-01j 0.00334958-8.17798235e-02j\n", " 0.45349966+8.37458879e-01j 1.47618256+8.79346446e-01j\n", " 2.01 +0.00000000e+00j 1.47618256-8.79346446e-01j]\n", " [1.61315704-7.89961043e-01j 0.59732525-9.15343130e-01j\n", " 0.00334958-8.17798235e-02j 0.45349966+8.37458879e-01j\n", " 1.47618256+8.79346446e-01j 2.01 +0.00000000e+00j]]\n" ] }, { "data": { "image/png": "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yADw2aefuiDGSq5btvR7NAAQ/BwZm8zJxoQOgLxcVurUyTXDAwDkLJB57rnn1LRpU5UoUcI77PzZZ5/N+9EByED/GAD4k5jf1t1666168MEHde2116rtH+Wf8+fP14033qj169frzjvvjPVbAjic3buluXPdOYm+ABBbsm9mtseSVTFdcMEFWT7+2muvecHNzz//rHhCsi8SgiX3tmsnVaggbd5sXSr9HhEAxMXrd8zPhrt371bLAyQatmjRQnv27Il9pACyv6xknXwJYgAgXczPiBdffLFGjx79p48//fTTuuiii2L9dgCyY8YMd0t+DABkUSSnyb7vv/++Tvqjj8XChQu9/Jj+/ftryJAh6V9nuTQAcun336V589w5gQwA5C6QWbFihU488UTvfM2aNd5txYoVvcM+l7k5HoA8yo9JS3ObRTZq5PdoACDYgcysWbPyZyQADl92zRsEAMiCrEEg3tE/BgDybkZm586dGjVqlDczs3nzZu2z/V8y+eSTT2L9lgAOJjVV+vjjjIolAEDuApmBAwd6ib7nnHOOWrduTS4MkJ8+/FDau1dq0ECqU8fv0QBA8AOZyZMn67333lP79u3zZ0QA/rysRDdfAMibHJkaNWqojO2+CyD/kR8DAHkbyDzwwAMaNmyYvv3221j/VwCx+OUXadkyd37KKX6PBgASY2nJtiewhN/69eurVKlSKlq0aJbP//rrr3k5PiC8oq0OmjaVqlTxezQAkBiBjG0W+cMPP+jf//63qlSpQrIvkF9YVgKAvA9k5s2bp/nz56tZs2ax/q8AYvHBB+6WQAYA8i5HpkmTJvrd9n4BkH8sB23VKqlwYfJjACAvA5l7771XQ4cO1ezZs/XLL78oNTU1yxGLuXPnqlevXqpevbq3RPXOO+9k+fwll1zifTzzcdppp8U6ZCC4szFt2kjJyX6PBgASZ2kpGkh03a+vRSQS8QKNvda8K5t27NjhLVFddtllOvvssw/6855//vn0+8WLF491yEDwTJ/ubrt183skABCeTSM/++yzmL5Xz549veNQLHCpWrVqTN8XCDTb9mPGDHd+6ql+jwYAEiuQOfnkk7Pc37Ztm1577TU9++yzWrJkia655pq8HJ+3hFW5cmWVK1dOXbp00d13360KFSoc9OvT0tK8IyrW5S7Ad59+Kv38s1S6tFtaAgDk/e7Xlt8y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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "def a(theta, M=6):\n", " # a_theta is the steering vector - defined by the sensing array\n", " theta=theta/180*pi\n", " return array([exp(n*1j*pi*sin(theta)) for n in range(M)])\n", "\n", "def Rxx_expl(thetas,M=6,s2_n=0.1):\n", " \"\"\"\n", " A: MxD matrix of steering vectors\n", " M: number of elements in array\n", " D: number of targets\n", " assumed: D 26.1.2\n", "[notice] To update, run: python.exe -m pip install --upgrade pip\n" ] } ], "source": [ "!pip install pyargus\n", "from pyargus.directionEstimation import *" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 235 }, "id": "yg6MV5Nqb5Rr", "outputId": "87cb2518-6a8a-4903-bfae-3df60cd04171" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Minimum alias angle 0.00 \n", "Maximum alias angle 0.00 \n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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/2fOnKHVq1eLEWDuE36PeCSwcePGYhLFkSNHxPs1cuRIcf+bb765zOO9/PLL4nPIbejcubPoL34O/hzx6+M2821U3O7KPqeeevvtt8XfGYfDIf5e8GeO2/ntt9+K01NPPUXTp093e9/t27fTgw8+SPXq1aOLL75YfNf5PZ05cybt2rVLfMdBQ34MusCEPB0RYoMGDRK35f811WREiE88IuLuf9q33HKLuJ7/13bq1Kky173yyiviOh7lcR114VEi/h+8+riFhYVl7seP89tvv7l9nTzy405lI0L8v0H1vjxCVVRU5Lzu4MGDYuSKr/vXv/5V5n6uI1E8EpCVleW8LiMjQ+nWrZu47rnnnlM8lZaW5nzdzz77rBilUW3atEmMDPF18+fP9+i11YTaTw899JDzso8//lhcxiNdrm0pPyLEJx49OHnyZIXbuL5PPFrg+j5VNxqzcuVKcRmPMrnzn//8R1zPo0KuNm7cKEYoy+MRka5du4r7fPbZZx61oTr8ueD79OnTR4w4lB8l4hE17jce4VLxSBXf56OPPqrweOfOnVPWrVtX5rLqRkk8GRFSP988OqtaunSpuJxHo/izU/4zx6NsfD2Pkpb3yy+/iO9HeX/99ZfSpEkTcT8evanp57Sy17pjxw7FYrEoAQEByocffljmumXLlokRHr5f+ZEh179RPPrj+neGPyORkZHiut9//73SNoHvIRACaQKhkSNHittefvnlNQqE2rZt6zZ9tHv3bvGHi4fOrVar2+ccPny4eIxvvvnGeRkfjPmyq666qsavs6aB0P/+9z9xObfR3RA5p4nUg0V+fn6FP9j8h/TEiRMV7scpBb6eU1qeeuaZZ8R9evbs6fb6l156yRk4evLaPKWmofgxXAMIfj843VFZms01EFq9erXbx1bfJ05juDtwVhWE8EFZ7Vd3Byo12Pz22289fq0//PCDuA+nVzxpQ1U41cdpQH7vKkvf3XPPPeIxX3vtNedlHTt2FJdxwOwJbwRCnGZ1/fyqOIDl63v37l0h2OWgSe1/TpV66q233hL3efTRR70WCHFKjy/n1KE7nNbm6wcPHuz2feHvlLtgnoNDvv7pp5/2+PWB96FYGqTBQ86spikDTiXxTKPyli1bJmamcRpATZWVp651wyko1fLly51Twn1NXRuJUwCc2iiPU1M8nM4pvi1btlS4ntM9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yi+//KIcPnxYWbt2rTJo0CClQYMGyunTp8X1d911l9K0aVNl1apVyubNm5V+/fqJE/hedna2sm3bNnHiP90vv/yy+PnIkSPi+ueff158j77++mtlx44dYlZSixYtlPz8fOdjDBs2TOnevbuyYcMGZc2aNUqbNm2UUaNGafiqzNdXfN0jjzwiZlry9+zHH39UevToIfqioKDA+RjoK/9BIASaeO2118QBNSQkREynX79+vdZNAkVRbr75ZqVRo0aiX5KTk8XvBw4ccF7PB9V77rlHqVevnhIREaFce+21ysmTJzVts1n8/PPP4qBa/sRTsdUp9FOnTlUaNmwo/qMxcOBAZe/evWUe4+zZs+JgGhUVpcTExCjjxo0TB2bwX1/l5eUpQ4YMURISEsRyFM2aNVMmTJhQ4T+C6Cv/CeB//D0KBQAAACAD1AgBAACAaSEQAgAAANNCIAQAAACmhUAIAAAATAuBEAAAAJgWAiEAAAAwLQRCAAAAYFoIhACg1nin+vK70Zf31FNPUbdu3cjIeLPMgICACvuw1QS/T/wYfJo7d26Vt+XbLFmyhLxp7Nixzuf39mMDyAyBEICJ8MHummuu8drj3XzzzbRv3z6SMQDTo06dOtHJkydp4sSJfn/u//znP+K5AczGonUDAEC/wsPDxQm8w2KxaLa7eGxsrDgBmA1GhABM7JJLLqEHHniAHnvsMYqPjxcHYU7RuOJ0z5133kkNGzaksLAwOu+88+jbb7+tdGTm+eefF7eNjo6m8ePHU0FBQYXnfeedd6hDhw7i8dq3b0///e9/ndf9/fffIj3z1Vdf0aWXXkoRERHUtWtXWrdunTMNNW7cOMrKynKmcsq3WXXw4EG6+uqrRXuioqLo/PPPpx9//LHMbZo3b07PPfcc3X777aLNTZs2pfnz55e5ze+//y7Se9zeXr16idQRP+/27dsrfW/XrFlDF154oQgUU1JSxPucm5tLNbV//3666KKLxHN37NiRVq5cWeE2x44do5tuukn0Bfcjv2Z+H1U2m008P19fv359evzxx2nMmDFeHR0E0CsEQgAm98EHH1BkZCRt2LCBXnjhBXr66aedB1uHw0GXX345rV27lj766CPavXu3CHSCgoLcPtZnn30mghIOLDZv3kyNGjUqE+SwhQsX0rRp02jmzJm0Z88ecdupU6eKdrj697//TY88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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "\n", "d = 0.5 # Inter element spacing [lambda]\n", "M = 5 # number of antenna elements in the antenna system (ULA)\n", "N = 2**12 # sample size used for the simulation\n", "N = 2**12 #MCV\n", "theta1 = -9 # incident angle of the test signal [deg]\n", "theta2 = -theta1 # incident angle of the test signal [deg]\n", "\n", "# Array response vectors of the test signal\n", "a = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(theta1)))\n", "\n", "# Array response vectors of the test signal\n", "a_1 = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(theta1)))\n", "a_2 = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(theta2)))\n", "\n", "# Generate multichannel test signal\n", "# Notes seems to require some noise , if sigma is too low less reliable outcome?!?\n", "soi1 = np.random.normal(0,1,N) # Signal of Interest\n", "soi_outer = np.outer( soi1, a_1)\n", "soi_matrix= soi_outer.T\n", "\n", "# Generate multichannel uncorrelated noise\n", "noise = np.random.normal(0,np.sqrt(10**-1),(M,N))\n", "\n", "# Create received signal array\n", "rec_signal = soi_matrix + noise\n", "\n", "R = corr_matrix_estimate(rec_signal.T, imp=\"mem_eff\")\n", "\n", "array_alignment = np.arange(0, M, 1)* d\n", "incident_angles= np.arange(-30,30,1)\n", "ula_scanning_vectors = gen_ula_scanning_vectors(array_alignment, incident_angles)\n", "#print(ula_scanning_vectors)\n", "\n", "Bartlett = DOA_Bartlett(R,ula_scanning_vectors)\n", "\n", "# Get matplotlib axes object\n", "\n", "\n", "axes = DOA_plot(Bartlett, incident_angles, log_scale_min = -50)\n", "\n", "# Mark nominal incident angles\n", "axes.axvline(linestyle = '--',linewidth = 2,color = 'black',x = theta1)\n", "axes.axvline(linestyle = '--',linewidth = 2,color = 'black',x = theta2)\n", "axes.plot()" ] }, { "cell_type": "markdown", "metadata": { "id": "KGV3Q-TB4-pn" }, "source": [ "## Back-up and research code" ] }, { "cell_type": "markdown", "metadata": { "id": "u-7hiMt3-o8z" }, "source": [ "## PYARGUS\n", "\n", "| N | Bartlett resolution | CAPON resolution |\n", "|---|---|---|\n", "|2 | N/A | N/A |\n", "|3 | 20 | 12 |\n", "|4 | 13 | 7 |\n", "|8 | 7 | 3 |\n", "|12 | 4.2 | 1.7|\n", "\n", "\n", "https://github.com/petotamas/pyArgus/blob/master/docs/nb_direction_of_arrival_estimaton.ipynb" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "ckE47UbL-rKe", "outputId": "3fca19e6-3432-4a7f-8474-92cbcc16dcd7" }, "outputs": [], "source": [ "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "np.set_printoptions(precision=1)\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": { "id": "s4rXrkGbvO3M" }, "source": [ "### 4 elements" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 473 }, "id": "pO0X3zwI-yoR", "outputId": "d9c72dad-8b09-488f-ae1d-b684b3d22833" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Signal is received from the front: a= [1.+0.0e+00j 1.+1.9e-16j 1.+3.8e-16j 1.+5.8e-16j]\n", "Signal is received from the side: a= [ 1.+0.0e+00j -1.+1.2e-16j 1.-2.4e-16j -1.+3.7e-16j]\n", "Signal is received on 60 deg: a= [ 1.0e+00+0.0e+00j -3.8e-16+1.0e+00j -1.0e+00-7.7e-16j 7.0e-16-1.0e+00j]\n", "Signal is received on 68 deg: a= [ 1. +0.j 0.4+0.9j -0.7+0.7j -0.9-0.4j]\n", "not correlated\n", "Minimum alias angle 0.00 \n", "Maximum alias angle 0.00 \n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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bdiwgUaMGEGOjo5iBfMjR46oh7yeeOIJys/PVw8b1W+zSnx8PN17772iPc7OztS/f3/auXNnnfuEhITQu+++S08++aRoc7t27ei7776rc5/Dhw+LoURub79+/cQwFT8vr5rekIMHD9Ltt98ugsmgoCDxOhcXF1NTXb58me644w7x3F26dKEdO3bccp/k5GR6+OGHxbHg48j7zK+jSlVVlXh+vt3T05PmzZtHU6dO1WsvI4CcIVgCAK1++OEHcnJyomPHjtH7779PixYtUp+QFQoF3XnnnXTo0CH66aefKCYmRgRDVlZWGh/rl19+EYELBx8nT54kf3//OoEQW7NmDS1YsIDeeecdio2NFfedP3++aEdt//nPf+iVV14RAUnHjh1p0qRJ4qQ/ZMgQkdPj6uoqho34wvfTpKioiCIjI2nXrl105swZGj9+PN1zzz2UlJRU534fffSRCIL4Ps888ww9/fTTdPHiRXFbQUGB+J3u3bvT6dOnafHixSLY0IaDNH6uiRMnUlRUFP38888ieHruueeoKfj1f+CBB8jW1lYcn2+++eaW566srKRx48aJQO/AgQPiWHFgyM9fUVEh7vPee++J133VqlXidt4n5CUB1GLslXwBQDp4hfB7771X/f9hw4Ypb7vttjr36d+/v3LevHni57///ltpaWmpvHjxosbHW7VqlVhFXGXw4MHKZ555ps59eKXxnj17qv8fFhamXLt2bZ37LF68WPwuU61a//3336tvj46OFtfFxsZqfN6m6Nq1q/Lzzz9X/59Xh3/88cfV/1coFEofHx/l119/Lf7PW09PT2Vpaan6PsuXLxftOXPmTJ0V2W/cuCH+P336dOXMmTPrPO+BAwfEa1n7cWpbuHBhnddJ9fpbW1srU1NT1ddt27ZNPNcff/wh/v/f//5X2alTJ9FulfLycrH6O/8+8/X1VX7wwQfq26uqqpTt2rWr815Qqf3YAOYCPUsAoFWPHj3q/J97g65fvy5+5l6dwMBA0bOjC+4pGjhwYJ3rBg8erP6Zh6G414WH57j3Q3X5v//7P3F9Q+3iNjFVu3TFPUvc68RDfjwExc/Fbazfs1T7uXh4jYcjVc/FPUx8Ow+DqQwYMEDr8547d04MUdbeR+794Z6ihIQEndvPbeUhvLZt22p8PVXPdeXKFdGzpHouHorj4U9+TXm4MjMzs06buWewb9++OrcDwNQhwRsAtLKxsanzfw4W+KTO9J28zcELW758+S1BVf2hvdrt4jYxVbt0xYESDyl++OGHFB4eLvbnwQcfVA9PaXou1fM19bnq7yfneXGeUH2cE6VP/Fwc+PAwW33e3t56fS4AU4VgCQCajXtUUlJSRHkAXXqXuAeHc2umTJmivu7o0aPqnznRmntJrl69So899liz28U5PNXV1Y3ej/NzuFzC/fffrw4saic+66JTp04iX6u8vJzs7OzEdSdOnND6O3369BH5XRygtQS/npy8zXlZqt612q+n6rk4J8rHx0fkcWnCrzu3mRPFGb92nH9l6vWvAHSFYTgAaLZhw4aJEywnKnMPDQ8hbdu2jbZv367x/i+88AKtXLlSJBJzgLVw4UKKjo6uc5+3336blixZQp999pm4z/nz58X9ly1bpnO7eAYbBz6cuJ2dnU0lJSUa79ehQwcxq46HE3m4avLkyU3uMVL9Dtc+4mGxv//+W/RU1e7xqo+TsHkGHSd083PzjLY///yzyQneo0ePFkEqz1zj9nMCNye+18ZBp5eXl5gBx7fzMeIZg9yrxYEumzNnjnjNuQ08rMjH6caNGw22H8DcIFgCgBb5/fffxZR7no3GU9e5zEBDvTpcpJJntvF9eGgoMTFRzCyr7amnnhKlAzhA4hlmHJBxfk9oaKjObeIZcbNnzxbPx0NNPItPEw7A3N3dxf15RhvnDXFPTFNwb82mTZtE0MM9MRys8Gw+VjuPqX6P3L59+0QwyOUDevfuLX6ndu6RLiwtLemPP/6g0tJSkXPErx3PIqyNSyvs379fDO/xzDnujVKVbFD1NHHwxsePe/w450mVQ9VQ+wHMjQVneRu7EQAApoTzg1S1nvSV18UlF3g6v7baTfrCPWUcVHFtJi6FUBv3NnGAhhpMYE7QswQA0EI//vijqJPEQ1wc0HBPDQca+k6A5yFJ7vWpX5uqpbiHj5PqVcOe3NvH+8JDjCrcU8fPDWCO0LMEANBCPMzHAUxGRoZItOZeFx4O4yEwfcnNzRUXxkOL+lx6hJPEH330Ubpw4QLX3hNV2Lm4qCrhm3GpBC5WyXgfuVApgLlAsAQAAACgBYbhAAAAALRAsAQAAACgBYIlAAAAAC0QLAEAAABogWAJAAAAQAsESwAAAABaIFgCAAAA0ALBEgAAAIAWCJYAAAAAqGH/D/MR6zLmVopOAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "d = 0.5 # Inter element spacing [lambda]\n", "M = 10 # number of antenna elements in the antenna system (ULA)\n", "M = 4 # temp value\n", "N = 2**12 # sample size used for the simulation\n", "N = 2**12 #MCV\n", "theta1 = 50 # incident angle of the test signal [deg]\n", "theta2 = 80 # incident angle of the test signal [deg]\n", "# MCV temp\n", "theta1, theta2 = 50, 68\n", "\n", "# Array response vectors of the test signal\n", "a = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(theta1)))\n", "\n", "a_90 = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(90)))\n", "a_0 = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(0)))\n", "a_60 = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(60)))\n", "\n", "# To display only the first fractional digit\n", "np.set_printoptions(precision=1)\n", "\n", "print(\"Signal is received from the front: a=\",a_90)\n", "print(\"Signal is received from the side: a=\",a_0)\n", "print(\"Signal is received on 60 deg: a=\",a_60)\n", "\n", "# Array response vectors of the test signal\n", "a_1 = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(theta1)))\n", "a_2 = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(theta2)))\n", "print(f\"Signal is received on {theta2} deg: a=\",a_2)\n", "\n", "# Generate multichannel test signal\n", "# Notes seems to require some noise , if sigma is too low less reliable outcome?!?\n", "soi1 = np.random.normal(0,1,N) # Signal of Interest\n", "correlated = False\n", "if correlated:\n", " soi2 = soi1 #CAPON will faill here\n", "else:\n", " print(\"not correlated\")\n", " soi2 = np.random.normal(0,1,N)\n", "#print(30,soi1)\n", "soi_outer = np.outer( soi1, a_1)\n", "soi_outer+= np.outer( soi2, a_2)\n", "soi_matrix= soi_outer.T\n", "\n", "#soi_matrix = ( np.outer( soi, a_1) + np.outer( soi, a_2)).T\n", "\n", "# Generate multichannel uncorrelated noise\n", "noise = np.random.normal(0,np.sqrt(10**-1),(M,N))\n", "\n", "# Create received signal array\n", "rec_signal = soi_matrix + noise\n", "\n", "R = corr_matrix_estimate(rec_signal.T, imp=\"mem_eff\")\n", "\n", "array_alignment = np.arange(0, M, 1)* d\n", "incident_angles= np.arange(0,181,1)\n", "ula_scanning_vectors = gen_ula_scanning_vectors(array_alignment, incident_angles)\n", "#print(ula_scanning_vectors)\n", "\n", "Bartlett = DOA_Bartlett(R,ula_scanning_vectors)\n", "Capon = DOA_Capon(R, ula_scanning_vectors)\n", "\n", "# Get matplotlib axes object\n", "\n", "\n", "# DOA_plot(Bartlett, incident_angles, log_scale_min = -50)\n", "\n", "axes = DOA_plot(Capon, incident_angles, log_scale_min = -50)\n", "# Mark nominal incident angles\n", "axes.axvline(linestyle = '--',linewidth = 2,color = 'black',x = theta1)\n", "axes.axvline(linestyle = '--',linewidth = 2,color = 'black',x = theta2)\n", "axes.plot()" ] }, { "cell_type": "markdown", "metadata": { "id": "1rvhM76pwJ-b" }, "source": [ "### 2 elements\n", " does not seem to work ???" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 386 }, "id": "DmIfBv4rx6gH", "outputId": "6dfc6239-eb23-42f5-b1cf-ad3e457f6bb7" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Minimum alias angle 0.00 \n", "Maximum alias angle 0.00 \n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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P3mvKleurBIZFrf0RHle6+TJkyoHljzu0KFDN91f3gNZWkL215azyL/cya3kCCptjiM5toWPa1HkXProo48MLVq0UEvkSK6g/v37q4SFJb1X5UlKmT8xouQA0pYvkWPWpEkTlbtMzn1ZDkYjySjlvJfzX8omS4tIeSS/mXwWisoHJPmvhg4dqo6BLAFTnuVOinKzz3Bxn/2rV6+qhJzaZzMwMNAwfPhwtYxLSeeF5KZ6/PHHVd4neZ/KutxJWFiY4e6771bLKkmSSvk7MmTIkFItd3Ir5yeZl4P8U9EBGhEREZFecMwSERERUQkYLBERERGVgMESERERUQkYLBERERGVgMESERERUQkYLBERERGVgEkpTUCy9kqiM0lAd7OVvYmIiMg6SPYkSfArSVVLWsyYwZIJSKCkLVhJRERE+iJLXmnL9hSFwZIJaEsayJst62aZSsLZBGyP2I4uzbrAr459rVIta63JekqyNIAsQWAvylNvWVJBlrOQ9dPyr++lN/Z6zO257rZy7paHvR7z8tQ96UIStv10Al0fbgjfmr4wpeTkZNXYUdTSRPkxWDIBretNAiVTBktZ3llqXSI5iKZ8Xr18mKTuUm97+kNSnnrLelMpKSmoVKmSrs8Tez3m9lz3yZMnY9euXejQoYOuz93ysNdjXp66G7wN8HSrBB9v037H5nezITQMloh0bsKECZYuAlG5PPbYY2qsyODBgy1dFKIScTYcERERUQkYLBERERGVgMESkc7JANnIyEi1JdITOWcvX77Mc5esHscsEemcDI6NiopCSEiICpqI9KJr1648d0kX2LJEREREVAIGS0REREQlYLBEREREVAIGS0REREQlYLBEREREZEvB0ldffYU6derA3d0dnTp1ws6dO0vcf+HChWr9Idm/RYsWWLZs2Q0rDk+ZMkWtTeTh4YG+ffvixIkTZq4FERER6YWugqXffvsNkyZNwtSpU7F37160atUKAwYMQFxcXJH7b9u2DaNGjcK4ceOwb98+DB8+XF0OHTpk3OfDDz/EF198gdmzZ2PHjh3w8vJSz5menl6BNSMiIiJrpatgadasWRg/fjweeeQRNG3aVAU4shjfDz/8UOT+n3/+OQYOHIiXX34ZTZo0wYwZM9C2bVv85z//MbYqffbZZ3jrrbcwbNgwtGzZEj///DMuXryIxYsXV3DtiIiI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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "M = 2 # number of antenna elements in the antenna system (ULA)\n", "delta_theta = 35\n", "theta1, theta2 = 90+delta_theta, 90-delta_theta\n", "\n", "# Array response vectors of the test signal\n", "a_1 = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(theta1)))\n", "a_2 = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(theta2)))\n", "\n", "# Generate multichannel test signal\n", "# Notes seems to require some noise , if sigma is too low less reliable outcome?!?\n", "soi2 = np.random.normal(0,1,N)\n", "soi_outer = np.outer( soi1, a_1)\n", "soi_outer+= np.outer( soi2, a_2)\n", "soi_matrix= soi_outer.T\n", "\n", "# Generate multichannel uncorrelated noise\n", "noise = np.random.normal(0,np.sqrt(10**-1),(M,N))\n", "\n", "# Create received signal array\n", "rec_signal = soi_matrix + noise\n", "\n", "R = corr_matrix_estimate(rec_signal.T, imp=\"mem_eff\")\n", "\n", "array_alignment = np.arange(0, M, 1)* d\n", "incident_angles= np.arange(0,181,1)\n", "ula_scanning_vectors = gen_ula_scanning_vectors(array_alignment, incident_angles)\n", "\n", "Bartlett = DOA_Bartlett(R,ula_scanning_vectors)\n", "Capon = DOA_Capon(R, ula_scanning_vectors)\n", "\n", "axes = DOA_plot(Bartlett, incident_angles, log_scale_min = -50)\n", "\n", "# DOA_plot(Capon, incident_angles, log_scale_min = -50)\n", "# Mark nominal incident angles\n", "axes.axvline(linestyle = '--',linewidth = 2,color = 'black',x = theta1)\n", "axes.axvline(linestyle = '--',linewidth = 2,color = 'black',x = theta2)\n", "axes.plot()" ] }, { "cell_type": "markdown", "metadata": { "id": "Wc7HZDX-xOqn" }, "source": [ "### 3 elements\n", "\n", "* BARTLET down to +/- 20 degree\n", "* CAPON down to +/- 12 degree" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 386 }, "id": "s7Nu9P6Cv0rD", "outputId": "9f50ad2e-7f71-408a-af24-28e0f82fbb59" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Minimum alias angle 0.00 \n", "Maximum alias angle 0.00 \n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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jftkZmZi2rRpaqG3oKAg3HbbbcjPz4cj1132anr88cfRs2dPtGjRQt3n5ptvVqvfn++98sorr8CR23zGjBln1emSSy5x+jYXdX3u5fT666/DEdqcgU8z+OabbzBz5kw17W/btm3o3bs3Lr74YqSlpcFZ/P333+qAt2HDBixfvlx9IY4fPx4FBQU17nfHHXcgOTnZfHrttdfgDLp3716jXmvXrjXf9s9//hO//vorvvvuO/U6yUHh6quvhqPbvHlzjTpLu4vJkyc7XXvL+1g+t/IDpi5Sr3fffRcffvghNm7cqIIA+YxL0GsiB8C9e/eq12nx4sXq4HLnnXfCkesuG1TKd9ozzzyjzn/88Uf1g2fixIln3fe5556r8V64//774chtLiTQqV6nr776qsbtztjmonqd5fTZZ5+pwEZ+1DlEm8t0drKtQYMGGe+9917zvysqKoytW7c2vvzyy0ZnlZaWJsskGP/++2/zdSNHjjQ++OCDRmcza9YsY+/eveu8LTs72+jh4WH87rvvzNft379fvTbx8fFGZyJt2759e6PBYHDq9pa2W7RokfnfUt+WLVsaX3/99Rrt7uXlZfzqq6/Uv/ft26f+bvPmzeb7LFu2zOji4mJMSkoyOmrd67Jp0yZ1vxMnTpivi42NNb799ttGR1VXvadPn2688sorz/k3emrzK6+80jhmzJga19lzm7PHx8ZKS0uxdetW1fVdfT8w+Xd8fDycVU5OjjoPCQmpcf2XX36JsLAw9OjRA08++aT6xegMZFhDuoXj4uLUr7yTJ0+q66XtpferevvLMFibNm2cqv3lfb5gwQLceuutNTb3ddb2ru748eNISUmp0cayX5AMaZvaWM5lqGPAgAHm+8j95btAeoic7bMv7wGpb3UyzCHDvX379lVDIuXl5XB0q1atUkP7nTt3xj333IOMjAzzbXpp89TUVCxZskQN49Vmr23OTUptLD09HRUVFYiMjKxxvfz7wIEDcNYd7h966CEMHz5cHfBMpk6ditjYWBUg7Nq1S+UGSLe4dI87MjnAzZ8/X335SXfunDlzcMEFF2DPnj3qgOjp6XnWQUDaX25zFpIDkJ2drfIenL29azO1Y12fcdNtci4HyOrc3d3VDwNneh/I0J6085QpU2psWvnAAw+gX79+qr7r169XQbB8Vt566y04KhnmkiHrdu3a4ejR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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "M = 3 # number of antenna elements in the antenna system (ULA)\n", "delta_theta = 20\n", "theta1, theta2 = 90+delta_theta, 90-delta_theta\n", "\n", "# Array response vectors of the test signal\n", "a_1 = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(theta1)))\n", "a_2 = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(theta2)))\n", "\n", "# Generate multichannel test signal\n", "# Notes seems to require some noise , if sigma is too low less reliable outcome?!?\n", "soi2 = np.random.normal(0,1,N)\n", "soi_outer = np.outer( soi1, a_1)\n", "soi_outer+= np.outer( soi2, a_2)\n", "soi_matrix= soi_outer.T\n", "\n", "# Generate multichannel uncorrelated noise\n", "noise = np.random.normal(0,np.sqrt(10**-1),(M,N))\n", "\n", "# Create received signal array\n", "rec_signal = soi_matrix + noise\n", "\n", "R = corr_matrix_estimate(rec_signal.T, imp=\"mem_eff\")\n", "\n", "array_alignment = np.arange(0, M, 1)* d\n", "incident_angles= np.arange(0,181,1)\n", "ula_scanning_vectors = gen_ula_scanning_vectors(array_alignment, incident_angles)\n", "\n", "Bartlett = DOA_Bartlett(R,ula_scanning_vectors)\n", "Capon = DOA_Capon(R, ula_scanning_vectors)\n", "\n", "axes = DOA_plot(Bartlett, incident_angles, log_scale_min = -50)\n", "\n", "# DOA_plot(Capon, incident_angles, log_scale_min = -50)\n", "# Mark nominal incident angles\n", "axes.axvline(linestyle = '--',linewidth = 2,color = 'black',x = theta1)\n", "axes.axvline(linestyle = '--',linewidth = 2,color = 'black',x = theta2)\n", "axes.plot()" ] }, { "cell_type": "markdown", "metadata": { "id": "vQ_0FTEzyWYh" }, "source": [ "### 4 elements\n", "\n", "Bartlett +/- 13 degrees\n", "\n", "Capon +/- 7 degrees" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 386 }, "id": "rF7OM0f6yYSH", "outputId": "f5df7085-1378-4c18-9bdb-c00028ccfac4" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Minimum alias angle 0.00 \n", "Maximum alias angle 0.00 \n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHJCAYAAACVLX1MAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAeIZJREFUeJzt3Qd8U1X7B/Cn6d570ZYWKFD23ioiU1TELegLKCLuASrqKyLwKrhw4BYBfRVx/N3gQJay9x6yS0v33iv5f56T3rxpm6ZJm/Te3Py+H6+hyU1yTm6S++Sc55zjotPpdAQAAAAAJmlMXw0AAAAADMESAAAAgBkIlgAAAADMQLAEAAAAYAaCJQAAAAAzECwBAAAAmIFgCQAAAMAMBEsAAAAAZiBYAgAAADADwRLILiEhgVxcXAybRqMhf39/io2NpREjRtATTzxBu3btMvsYV155pbjvpk2byFGdP39e1IFfDzXKz8+nBx98kOLj48nDw0PUlY+btb777jvDe2X27NnUWqTnlJMSytBc06ZNE2VfuXIlOTIuP9eD6wPOA8ESKMawYcNo6tSpNGXKFBo/fjx17tyZDh48SK+//joNGjRInFjPnj1Ljh4UclDkjO6991567733RDB84403imM9btw4qx/nk08+Mfz7888/p6qqKhuXFJw1gFD7DxZoPrcW3BfApu65554GX7a8dOGvv/5Kjz32GG3evJmGDh1K27dvp3bt2tXZ77PPPqPS0lJq27YtOaqYmBg6fvw4ubu7k9pwQPP999+Tl5eXCIADAgKa9Tipqan0+++/k6urK4WHh1N6ejr9/PPPIviyNz420HyLFi2ip59+mqKjo8mR3XDDDTR48GAKDAyUuyjQitCyBIrGv/K4lYm74Tp27EgZGRkiqKqPg6SkpCTy8fEhR8VBEtehQ4cOpDZpaWlUXV1NkZGRzQ6UpBaMmpoaGjNmDN13330NWprsiY8Nb9A8HCTx6+foQQaXn+vh6EEfWEkHILP4+HgdvxVXrFhhdr81a9aI/Xjbs2dPnduGDx8urt+4cWOd66dOnWp47MOHD+tuvfVWXVRUlE6j0ejmzZtn2K+qqkr38ccfi8cJDg7WeXh46BISEnT33XefLjk5udEypaSk6J544gld9+7ddX5+fjofHx9dx44dxfNu3bpV7MPPLZXb1CaV+dy5c+Jvfj1MuXjxou6hhx7SJSYm6jw9PXUBAQG6oUOH6j744ANddXV1g/2l5+WyFBcX655++mldhw4dRN0iIyN1U6ZMEeVvjuPHj+umTZuma9u2rXg8fs2uuuoq3VdffdVgX0vqbgmtVqtr3769uN+3336ru3DhgjiOrq6ujdaDH5/35+NaUlKimzt3ri4pKUnn7e1teJ2NX6ecnBzdo48+Kp6H68X3q18PSV5ens7Ly0uUwdzreNNNN4n7vfnmm4brzp8/r1u8eLFuxIgRuri4OPFcgYGBumHDhonjWVNTY/Kx6pfBGt98841u7NixurCwMJ27u7uuTZs2ujvuuEN39OhRk/vzZ4w/LzExMWJ/f39/Xbt27XQ33nij7ocffmjw+TW1Gb9+xp9FY/w55Ov5MjU1VTd9+nRddHS0eG27deumW7ZsWZ333aRJk8T7lz8DPXv21K1evdpk+blezz//vPiMcF25DiEhIbqRI0eafJ9K5Wtskxi/X0zZuXOn7pZbbhF14OcMDw/XXXvttbo//vjD5P7Gr8vZs2d1d955p6gfvyf4ffjvf/9bV15ebvK+0HrQDQcO4+qrr6aQkBDKzc2ldevWUb9+/Sy+77Zt20RLBP8avOKKK6isrEwkkbOioiKaMGGCSA738/MTj8tdPIcPH6YPPviAvvnmG/F8ffr0qfOY69evp5tvvlkkLkdERNDIkSNF4jLnPaxatUrsw92GiYmJIj/n22+/pZKSErrpppvE80iioqKaLP/u3btFfg/XnVvRJk6cSAUFBaLMXDfu4vrpp5/E89fH+3E5kpOT6fLLL6fu3buLrkzuuuSuTe4Ws+bX/po1a0S9y8vLRV4Zd4FlZmaKx9qwYYPoJjNu7eG6FxcX0//93/+Rr6+vuK81dZds3LhR5KyFhYWJ48Utcfya87H59NNP6dlnn230vlxWznk7duyYOP69evWinJycOvtkZ2dT//79xfHk14nfB6ZeT0lQUJDokvnyyy/pv//9r+hiqo+fg7sJ+XHuvPNOw/W8/9y5c0V3cqdOnUS+Hre+8XHZunUr/fHHH+L9Yotkbm7Ru+OOO+jrr78mT09PUS/u8v3nn3/oiy++EAnzvBnnj/F7mz9v3H3Kr9WQIUNEix53g/Lx539ff/31Yl8+njt27BDl5lbRyy67zPA41rTE8ftTes359c/KyqK//vpLtCTzMeHXiFsU27RpIwZ+XLhwQbxet99+u7j/bbfdVufxlixZIt6HXIYePXqI48XPwe8jrh+XmfeRcLkbe59a6uOPPxbfM1qtVnxf8HuOy/nLL7+I7YUXXqB58+aZvO+BAwfo0UcfpeDgYBo+fLj4rPNr+uKLL9LRo0fFZxxk1IqBGUCLWpbYqFGjxL7868ualiXeuGXF1C/2yZMni9v5119GRkad29544w1xG7cWGbfecGsTtwRIj1tRUVHnfvw4f//9t8l6cguSKY21LPGvSum+3NJVWVlpuO3MmTOiBYxve/bZZ+vcz7hFi1sUCgoKDLfl5ubqevfuLW576aWXdJZKT0831Ps///mPaO2R7N69W7Qw8W0fffSRRXWzhnScHnvsMcN1X375pbiOW8yMy1K/ZYk3boVIS0trsI/x68StDsavU1OtOuvWrRPXcWuVKW+99Za4nVuXjO3atUu0dNbHLSu9evUS9/n6668tKkNT+H3B9xk0aJBouajf2sQtc3zcuKVMwi1efJ/PP/+8wePl5+frtm/fXue6plpbLGlZkt7f3Mor+emnn8T13KrF75367zlurePbubW1vk2bNonPR30nTpzQxcbGivtxK5C179PG6nro0CGdm5ubzsXFRffZZ5/VuW3t2rWipYjvV7+Fyfg7iluRjL9n+D3i6+srbtu2bVujZQL7Q7AEDhUs3X777WLfq6++2qpgqVOnTia7qo4dOya+3LiZvrCw0ORzjh8/XjzGzz//bLiOT9h83XXXXWd1Pa0Nlv773/+K67mMpprjuUtKOqGUlZU1+FLnL9tLly41uB93X/Dt3H1mqYULF4r79OvXz+Ttr732miG4tKRulpK6vPgxjIMMfj24a6WxLj3jYOmvv/4y+djS68RdJqZOruYCFT5xS8fV1MlMCkh/+eUXi+v6+++/i/twV44lZTCHuxW5y5Ffu8a6Ch944AHxmEuXLjVc17VrV3EdB9WWsEWwxF26xu9fCQe5fPvAgQMbBMQcWEnHn7tlLfXhhx+K+zz55JM2C5a4+5Cv525KU7gLnW8fPXq0ydeFP1OmAn4OIPn2BQsWWFw/sD0keIND4eZtZm33BHdb8Qiq+tauXStG3HGXg9QtV580FxB3d0l+++03w3B4e5PmjuLuBu5GqY+7wbjpnrsT9+7d2+B27loylYzapUsXccldK9aWhbvWTJk+fbq4PHXqFF26dIlshacI4K60AQMGiG5ECb8ekydPbjLRm7tJuWvHHO42ad++vVXl4veh9FrUnz+Iu1V449fe1BQJFRUVoovu+eefF103d911lxgN+uGHH4rbT548SS3FXU7c5cxdWNz1Zun7e+DAgeKSu++2bNkiuvLsjbvWeLRkfTywg/FntP7n3s3NzTDM39T7jbvVuBudu2j5s8qvL2/c1War17j+Z6Ox6ROkz8bff/8tujHru/baa01+rzXncwq2h5wlcCicV8I4d8kajc2bIs3bxCfapkZVcQ6FhPMQWGuMjpK+JOtPlyDhL1i+LS8vz+QXamPTKUij0jgIsVVZOC9EyitLSUkR+SW2IB2bu+++u8FtfN0777wjToB8aSr/ypJ5c5o7tw4HOQsXLqSvvvqK3nzzTfL29hbXr1ixQlzyvGH1A3XOl+EcG86haUxhYSG1lPT+5hydpn5gGL+/eZj/oUOHxLQdvHGd+vbtKwIrDqCkE7gtNfY+lfL7Grtd+pFT/33MgSgfm/q5abZ+jS39bEijXLmcXCYO4O31OQXbQ7AEDoNbgPbv3y/+zQmb1pBOYI21VPXu3VsksprDE2M6Ip4E0pHt27dPtNCwjz76SLQymaojt6BwsrU0pYAlx9/afRoLsrhVhJPbOQmXW7o4MVpK8ucTtjGeD4xbOnkaDL7t/vvvF4MA+KTIQRUnXnPivL7XrWWk9zc/PrcumWMc+HPi/Z49e0TS/p9//ikSjXfu3CkuX3rpJRFMzZkzh1rzfWrN+5gDFw5G+T3x1FNPiQCPjxMHXvw4nEA/duxYm7zGtuLon1O1Q7AEDoO7zLj1hPGoGFuIi4sTl3wi4VYJS/GvQG7CP3HihDgR2ZPUfWJu9vJz587V2deeZeE6N1YWHnnHrUq2LItxi58ULJvb11SwZG8c9HCwxK1JHCxxqwa3gvIoRA58jPEILw6UuKVm+fLlDR6LuzBtRXp/cxmsXWZEWo5G6qbjlg1+DF6yhru1eLSYUucE49efAyUerfjyyy/b9TWW8Pv9zJkz4rNh3FUskT4z3NVobcs4yA+hLDgEPgk//vjj4t+jR48WLUG2wHkQjIfdW9PMLeWg8FBhS0nD0K3N/5BOVtzNY6qM3JrBQSR3R1gznUJzSGXhofqmSCd/zjOxRbDEJzyphYa7g2oHpTTYuP6cv8StIdx91Np4Ogju/uOA6eLFi4YuuPqtSkwKJhvrdjHVctZc0nQWnE/D0zu0BJ/kORDt2bOnaLEyfp2b+962F+k15nUI6+P3i/Seqq8l9ZA+G40FpdJng3PnONcKHAuCJVA0abkTTjjlX4OcLGtNgNIUTurlEx2f4DhR2tS6bTw3Es9Hw60BklmzZonghIOs5557rsH6ZHxi4sRYY7wwMOM5U6xxyy23iBMrJ7Dy8xp/kXOLkrSY7MMPP2wyQdaWZsyYIbqLuGuMu2OMuzG41ec///mP+PeTTz5pk+fjPCSeY4ePOwfJjeFcqeuuu07821Rrjb1xFx4n4HMQwS0ZPACAZ5OvP/cPk/J9OI+I530yxt2MHBTbCs+Yzu8Lfg/z68Nzh5lKNOf3MbcYSl577TWT+VS8j9QqYxyISO/t+vWRi/Qa81xVPH+VhBOrOaHeOJndGM+vxgETL6MjBVyW4jmSOAj64YcfGgS83O0nJe7zwuDgeBDegmIsW7bMMKKEv8C5G4NPytKXFv9y4xOhqV+LLcGtAHxC5qCMuys4d4mTNDkQ4OCJJ22srKwUa4PxyYdx8MJfxNwVwZPGcdl54j6eKJGTvzlw4O4Y4wn6OCjj0Uk8OSF3I/IINimwqN9VY4xbTPi5uDXr/fffF92RvDYVj37jlgxubeL8i8Ymu7Mlrj8HjhzA/fvf/xaTK3LAKU1KyYEct6ZwUGXLLjh+zUyNZjTGidT8OvGJ6pVXXjE7oaQ9cL35hPjuu++Kv/n4mxphya8XT+j4448/GiYu5G4Zzsvirl3u4uL3lK0sXrxYBAzcmiLl5vGoPz6xcxI+Py8HU/z+l/KWOOjl9yX/zYEHB4McrEsj4/i15m5ECb8fOZmf3/d8PecU8meB39e2CpytwYEht7Ly6FCe9JMneeSJJjnviuvB+Vamuue4zDzhKb+P+LXiz6+0hBJ/xs3hOvOx5xy0f/3rX/TGG2+I14+/Dzg44+8TnpTSVikE0MrsMB0BgFVMLZfAcwPxvEI8f9Ls2bPFJH7mWLLciTk8WeWqVavEnEq81ADPuRMaGiqWMbnrrrt033//fZ3JICU8twsvj9G5c2cxlw0vecJzOt19990NJu7j51i0aJFYwkGaM8i4zE3N8cITYT744IOGpTh4XqUhQ4bo3n///ToT+Vk6901L5j7i+an4cXlyP36tgoKCxESGjS090ZznOn36tJgDi+935MiRJvfn14CXluD9peUsjJc7ackcQZbOccTHtv5xNYXfS6+++qquR48eYokcnitozJgxYsJCc69VcyalNJ4YkecAkpYv4WPWpUsXMXcZv/d5ORgJT0bJ73t+/3PZeGkRLg/Pb8afBVPzAfH8VxMmTBDHgJeAac5yJ6Y09Rlu7LNfVFQkJuSUPpsRERG6iRMnimVczL0veG6qmTNninmf+HWydrmTHTt26G6++WaxrBJPUsnfI9dcc41Fy5205P0J9uXC/2vtAA0AAADAUSBnCQAAAMAMBEsAAAAAZiBYAgAAADADwRIAAACAGQiWAAAAAMxAsAQAAABgBialtAGetZcnOuMJ6Jpa2RsAAACUgWdP4gl+eVJVc4sZI1iyAQ6UpAUrAQAAwLHwklfSsj2mIFiyAWlJA36xed0sW8k9n0vbj26nId2GUEiCc61SzWut8XpKvDQAL0HgLJy13vaoOy81wct88LpyxuueyaGpsjjrcXfWejPU/Q+L615wsYC2fXqKhk7tSIFxgTYtS2FhoWjsMLU0kTEESzYgdb1xoGTLYKnKv0qsS8QH0ZaP6ygfJq4719uZvkictd72qDuvw1VcXEx+fn6yf36aKouzHndnrTdD3X0srrvOX0c+nn4U4G/bc6yxplJoECwBgCrde++9pBRKKgsAWA+j4QAAAADMQLAEAAAAYAa64QBAlTihuqamhlxdXUViNcoCAM2FliUAUKUBAwaIUS58KTcllQUArIdgCQAAAMAMBEsAAAAAZiBYAgAAADADwRIAAACAGQiWAAAAAJwtWHr33XcpISGBvLy8aNCgQbRr1y6z+3/zzTdi7Sbev0ePHrR27dpWKysAAAAom+qCpa+++opmzZpF8+bNo3379lGvXr1o7NixlJmZaXL/bdu20aRJk2j69Om0f/9+mjhxotiOHDnS6mUHAAAA5VFdsLRkyRKaMWMG3XXXXdS1a1f64IMPxIJ9y5cvN7n/W2+9RePGjaMnn3ySunTpQgsXLqS+ffvSO++80+plBwDHVKPVUU5xBWm1OrmLAgB2oKoZvCsrK2nv3r30zDPPGK7TaDQ0atQo2r59u8n78PXcEmWMW6J++OGHRp+noqJCbJLCwkLDSsq82Up1TbXh0paP6wik+qLezsOeda//mMUV1bTxZJYIbnw83CgywJO6RPuTu6tlvx+Lyqto48ls+uNYBh25VEjphRUiYIoP8aHJA2Ppxj4xFORjejV1U/Vz1uPurPVmqDtZXHc+B+o0WrucCy19PBedTqean0KXLl2imJgY0bU2ZMgQw/VPPfUUbd68mXbu3NngPh4eHvTpp5+KrjjJe++9R/Pnz6eMjAyTz/PCCy+I2+tbtWqVaMUCAPmlpqYalhjh7wVWUkW0OU1Df6e7UGmNS539PTQ6au+vow4BOkoM0FFbPyK32tipRkuUU0F0ptCFDua60D8FLlSjq3t/Yz6uOnq4ew218Wm8LAAgv9LSUpo8eTIVFBRQQECAc7QstRZuuTJujeKWJV7KYMyYMWZfbGvlXsilHUd30OBugykkPoScCUf769ato9GjR5O7u+lf6GrkrPVujboXlFXRDe/voIt5ZeJvbgWKCfaikooaupBTSvllVXSiwIVOFPzvPr4eruTr6UY5JZWi5chYh3BfGtM1gi5PDKO4EG/y9XCjNYfTacW283Q2u5S+Tgmg7+4fTH6eTX/NOutxd9Z6M9R9ncV1L0wppK0rT9GwaR0pINZ251jjnqGmqCpYCgsLE7/c6rcI8d9RUVEm78PXW7M/8/T0FFt9fNBt+aZ3c3UzXDrbh8ler6mjcNZ626vu3ID+7A8HRaAUE+RNz13ThcZ0iyJXjb51iLvjTmYU0c6zObTzXC7tOpcrAqSSyhqxMS93DXWO9Bf3G9stkhIj/Bs8z7+GtqPxPdvQtUu30LmcUnrup+P0zqQ+5OLiIlvdHYGz1puh7u5N7sfnQBetxi7nQksfT1XBEnep9evXj9avXy9GtDGtViv+fuihh0zeh7vr+PbHHnvMcB1HvMbdeADg2FZuOy/yizxcNfTBnf2oR2xgnds1GhfqEh0gtmnD2ongKr+0SrRGFZVXU7i/p8hrsiToCfXzpHcm96XbPtxOaw6l0eD2ofSvwfF2rB0A2JuqgiXG3WNTp06l/v3708CBA+nNN9+kkpISMTqOTZkyReQMLFq0SPz96KOP0vDhw+n111+na665hlavXk179uyhjz76SOaaAEBLcA4h5yPkVbjQR5eixXXPjk9qECiZwkFRsK+H2JqjX3wwPX11Ev1nzXF6Z8MpotN/U0V5uchp5PwIAHAsqguWbrvtNsrKyqLnn3+e0tPTqXfv3vTbb79RZGSkuD05OVmMkJMMHTpUfKk+99xz9Oyzz1LHjh3FSLju3bvLWAsAaCke2MGJ1X4hERQ6YzmN6hJBU4cmtNrzTxmSQO9vOkMZhRU064mnKDsjTfxQQ7AE4HhUFywx7nJrrNtt06ZNDa675ZZbxAYA6lNepc85enBEosW5Q7bg4aahm/vH0oebz1JppX4aEABwTKqblBIAwBhPjsK5SL3jglr9uScNaCsuK6q1rf7cAGA7CJYAQPUmD4xr1VYlSUKYLw1LDCVSzWx2AM4JwRIAqFIVzyQpkrWJru8j30SQkwbqW5cAwHEhWAIAVSo1zI/kSgFe8s1jM6ZrlJiagFWiOw7AISFYAgDV4aBESuz28XCVtSyc6O1Zu24KcpcAHBOCJQBQnf3JeSKxm1m6OK69AyZWWds1CACORf5vEQAAG9t6JoeURGpZ4jwqnhUcABwLgiUAUJ1tp7PJ1S+YQsKjzK7z2FraREeTZ2AYufoG046zygrkAKBpCJYAQFWKK6rpwMV8ip76Jh04cUYsXyQ3LsMTKzeIMnEgBwCOBcESAKjKrnM5VK3VUVyIN8WF+JBSDOsQpsguQgBoGoIlAFCVradz6gQnSjGkQ6iY8+l0ZjFlFJbLXRwAsAKCJQBQla213VzDEpUVLAX5eFC3NgHi39vOoCsOwJGociFdAHBO2cUVdCK9SPz727eep8+KCigkJIQ+/PBDWcs1c+ZMys3NpcxiF6JeU0Xr1w19YmUtEwBYDsESAKiGNNIsKcqf1n/+G6WmplJMjHxLnUjWrFkjyhIWGU2+vaaKBHQAcBzohgMA1difrA9CBrULISVyd9Uve3Imq5hKK6vlLg4AWAjBEgCoxuHUAnHZPSaQlEjj4kIR/p5idvFjlwrlLg4AWAjBEgCoglarMwQgPWKVGSwZB3JHagM7AFA+BEsAoArnc0rEhJS8tEhiuB8pPlhCyxKAw0CwBACqIAUfXaIDyE0Bi+c2pnvt9AFoWQJwHMr9RgEAsIIUfPRQaL5S/ZalU5nFVF5VI3dxAMACCJYAQBUOp0jJ3fqWG6WKDvSiEF8PqtHq6GTtnFAAoGwIlgDA4el0OjpySdkj4SQuLi6GmbylMgOAsmFSSgBweMm5pVRUXk0erhrqFOkvrps0aRLl5eVRcHCw3MVrUBbuKvz7VDbylgAcBIIlAFDN/EpJ0f7kXpvc/eqrr5JS1C/L/6YPwIg4AEeAbjgAcHhS0KH0LjhJ9zb6cnLOUmW1Vu7iAEATECwBgMOTurOkIETp4kK8KcDLjSprtHQqE0neAEqHYAkAHD65++glxxgJZ5zknRStL+upjGK5iwMATUCwBAAOLbu4kvJKq8jFhQzJ3SwpKYkCAgLEpdxMlaVjhH6WcbQsASgfgiUAcGhSsNE2xIe83F0N1xcXF1NRUZG4lJupsiRKwRJalgAUD8ESADi005nFdVpqHEXHCP865QcA5UKwBAAOTWqZ6WjUBecIOkbqg7sLuaVUgRFxAIqGYAkAVNEN52gtSxH+nuTv5SaWPbmQUyJ3cQDADARLAKCOlqXabi1HwSPipADvdCaCJQAlQ7AEAA4rp7iCckoqxb87RPiSo5GSvE9nIW8JQMkQLAGAw5KSo2ODvcnHw/FWb/pfkjdalgCUDMESADisUw46Ek6SWJvkjZYlAGVDsAQAjj9tgIONhJNIQd75nFKq0cldGgBojOO1WwMA1BsJJ+X+GPvggw+orKyMvL29ZSiZZWVpE8jdh65UWllD2eWyFQ8AmoBgCQBUMBKuYbB07bXXklI0VhaNxkUEeodSCii91KXVywUATtYNd/78eZo+fTq1a9dO/Hrr0KEDzZs3jyor9SNlGnPllVeKIbzG23333ddq5QaA5ikoraLMogqH7oZjieH6QC+jTO6SAIDqW5ZOnDhBWq2WPvzwQ0pMTKQjR47QjBkzqKSkhF577TWz9+X9FixYYPjbx8enFUoMAC1xOkvfBdcm0Iv8PB33q0xK8k4vQ8sSgFI57jdMPePGjRObpH379nTy5El6//33mwyWODiKiopqhVICgK274BIbaVXau3evaFn28PCgfv36tXLpLC/L/1qWECwBKJVqgiVTCgoKKCQkpMn9vvjiC/r8889FwHTdddfR3LlzzbYuVVRUiE1SWFgoLquqqsRmK9U11YZLWz6uI5Dqi3o7D2vrfipD/7lLCPE2eZ/rr7+eUlNTKSYmhs6dO0dyMleWuCBPcZlVTk2mDagN3u+ouyX4HKjTaO1yLrT08VQbLJ0+fZqWLl3aZKvS5MmTKT4+ntq0aUOHDh2iOXPmiBap7777rtH7LFq0iObPn9/g+j/++MMuXXg7ju4gOkpOad26deSMnLXe1tR95wlOudRQacY5Wrv2bIPby8vLDZdr164lOZkrC6+h60KuVFHjQt+t/ZMCPMjp4P3unNZZU/e+RFsOZRAdsm0ZSktLLdrPRafTKXp2j6effppefvlls/scP36ckpKSDH/zL7jhw4eL5O1ly5ZZ9XwbNmygkSNHimCLk8QtbVmKi4uj7OxsCggIIFvJvZArAqXB3QZTSHzTLWRqwtE+f5BGjx5N7u7u5Cyctd7NqfvYt7bS2ewSWjmtHw3rENrgdh7soZSWpabKMuL1vyglv5w+m9qHhiSGk7PA+x11d7eg7oUphbR15SkaNq0jBcTa7hwrHruwkMLCwkRPlLnzt+JblmbPnk3Tpk0zuw/nJ0kuXbpEI0aMoKFDh9JHH31k9fMNGjRIXJoLljw9PcVWHx90W77p3VzdDJfO9mGy12vqKJy13pbWvbpGSxfz9L8IEyMDmtxfSa+lqbIkhPmKYCmloEJRZW0teL+j7ubwOdBFq7HLudDSx1N8sBQeHi42S/AvNw6UOIFyxYoVpNFYPzPCgQMHxGV0dLTV9wWA1pGaX0ZVNTrycNOIiR0dXbtQH9pyOkfM5A0AyqOaeZY4UOJut7Zt24o8paysLEpPTxeb8T7cXbdr1y7x95kzZ2jhwoVipArP0/TTTz/RlClT6IorrqCePXvKWBsAMOdctn7h2XahvmJiR0cXH6rPdUSwBKBMim9ZshT3f3LXGW+xsbF1bpPSsriflJO3pYQuHsb7559/0ptvvinmY+K8o5tuuomee+45WeoAAFYGS2G+pAYJUrCUjWAJQIlUEyxxXlNTuU0JCQmGwIlxcLR58+ZWKB0A2CVYCldJsFQb9F3ILSWtVqeK1jIANVFNNxwAOGc3nBrEBHqRxkVHFdVaSivEiroASoNgCQAcztksdbUsublqKKx2gO352kAQAJRDNd1wAOAcyqtq6FJBWZM5Szz/Gne78+LYcrOkLOHeOsosdxFzRw1LDGvV8gGAeQiWAMChJOeWEqce+nu5Uahv49Nd+/ubXjNODpaUJdxLf4mWJQDlQTccADhkF1z7MF9FtBrZSriXrk4+FgAoB4IlAHAoaps2QBJRO7cmWpYAlAfdcADgUM5lF9cZbt+YJUuWiHWfeL2nWbNmtVLpml8WqWWJuxl5ORdO+gYAZUCwBACqbFniAEVavFYJwVJTZQn0IPJy11B5lZZS8sqaDAYBoPXgpwsAOJRztbNcq60bjuehjA/Rz+SNvCUAZUGwBAAOo7iimrKLK8S/1djy0rY2WLqQg2AJQEkQLAGAw5CCiBBfDwrwcie1wYK6AMqEYAkAHMaF2iBCCirURuqG4yRvAFAOBEsA4DDO17YsJahkTbj64kO969QTAJQBwRIAOIzk2pYlKbdHbaR6XcwtpRqtfioBAJAfgiUAcLyWpTB1BktRAV7k4aqhqhodXcrXr38HAPJDsAQADtiypM5uOFeNC8WFeNfJzwIA+WFSSgBwCOVVNXSpoFz8O8GCBO++fftSXFwchYeHt0LpbFcWzsc6k1UiWtEu6xjWKuUDAPMQLAGAQ+A8Hubv6SamDmjKTz/9REphTVnia5PXMSIOQDnQDQcADkHqlmob6kMuLi6kVoa5ljCLN4BiIFgCAIeg9mkD6gdLyFkCUA4ESwDgEKRuKbVOSCmRgsELuSWkxfQBAIqAnCUAcAjSEiCWBksTJkygrKwskVQtd/6SNWWJCfYWo+LKq7SUWVRBUYFerVZOADANwRIAONS6cFICdFP27dtHqampFBMTY+eS2bYs7q4aig32Ft1wXGcESwDyQzccACheVY2WUvPKnCJnyTggRN4SgDIgWAIAxePZrKu1OvJ001CEvyepnbSgLtaIA1AGBEsA4FD5ShqNeqcNkGBEHICyIFgCAMVLrm1hUesyJ/VJXY1oWQJQBgRLAOAwLUuWLHOiBtJCwbwWnk6H6QMA5IZgCQAUT+qOig9zjpal2GCepZyoqKKacksq5S4OgNNDsAQAjjNtQG3is9p5ubtSdIBXnVY1AJAPgiUAUDSexfpC7ezdzjBtQMPpA5C3BCA3TEoJAIqWUVROldVactO4UJsgyydonDVrFhUWFlJAQIBdy2evsnDe0vazOWhZAlAABEsAoGjns/XBAs9q7eaqsSpAUYrmlEVqWZJGAgKAfNANBwCqWuZELaSRf2hZApAfgiUAUDQpX8nSBXTVAjlLAMqBbjgAUGXLUlFRkZijyMXFhfz9/e1UOvuVpW3tyL+80ioqKK2iQB93O5cSABqDliUAcIg5lqydkLJLly4UGBgoLuXWnLL4erpReO06eBdy0boEICcESwCgWNwaY5iQ0sm64YwDRKwRByAvBEsAoFg5JZVUXFEtZrPmWa2dDfKWAJRBVcFSQkKCyAkw3hYvXmz2PuXl5fTggw9SaGgo+fn50U033UQZGRmtVmYAaJzUotIm0FvMau1sMCIOQBlUFSyxBQsWUFpammF7+OGHze7/+OOP088//0zffPMNbd68mS5dukQ33nhjq5UXABontahIyc7OBi1LAMqgutFwPNIkKirKon0LCgrok08+oVWrVtFVV10lrluxYoVIwtyxYwcNHjzYzqUFAHOkFhWezdoZSXlaaFkCkJfqgiXudlu4cCG1bduWJk+eLFqO3NxMV3Pv3r1UVVVFo0aNMlyXlJQk7rt9+/ZGg6WKigqxSXgZA8aPxZutVNdUGy5t+biOQKov6u3cdT+fVSwuY4O8WvSaKOn1NFWWxo57mwAPcZlVVEH5xWVihJya4P2OuluCz4E6jdYu50JLH09Vn7xHHnmE+vbtSyEhIbRt2zZ65plnRFfckiVLTO6fnp5OHh4eFBQUVOf6yMhIcVtjFi1aRPPnz29w/R9//EE+Prb/Bbzj6A6io+SU1q1bR87IWetdv+4Hz3Kekgtlnz9Ba4uOW/U4nI8oXa5du9bm5bRHWUwdd183VyqpdqFVP/1BMSqdxBzvd+e0zpq69yXaciiD6JBty1BaWqqOYOnpp5+ml19+2ew+x48fFy1Cxusv9ezZUwRCM2fOFMGNp6d+vhJb4CDM+Lm4ZSkuLo7GjBlj00U7cy/kikBpcLfBFBIfQs6Eo33+II0ePZrc3Z1nMj5nrXdjdX/h4Ea+hSaOGkZdo637bHl5eRkux48fb5cy26os5o778os76WBKAbXt2o/GdoskNcH7HXV3t6DuhSmFtHXlKRo2rSMFxNp2YWypZ8jhg6XZs2fTtGnTzO7Tvn17k9cPGjSIqqur6fz589S5c+cGt3NuU2VlJeXn59dpXeLRcObynjjwMhV88UG35ZvezdXNcOlsHyZ7vaaOwlnrbVz3grIqMXs1S4wMJHf35n9dKem1NFcWU8e9XZivCJZSCioUVQ9bwvsddTeHz4EuWo1dzoWWPp7ig6Xw8HCxNceBAwdIo9FQRESEydv79esnXqj169eLKQPYyZMnKTk5mYYMGdKicgNAy0gjwHgW6+bk6vz444/ixxC3MMutJWVpixFxALJTfLBkKU7I3rlzJ40YMUKMiOO/Obn7zjvvpODgYLFPamoqjRw5kj777DMaOHCgWH5g+vTpokuN85y4C42nGuBACSPhAOR1LlsfHLSzck044x9DStGSshjmWsrGiDgAuagmWOJusdWrV9MLL7wgRqq1a9dOBEvGuUXcT8otR8YJXW+88YZofeKWJb7f2LFj6b333pOpFgAgceZlTkzNtZSci2AJQC6qCZZ4FBzPjdTUDN+81pQxTrh89913xQYAynG+ttspIUylQ8CsbFm6VFBG5VU1TjmTOYDcVBMsAYC6nK/thktoZjfcL7/8QmVlZeTt7U3XXnutjUvXemUJ8fUgf083KqqoppS8UkqM8LdbOQHANARLAKDKbrj77rtP5CnGxMRQSkqKjUvXemXhNS7jw3zoSGqhyFtCsATQ+lS3NhwAOL7C8irKKakU/3b2bjgWH+Jbp2sSAFoXgiUAUJwLtSO/wvw8yU9lS3w0h9S6hiRvAHkgWAIA5SZ3O/lIOImUt4UFdQHkgWAJAJSb3I0uuDotS5iYEkAeCJYAQHGkFhS0LFGdoDElr4yqarRyFwfA6SBYAgDFwRxLdUX4e5KXu4ZqtDpKzSuTuzgATgfBEgAojtTd1Nw5ltRGTB9QOyLuApK8AVodgiUAUJSi8mrKLtZPG+DsS50YQ94SgHwQLAGAokjD48P8PMjfy73Zj+Pn5ycW1eZLudmiLFKXJBbUBWh9Fk1gEhISYnWT8b59+yg+Pr655QIAcvaZu1vWBXfixAlSCluUBS1LAAoPlvLz8+nNN9+kwMDAJvflhWofeOABqqmpsUX5AMBJR8KhC66xuZYQLAG0Nounxr399tspIiLCon0ffvjhlpQJAJyYlMDcDsnddbQN0QePF3PLxKg4V42L3EUCcBoWBUtarXXzehQVFTW3PADg5KScpXhMG1BHmyBvcnd1ocoaLaUXllNMkLfcRQJwGlh0CQAU2Q3X0palJ598kvLy8ig4OJheffVVG5VOvrJwS1JciA+dzSqhC9klCJYAlBws5eTkUGhoqPj3xYsX6eOPP6aysjKaMGECXX755fYoIwA4ifIaMkwb0LaFOUtffvklpaamUkxMjOzBkq3KwnlLHCxxQDk00aZFBABbTB1w+PBhSkhIEHlLSUlJdODAARowYAC98cYb9NFHH9GIESPohx9+sPThAAAayC7XX4b4elCgd/OnDVArjIgDUHiw9NRTT1GPHj3or7/+oiuvvJKuvfZauuaaa6igoEA0L8+cOZMWL15s39ICgKplleuTlrEmnGkYEQeg8G643bt304YNG6hnz57Uq1cv0ZrEUwRoNBrDCLjBgwfbs6wA4CQtS1jmxDSpa1KaiwoAFNaylJubS1FRUeLfPAutr6+vSFaU8L8xCg4AWiKrrLZlCSPhTJKCSA6WeE47AFDgcic8M7e5vwEAWiK7thsOE1KaxiPgeFRcWVUNZRVVyF0cAKdh1Wi4adOmkaenp/h3eXk53XfffaKFiVVU4IMLAC2ThW44szzcNCJg4rmoeERcRICX3EUCcAoWB0tTp06t8/edd97ZYJ8pU6bYplQA4HRKKqqpsEpK8Eaw1BhuddMHSyU0sJ1163YCgJ2DpRUrVjTzKQAAmpacWyYug33cKdAH0waYC5b+PkWUjCRvgFaDGbwBQBGk4fC2ylfiqU14YEpIiPytL7YsC6YPAFBosHTjjTda/IDfffddS8oDAE7eshRfu2BsS3344YekFLYsS7zRiDgAUNBouMDAQMMWEBBA69evpz179hhu37t3r7iObwcAaMmacLYKltRKmrCTW5YwfQCAglqWjPOV5syZQ7feeit98MEH5OrqKq6rqakRE1RyIAUA0BwXcmuDJUwbYBYvpsuzthSVV1NeaZVYGgYAFDTPElu+fDk98cQThkCJ8b9nzZolbgMAaA6pWwnBknle7q4UXTtlAPKWABQaLFVXV9OJEycaXM/XabVaW5ULAJxs2oDM2kkWbbUuXP/+/Sk2NlZcys3WZZHyls5nI1gCUORouLvuuoumT59OZ86coYEDB4rrdu7cKRbR5dsAAKx1rvak7+emo0Bv20wbkJ6eTqmpqaQEti5L+3Bf2n42h85mIVgCUGSw9Nprr4k14l5//XVKS0sT10VHR9OTTz5Js2fPtkcZAUDlzmQVi8twb7lL4hja1a6ddzZb/7oBgMKCJY1GQ0899ZTYCgsLxXVI7AaAlpBaSCK8MLrLEh3C/cQlWpYAHGBSSgRJAGDLbrhIbwRL1rQscYK3VqsjjQaLmgPInuDdt29fysvLs/hBL7vsMsXkCgCA8kndSRHohrNIbLA3ubu6UHmVltIKa1cfBgB5W5YOHDhABw8etHiqft6/okI/sgUAwByeWPFcbXdSOLrhLOLmqhEj4k5nFtPZrGKKCUKUCaCIbriRI0daPFusC8+YBgBgAZ4yoKSyhlw1LhSmnz4ILOyK0wdLJXR5x3C5iwOgahYFS+fOnbP6gXlOEQAAS0fCxQZ5k5umSu7iOAyePsA43wsAZA6W4uPjSek2bdpEI0aMMHnbrl27aMCAASZvu/LKK2nz5s11rps5c6ZYzgUA7E8a0dUujCej1I+whaa1r03yloJNAFDoaDglGTp0qGHeJ8ncuXPFAr9NzZo7Y8YMWrBggeFvHx8stwDQ+sGSL5ENU5ZeeeUVKi0tVcTn2R5laV87fQBalgDsTzXBkoeHh5gsU1JVVUU//vgjPfzww03mUPEXmPF9AaD1nKsdCSdalrJs97iTJ08mpbBHWaTpA1Lzy6i8qkasGQcAClkbzlH89NNPlJOTY9ESLF988QWFhYVR9+7d6ZlnnhG/AAGgdZytbRmRupXAMqG+HhTg5UY87kZahBgA7EM1LUv1ffLJJzR27NgmE835Fx/nZLVp04YOHTpEc+bMoZMnT9J3333X6H14WgTjqRGkmcy5NYs3W6muqTZc2vJxHYFUX9Rb3SqqtXQxV3+ijwv0oBwnqrstjntCmA8dSimkf9ILqH2o4w0ldLb3uzHUnSyuO58DdRqtXc6Flj6ei87S+QCM5Ofn07fffisW0+U14Xj+pX379lFkZCTFxMSQLT399NP08ssvm93n+PHjlJSUZPg7JSVFBEBff/013XTTTVY934YNG8Q0CadPn6YOHTqY3OeFF16g+fPnN7h+1apVisiPAHAU6aVEiw66kadGRy8PrCFbzjrCE+PW1NSQq6urzb+XlFKWz09paHe2hq6Jq6ExsZijCsBa3JPEjSYFBQVmVyWxOlji1pdRo0ZRYGAgnT9/XrTCtG/fnp577jlKTk6mzz77jGwpKytLdKeZw8/POUuShQsX0tKlS8UXlLu7dSuYl5SUkJ+fH/3222+iZcrSlqW4uDjKzs626RIwuRdyacfRHTS422AKibdsQlC14Gh/3bp1NHr0aKuPoSNztnqvO5ZJD3x5gLq3CaCv7+ln07q3a9dOfAdwcNKc6U9sqamyNPe4v7vpLL25/jTd0KcNvXJjd3I0zvZ+N4a6r7O47oUphbR15SkaNq0jBcTadpk1Pn9zGk5TwZLV3XCzZs2iadOmidEd/v7+huvHjx9vlyTG8PBwsVmKY78VK1bQlClTmvUG5NnHWXR0dKP7eHp6iq0+fj5bvundXN0Ml872YbLXa+oonKXeF/L0S3V0iPAz1NcedVfSa2muLNbWvWOk/sv9XHapoupoLWd5v5uCurs3uR+fA120GrucCy19PKsTvHfv3i3mIaqPfzGlp6eT3LgbjX+53XPPPQ1u41923F3H8y4x7kbkVqi9e/eKVjJOCucg64orrqCePXvKUHoA58IzULMOtcPgwTodIv4311IzMioAwEJWtyxxi4qU0Gzsn3/+saoFyJ6J3TznknEOk3HTH3cbSqPduOvuzz//pDfffFN0v3FXGuc4cZciANjf6doJFRMjECw1d/oAjQtRUXk1ZRVVUESA4yV5A6gyWJowYYKYwJGTpxnPYcS5SjyKzNpkanvgJOvGJCQk1Pn1xcFR/dm7AaB18GfxTG3LEoKl5vF0c6W2IT50PqdUBJ4IlgDsw+puuNdff52Ki4spIiKCysrKaPjw4ZSYmCjyl1588UX7lBIAVLmAbnFFtVhANz4Uo0ibS+rClAJPAFBAyxKPguMs9i1btoiRcRw49e3bV4yQAwCwNl+JW0a4haSqSit3kRwSt8qtP5FpeD0BQEGTUl522WViAwBoDiR32waPJDTO/wIAmYKlt99+2+IHfOSRR1pSHgBwsmAJ+UotI71+ZzKxoC6ArMHSG2+80WCiSB5RFhQUZJjRm2eu5jwmBEsAYAkES7YhtcylF5ZTUXkV+Xs555w9ALIHS8YzzvJos/fee08M0e/cubO4jofjz5gxw+T8SwAAckwbwHPCSUuMyM2eZQn0dqdwf08xdcCZrBLqHaf/EQsAMuYszZ07V6wLJwVKjP/NrU8333wz3XHHHTYsHgCoUUFZlTi5sw7h+okVbc3cLPytzd5lSQz3E68nt9YhWAJQwNQBaWlpVF1d3eB6/tWUkZFhq3IBgBN0wUUFeKHbyJZ5S0jyBlBGsDRy5EjR3bZv3z7DdbxcyP3334/pAwDAItJJHflKtiG9jpg+AEAh3XDLly+nqVOnUv/+/Q0L0HFL09ixY2nZsmX2KCMAqIw0gaK9uuDYRx99JOaB8/Pzo3vvvdduz6OEsmBiSgCFBUu8/tvatWvFWnAnTpwQ1/E6bJ06dbJH+QBAhVpjJBwvy8SLZ/Mi33IHS/Yui/Q6XsgtpcpqLXm4Wd1pAAD2mJSSgyMESADQkpFw0oSK0DKRAZ7k5+kmlo+5kFNCHSP95S4SgHMHS3fffXeT3XQAAI0pr6qhi7ml4t/IWbINXtCcA8+DF/PpVGYxgiUAuYOlvLy8On9XVVXRkSNHxMSUV111lS3LBgAq7YLT6oiCfdwp3M9T7uKoRqfaYOmfjCIa30M50yYAOGWw9P333ze4TqvVitFwHTp0sFW5AEClTmUWiUtu/eAWEbCNTrWtSRwsAYBt2SQLUKPR0KxZsxosiwIAUN/JdH2+UqdIdMHZUqcoKVjCiDgAW7PZkIkzZ86YnKwSAMDYqdqWj87Iq7EpKfg8n10iRsQBgIzdcNyCZEyn04lZvdesWSPmXwIAMOdkbbCEJGTbErOhe7pRUUU1ncsuoc61LU0AIEOwtH///gZdcDz30uuvv97kSDkAcG4lFdWUkldWJ8cGbIPzv7grbu+FPBGQIlgCkDFY2rhxow2fHgCccTLKMD9PCvH1sOtz8TxwgYGBFBkZadfnUVJZuCuOgyWpqxMAZAqWeHqA7777joKC6q5sXVhYSBMnTqQNGzbYqGgAoNYuuNZI7lbSd1FrlaVjBEbEASgiwXvTpk1UWVnZ4Pry8nL6+++/bVUuAFAhqcUDXXD2nj4AI+IAZGlZOnTokOHfx44do/T0dMPfNTU19Ntvv4l1jwAAGnOy9iSOYMk+OkXVrhGXUyJmSvdyd5W7SADOFSz17t1bJBDyZmqmbm9vb1q6dKmtywcAqmxZwhxL9sAzogf5uFN+aRWdySqmbm0C5S4SgHMFS+fOnRPTBLRv35527dolRsBJPDw8KCIiglxd8SsGAEwrLK+itILyVps24I477qDs7GwKCwujL774wu7Pp4SyiBFxEf6063yuyFtCsATQysFSfHy8YWkTAIDmtirxfECB3u52f77NmzdTamqqItIDWrMs3BWnD5aQtwTQqsHSTz/9RFdffTW5u7uLf5szYcIEW5UNAFREOnl3RBdc6yR5p2NEHECrBks8JQAndHNXG//bXBMwJ3sDANR3svbkjeRu+5JeX2maBgBopWDJuOsN3XAA0BzH0wrFZZfoALmLompdovSvL8+UznliAV727/IEUDubLaQLANAYHhzyv2AJLUv2FOjjTm0CvcS/0RUH0IotS2+//bbFD/jII4+0pDwAoEI8Cq6wvJpcNS6UGIGcJXtLig6gSwXlIkDtnxAid3EAnCNYeuONNyx6MM5ZQrAEAPWdSNe3KnUI9yVPN0wxYm9JUf604UQmHUfLEkDrBUs8xxIAQHMdT9OftJGv1HotS+xEbdcnAMiYs8R5CLwBAJgj5Ssl1SYfg311iaodEZdeRFotvqMBWm1SSmOffPKJ6Jo7deqU+Ltjx4702GOP0T333NPiAgGA+pyo7Q5KasXk7hkzZlBBQQEFBso/i3Vrl6VdmC95uGmopLKGLuaVUnyob6s8L4BaWR0sPf/887RkyRJ6+OGHaciQIeK67du30+OPP07Jycm0YMECe5QTABwUL+h6Nks/IWXXVuyGmzdvHilFa5fFzVUj1t87klooukARLAG0crD0/vvv08cff0yTJk2qM2t3z549RQCFYAkAjJ3KKCbuCQr2cacIf0+5i+M0uMuTgyVOrh/XPUru4gA4V85SVVUV9e/fv8H1/fr1o+rqaluVCwBU4njtSDg+efOIWWi9EXHsRG1yPQC0YrD0r3/9S7Qu1ffRRx+JlbUBAIxh5m55SF2e0rQNACBDgvcff/xBgwcPFn/v3LlT5CtNmTKFZs2aZdiPc5sAwLlJLRutmdzNYmNjKTU1lWJiYiglJaVVn1sJZelc27J0IbeUSiqqydezWV/3ANCclqUjR45Q3759KTw8nM6cOSO2sLAwcR3ftn//frEdOHDApgV98cUXaejQoeTj40NBQUEm9+GA7ZprrhH78KK/Tz75ZJNdg7m5uaJFLCAgQDzu9OnTqbhYn4wKAC3DU4tILRvSmmXQOkL9PEWOGM/uIo1GBIDmsfqnxsaNG0kOlZWVdMstt4gReNyyVV9NTY0IlKKiomjbtm2UlpYmWrrc3d3ppZdeavRxOVDifdetWyfyse666y669957adWqVXauEYBzLHOSV1olljnpGIllTlobd31mFmXRsbRC6hcfLHdxAByWwyykO3/+fDE9QY8ePUzezt2Cx44do88//5x69+5NV199NS1cuJDeffddEWiZcvz4cfrtt99o2bJlNGjQILrsssto6dKltHr1arp06ZKdawSgfkcv6VuVOkb4kZc7ljlpbd3a6Fvzjl0qkLsoAA7N6pal8vJyEVBwC1NmZiZptdo6t+/bt4/kwHM9cSAVGRlpuG7s2LF0//3309GjR6lPnz4m78Ndb8aj+0aNGkUajUbkYd1www0mn6uiokJsksJC/QmBW6Z4s5XqmmrDpS0f1xFI9UW9Hduhi7nisku0f5N1smfdlfR6miqLveqeFKmfX+lIaoGiXgO1vt+tgbqTxXXnc6BOo7XLudDSx7M6WOKcHm7Fufnmm2ngwIGKGQqcnp5eJ1Bi0t98W2P34dwmY25ubhQSEtLofdiiRYtES1d9/LpwvpSt7Ti6g+goOSXuHnVGaqn3xhPceK0hyrtIa9cmt2rd+YeddLl27VqbPKa9y2Lr454tntZNtCz9/MtaclVoX4Ja3u/NgbpbqC/RlkMZRIfIpkpLS+0TLP3yyy/iwz5s2DBqqaeffppefvlls/twV1lSUhIpyTPPPFNn1B+3LMXFxdGYMWNEorit5F7IFYHS4G6DKSQ+hJwJR/v8QRo9erTIO3MWaqv3oqObuS2Wbhk5mAYkBLdq3b28vAyX48ePb/Hj2bMs9jrunGD/5vGNVFReTR37X26Ye0kp1PZ+twbqvs7iuhemFNLWlado2LSOFBBr24EiUs+QzYMlHvrq72+bD9zs2bNp2rRpZvdp3769RY/Fid27du2qc11GRobhtsbuw12Jxnj0HI+Qa+w+zNPTU2z18UG35ZvezdXNcOlsHyZ7vaaOQg31zimuoPRCfXd1j7hgi+tjj7or6bU0VxZ71J3nW9p5LpdOZJRQjzhl/uhSw/u9uVB39yb343Ogi1Zjl3OhpY9ndaPs66+/TnPmzKELFy5QS/H0A9xqZG7z8PCw6LF4lNzhw4frBD8cuXJLT9euXRu9T35+Pu3du9dw3YYNG0QeFid8A0DLk7t5UVd/L+c8GShB95jAOscDAKxndbDEydDc784tPtzCxPk9xpu98BxKPHcTX/I0Afxv3qQ5kbgLjIMinmH84MGD9Pvvv9Nzzz1HDz74oKEViFueOADjyeFYly5daNy4cWJFcL5t69at9NBDD9Htt99Obdq0sVtdAJzBkdoRWF1rR2SBvCPijmJEHECzWd0NxwvocrDBcxdxAnVrJXg///zz9Omnnxr+lka38ai8K6+8klxdXUU+FY9+4xYjX19fmjp1ap2FfTmR6+TJk3Wy37/44gsRII0cOVKMgrvpppvo7bffbpU6AaiZ1JLRvY2+ZaO18TQiPGrVVJe5M5WlW+3rf+xSIWm1OtJolDEoB0DVwRJP+MhD7nv16kWtaeXKlWIzJz4+3uxIEw6qOOHRGLeGYQJKANs7mqpvyegeI0/LEn/elULOsnQI9yVPNw2VVNaIpU+4WxQA7NwNx91YZWVl1t4NAJxIUXkVnc8prdOyAfJwc9VQUu2iujzfEgC0QrC0ePFiMYpt06ZNlJOTI4bdGW8AANzlw9oEelGIr2WDNMB+uhvylvAdDdAq3XCcEM04x8cYd29x/hInXwOAc5NOyl1lbFXiH3RSnpDcXXJyl0Vq3UOSN4DKF9IFAMdxKCVfXPaoHbYuhzvvvFMMRuG54VJSUmQrhxLKIh2Hw6kFhh+2AGDHYGn48OGN3nbkyBFrHw4AVOhQir4Fo2cc8pWUoHOUP3m4aii/tIqSc0spPhRJ3gDWaPFKQUVFRfTRRx+JdeJae4QcAChPQVkVnc0uEf/uFRskd3GAiDzcNNSlNm/pwEV9qx8AtEKw9Ndff4l5jKKjo+m1116jq666inbs2GHb0gGAw5FGXMWFeCO5W0F6xQbWafUDADt1w6Wnp4u5jj755BMx8u3WW28VSYs//PBDo0uKAIBzkVoueqJVSVH0x+OCIZ8MAOzQsnTddddR586d6dChQ/Tmm2/SpUuXaOnSpVY8FQA4A+lkLLVkgDL0rs0fO5JaSNU1WrmLA6DOlqVff/2VHnnkEbGcSMeOHe1bKgBw/ORutCwpSvswP/LzdKPiimo6nVVMSVFYsw/A5i1LW7ZsEcnc/fr1o0GDBtE777xD2dnZFj8RAKhfZmE5pRWUE49Ml1a7B2XgNeGkpWcOXUTeEoBdgqXBgwfTxx9/TGlpaTRz5kxavXo1tWnThrRaLa1bt04EUgDg3A7Wtip1jNC3YoCySKMTDyBvCcC+o+F8fX3p7rvvFi1Nhw8fFkuf8BIoERERNGHCBGsfDgBUmK+ELjhlko4LkrwBWnGeJU74fuWVV8SMtF9++WVLHgoAVNSypITkbv5e4tmq5Z69W0ll6VWb5H0irYjKq7A0FUCrTUrJXF1daeLEifTTTz/Z4uEAwAFxMICWJWWLCfKmUF8Pqtbq6HgaFtUFaNVgCQDgXHaJWE6DZ4tOivaXuzhgAq8J1ytOH8juT0ZXHIClECwBgE3sqz358qKtnm6uchcHGtG3rT5Y2pecJ3dRABwGhqsAgE1IJ1/pZCy3+fPnU0FBAQUGBtK8efNQllp92waLS7QsAVgOwRIA2MS+C/pgqV+8/mQsN57qJDU1lWJiYmQPUJRUFu6G07gQpeaXUXpBOUUFeslaHgBHgG44AGixovIq+iejqE7LBSiTr6ebYfZudMUBWAbBEgC02MGLBaTV6UdbRQSgpULp+sYH1WkNBADzECwBQItJLRRK6YID86TWP7QsAVgGwRIAqC65GywLlo6kFlJFNSanBGgKgiUAaBGtVmcYWdUXLUsOIT7Uh0J8PaiyRktHL2FySoCmIFgCgBY5m11CBWVV5OWuoS7R+sRhUP7klIauOOQtATQJwRIAtIh0suUlTtxd8ZXiaEnemG8JoGn4ZgOAFtlzIVdcIrnbsfSrbVnafT5XrOsHAI3DpJQA0CK7zumDpYEJIaQkw4cPp+zsbAoLC5O7KIoqi/HklB6uGsosqqDk3FKKD/WVu0gAioVgCQCaLbOwnM7nlJKLC1G/BGW1LH3xxRekFEoqi8TL3ZV6xgbSngt5tPNcLoIlADPQDQcAzbbrvL5VqWt0AAV4uctdHLDSwHYhdVoHAcA0BEsA0GzSSXaAwrrgwLpgifOWAKBxCJYAoMXB0qDaky44Fk7K50V1L+SUikV1AcA0BEsA0Cz5pZV0snbx3AEKDJauuuoq6tatm7iUm5LKYszfy526tgmo06UKAA0hWAKAZtlzPo94xHn7cF8K8/Mkpfnnn3/o2LFj4lJuSipLfVIX6q5zOXIXBUCxECwBQLNILRHognNs0vHbfQ4zeQM0BsESALRsfiUESw5NalniLtW8kkq5iwOgSAiWAMBqJRXVdCS1QPwbI+EcW6ifJ3UI18+xxPMtAUBDCJYAoFmtStVaHcWFeFNssI/cxYEWGtIhVFzuOIu8JQBTECwBgNW2nckWl8M6KGf5Dmi+obXHcetp/XEFAAcNll588UUaOnQo+fj4UFCQfrVsYwcPHqRJkyZRXFwceXt7U5cuXeitt95q8nETEhLIxcWlzrZ48WI71QJAHbae1rdADE1EsKQGQ9qHiiVrTmUWU2YR5lsCcNi14SorK+mWW26hIUOG0CeffNLg9r1791JERAR9/vnnImDatm0b3XvvveTq6koPPfSQ2cdesGABzZgxw/C3v7+/XeoAoAa5JZV0LK3QcJIFxxfs6yGWrDl6qZC2n8mh63vHyF0kAEVxmGBp/vz54nLlypUmb7/77rvr/N2+fXvavn07fffdd00GSxwcRUVF2bC0AOol5bV0jvSncH/lza8EzTO0Q6gIlradRrAE4LDBUnMUFBRQSEjTI3W4223hwoXUtm1bmjx5Mj3++OPk5tb4S1NRUSE2SWGh/ld2VVWV2GyluqbacGnLx3UEUn1Rb+X5+59McTm4fbBNy2nruv/73/+m4uJi8vPzk/31bKosSjjugxKC6OO/uYs1q9XKoYR6ywV1J4vrzudAnUZrl3OhpY/notPxHLyOg1uWHnvsMcrPzze7H3fDDR8+nNasWUNjxoxpdL8lS5ZQ3759RVDF93nmmWforrvuEtc35oUXXjC0dBlbtWqVyKkCULMX97tSZrkL3dO5hnqEONTXB5hRUUP09G5X0upcaG6fagrzkrtEAPZXWloqGkm4cSUgQL/0j+KCpaeffppefvlls/scP36ckpKSrAqWjhw5QiNGjKBHH32UnnvuOavKtHz5cpo5c6b4Fejp6WlxyxLnSWVnZ5t9sa2VeyGXdhzdQYO7DaaQeOeay4aj/XXr1tHo0aPJ3d2dnIXS651WUE5XvPaXWHx1z7MjxNpizlJ3e1JK3W//eBftTc6nF6/vSrf2j3WaessBdV9ncd0LUwpp68pTNGxaRwqItd05Vjx2YSGFhYU1GSzJ2g03e/ZsmjZtmtl9OPfIGrz+0siRI0Vyt7WBEhs0aBBVV1fT+fPnqXPnzib34SDKVCDFB92Wb3o3VzfDpbN9mOz1mjoKpdZ714UMcdkzNohC/H2cqu6tQe66D+sYLoKlHefz6Y4h7Zym3nJC3d2b3I/PgS5ajV3OhZY+nqzBUnh4uNhs5ejRo2JV76lTp4qpBprjwIEDpNFoxMg6AKhry6kscTksUfmj4NLS0qimpkaMiI2OjkZZLDCsQyi9vf6UmG9Jq9WRhpsQAcBxEryTk5MpNzdXXPKXDgc1LDExUSRNctcbB0pjx46lWbNmUXp6uridv5ykgGzXrl00ZcoUWr9+PcXExIjRcjt37hRddjwijv/m5O4777yTgoODZa0vgNLwyfOvU/pJC4d3Uv6PiQEDBlBqaqr4rKekpKAsFugbH0x+nm5ieogjlwpECyIAOFCw9Pzzz9Onn35q+LtPnz7icuPGjXTllVfSt99+S1lZWWKeJd4k8fHxoktNSuQ6efKkIfudu9JWr14tErY5B6ldu3YiWOJgCwDqOpxaIE6i/p5u1KctTqJq5O6qEa2Gvx/NoM0nsxAsATjaDN6c2M256PU3DpQYBzymbpcCJcb78nU8azfjUXA7duwQyeJlZWUi34lHwzWW2A3gzDb/I3XBhYmTKqiT1GooHW8AcKBgCQDkJZ08h3e2XZ4hKM8VnfRL2OxLzqOCUuebAwjAFARLANAkPmnuT84T/76iE4IlNYsN9qHECD/S6oi21i6YDODsECwBQJO28OgoHVHHCD+KCfKWuzhgZ8NrA2LOWwIABEsAYIFNJzPrnETBSYKlf7JEnieAs0OwBABm8ckS+UrOZWC7EPJy11B6YTmdzCiSuzgAskOwBABmHUktpMyiCvJ2d6UBCc617I6z8nJ3pSHt9ROPbjihb1UEcGYIlgDArHXHMwyjpPgkCs5hVNdIcfnnMf3xB3BmDjMpJQDIQzpZju4aRY6EZ+rndR7d3OT/mlNSWSw1MimS/k1HaP/FfMoqqqBwf8w/B87LcT65ANDqUvPL6FhaIfESYSMcLF+psYWwnb0slooK9KKesYF0KKWANpzIoNsGtJW7SACyQTccADTZqtQvPphC/dCy4GxGd9F3xa07hrwlcG4IlgCgUX/W5iuNqj1pgnPmLW05nUVllTVyFwdANuiGAwCTCsuraMfZnDonTUeyatUqsXi2j48PTZ48GWVphqQofzEJKXfH8sSkox3wfQBgCwiWAMAknr25qkZH7cN9qUO4Hzmap556ilJTUykmJkb2AEVJZbGGi4uLCJBWbjsvumQRLIGzQjccAJj029H0Onkr4JykLljukq2u0cpdHABZIFgCgAY4P2XDcX1S79U9ouUuDshocPsQCvZxp5ySStp1Llfu4gDIAsESAJhcC66sqkbkq/SKDZS7OCAjN1cNje2mn2NrzeE0uYsDIAsESwDQgHRSHN8jSuStgHMbX9u6+PvRdKrRYmFdcD4IlgCgjvKqGsN6YNf0bCN3cUABhnQIpSAfd8ourqSd5/QjJAGcCYIlAGjQBVdaiS44+B93Vw2NqR0JtxZdceCEECwBQB1rDutHwaELDkx1xf12JANdceB0ECwBQL1RcBl1To4AbFhiGAV6c1dcBbriwOkgWAIAgz+OpVNJZQ3FBntT77ggcmRRUVFiEki+lJuSytKSrriru+vL/+P+S3IXB6BVYQZvADD4YX+quLyhT4zDd8Ht2bOHlEJJZWmJiX1iaPXuiyJvaf713cjL3VXuIgG0CrQsAYCQVVRBf53KNgRLAPUNTAgRif9FFdWGRZYBnAGCJQAQfjl0SSTu9ooLovYOuBYc2J9G40LX99ZPJ/H9Pn0rJIAzQLAEAML3tV1wN6JVCcy4sa/+/bH5nyzKKa6QuzgArQI5SwBApzOL6VBKAblpXOjanuoYBTdz5kzKzc2lkJAQ+vDDD1EWG0mM8KceMYF0OLWAfjmURlOHJshdJAC7Q7AEAPTdvhRxObxTOIX6eZIarFmzhlJTU8UoNLkpqSy2wDltHCzx+wbBEjgDdMMBOLmqGi19s1cfLN3cL1bu4oADmNC7Dbm7utDBlAI6dqlQ7uIA2B2CJQAnx+vA8Ui4MD8PGtlFv6QFgDlhfp40unb5k9W7k+UuDoDdIVgCcHJf7tKf7G7uF0cebvhKAMvcPqCtYWAAz/wOoGb4ZgRwYqn5ZWJUE7t9QJzcxQEHcllimJjpvai8GovrguohWAJwYl/tvkg6HdGQ9qGUEOYrd3HAweZckgJsdMWB2iFYAnBS1ZzYveei+PftA9GqBNa7pX8cuWpcaPf5PDqVUSR3cQDsBsESgJP641gGpRWUU4ivB43t5rgLvIJ8IgO86KqkCPHvz7ZfkLs4AHaDYAnASa3cel5cTh7YFguiQrPdVTvP0v/tS6GCsiq5iwNgF5iUEsAJHUktoF3nc8WM3f8aEk9qNGnSJMrLy6Pg4GC5i6KostjakA6h1DnSn05mFNHXuy/SjCvay10kAJtDsATghFbUtiqN7xEtulLU6NVXXyWlUFJZbM3FxYXuGpZAT393mD7dfp7uvqydyGMCUBN0wwE4GZ6A8ueDl8S/+SQH0FIT+8RQsI87peSV0bpjGXIXB8B5g6UXX3yRhg4dSj4+PhQUFNToL5z62+rVq80+Li9ueccdd1BAQIB43OnTp1NxcbGdagEgv893XKDKGi31jguiPm3V1y0ErY9z3iYN1E9SuXzLObmLA+C8wVJlZSXdcsstdP/995vdb8WKFZSWlmbYJk6caHZ/DpSOHj1K69ato19++YX++usvuvfee21cegBlKK6oppXb9F1w91zeTu7igIpMGZIg1ovjXLg953PlLg6AcwZL8+fPp8cff5x69Ohhdj9uHYqKijJsXl6N52McP36cfvvtN1q2bBkNGjSILrvsMlq6dKlojbp0Sd9NAaAmX+5MFiOW2of50tXdo0nNkpKSRIsxX8pNSWWxl6hAL7qpr34h5nc3npa7OADOGSxZ6sEHH6SwsDAaOHAgLV++nHQ8PXEjtm/fLoKr/v37G64bNWoUaTQa2rlzZyuVGKB1lFfV0Md/nxX/vu/KDqpPwuXu9KKiIkV0qyupLPZ03/AOxG+rjSez6OilArmLA2AzqhoNt2DBArrqqqtEXtMff/xBDzzwgPhyeuSRR0zun56eThER+gnVJG5ubhQSEiJua0xFRYXYJIWFheKyqqpKbLZSXVNtuLTl4zoCqb6ot+18tesiZRZVUHSgF13TLUJxr609666kupoqi1re7zGBHjS+exT9cjid3t1wit66rZfZ/dVS7+ZA3cniuvM5UKfR2uVcaOnjyRosPf300/Tyyy+b3Ye7yixtup47d67h33369KGSkhIxZLexYKm5Fi1aJLoF6+MAjQM1W9txdAfRUXJKnEvmjGxd7xot0dsHeOJJFxoaXEJ//vEbqb3u5eXlhsu1a9fa5DHtXRY1vN+7uhD9Qm7065F06u2WSpHeTd9HDfVuLtTdQn2JthzKIDpENlVaWqr8YGn27Nk0bdo0s/u0b9/8Cc44D2nhwoWiFcjT07PB7ZzTlJmZWee66upqMUKOb2vMM888Q7NmzarTshQXF0djxowReQm2knshVwRKg7sNppD4EHImHO3zB2n06NHk7u5OzsJe9V616yLlVBynMD8Pmvevy8nbw1X1dZfyFfly/PjxNiih/cqitvf73sr9tP5EFh2sjqU3x/dsdD+11dsaqPs6i+temFJIW1eeomHTOlJArO3OscY9Q4oOlsLDw8VmLwcOHBAz5poKlNiQIUMoPz+f9u7dS/369RPXbdiwgbRarQi0GsOPZ+ox+aDb8k3v5upmuHS2D5O9XlNnrHdZZQ29u0mfq/TwVR0pwNfL6Y65kt5D5sqilvf77DFJIlhacySd7h+RSN1jAs3ur5Z6Nwfq7t7kfnwOdNFq7HIutPTxHCbBOzk5WQQ/fFlTUyP+zZuUMPnzzz+LUW1Hjhyh06dP0/vvv08vvfQSPfzww4bH2LVrl+jSS01NFX936dKFxo0bRzNmzBC3bd26lR566CG6/fbbqU2bNrLVFcCWeFZlzlWKDfY2zIUDYE9d2wTQhF7679DX/jgpd3EAnCfB+/nnn6dPP/20Tk4S27hxI1155ZUiOnz33XfF9AI8Ai4xMZGWLFkiAiHjvsmTJ0/WSej64osvRIA0cuRIMQrupptuorfffruVawdgHzxNwPubzoh/PzaqE3m4OczvI3Bws0Z3orWH02jTySzadS6XBrZzrlQCUBeHCZZWrlwptsZwCxFv5nBQVX8qAR75tmrVKpuVE0BJPth8RgRMHSP86IY+MXIXB5xIQpgv3TogjlbtTKbFvx6n/7t/qFhVAcAR4WcmgEqdzy6hT/7WLz3x1Lgk1c+rBMrzyFUdydvdlfYl59OPBzDRLzguh2lZAgDr/GfNMbEG3BWdwmlUl7rziTmDDz74gMrKysjb24Kx605Ultae1fuhqxLp1d9P0qJfj9PorpHk64nTDjgevGsBVGjTyUz683gmuWlc6Plruzpl98e1115LSqGksrS26Ze1o692X6Tk3FKxDAq3cgI4GnTDAahMRXUNLfjlmPj3XcMSKDHCT+4igRPzcneludd2Ff9e9vc5OpddIneRAKyGYAlAZZauP01ns0oozM+THh7ZUe7iAIhuYO4O5m7hp//vEGm1ja/ZCaBECJYAVIQXL31/s36qgP9M7EYBXs452R3jyWZ5sWy+lJuSyiIH7gZ+cWJ3key981wurdqVLHeRAKyCYAlAJapqtPTUt4eoRquj8T2iaFz3aHJm119/PQ0dOlRcyk1JZZFLXIgPPTm2s/j34l9P0KX8MrmLBGAxBEsAKvHexjN09FIhBfm40/wJ3eUuDkADU4cmUN+2QVRcUU1Pf3cY3XHgMBAsAagAz5D81vp/xL9fuK4bhfubXg8RQE4819crN/ciTzcN/fVPFq3cfkHuIgFYBMESgIPLL62kR1fvJ/6RfmPfGJqImbpBwXh05vPX6UfHvbbuFF3QL+8JoGgIlgAcGC/f8+S3hyitoJzahfnSwuvR/QbKN3lgW5FXV1Wjo0//caWi8v+t1wmgRAiWABzY2+tP07pjGeThqqGlk/pgdmRwmNFxi27sSTFBXpRT4UKPf3NYDEwAUCoESwAOild0f+NPfZ7SwondqHtMoNxFArBYoLc7Lb29F7m76GjzP9n08m8n5C4SQKMQLAE4oMMpBTTr6wOG5SRuG9BW7iIBWK1HTCBNTtSKf3/011n6Zs9FuYsEYBLa7BXs2fWn6J8MV1p+7ih5eLmRC7lQ7X/ES33x3+LS6N9SE/f/9qn7t9iz3mPwCBUPN43oyhGXbhpyr/23p9H1Xu4a8vN0J38vN/LzciN/Tzfy93IX//ZxdyUNVrVvFaczi2jqil1UXqWl4Z3C6ZmrsdYWOK6+YTryj2lP72w6K6YTCPLxEAvuQuvg7k/OGcsvraKCsioqLK+i0soaKq/Sb2WVNVRWpaWyqhqq4K1aS9VarbhfdY1OXFZp+VJr+LtaqyOtTke62p5VHen/If2t1WopO0dDq9J3i3OSfp9auob7V1dUU0F1GXUsKqdAkqcFHcGSgp3IKqELRS5ERUWkdBx4Bft4ULifJ4X56y95+HpY7WWEvxfFBntTmyBvEXhB81zMLaU7l+2i3JJK8av8ncl9yM0Vryc4todHdKBLBRX03f5UenDVPloxbQANSwyTu1gOPfAjr7SK0gvKKaOwnNILy8UgkIwC/b9zSipEYMQBUlF5tUyl1NDpwjyr7lFRI19eG4IlBZtzWTvac+oIdYnvQn4RfiLW1tVG3fpL/YeC6l9vdJu4tcF96v7NE8NVVmvFuk38q4FnghZ/S1vt3/zLgieT4w9XcUUVFZfr/82/Ivix+ATO28kM80FVVIA+cOIZfTuE+4mNhxPHh/qIFi0w7UJOCd35yU7xZdcxwo8+u3ugaNkD044fPy4+A9yyKjcllUWJuFX6lZt7UkllNf1+NINmfLaHPpk6gIZ0CJW7aIqWVVRBpzKK6FxOCZ3PLqHzOaXiMjm3VHyXW8PHw1XkkfHm7eEqlqbhzcvo394eruTu6kJuGu594F4JDblp9L0TbrXXS39rNHV7PCT8GaiprqYDBw5Qnz59yM3NVX99bQuToYfEsD9RSVYpHf/zEoX7yPd9h2BJwQbFBlJVro4uax9Coe2U+aXBJwD+UHLTLQdK/OHNLq4Ql/p/66/jE3xKXqnoOuJfOLztPl/3VwV/yBLCfKlrdAB1jvSl4nwXGlxSSZFBCAiOXSqkKct3ideWg8rP7xlEwb4echdL0fz9/eUugiLLolTcQvr2pD50z6d76O9T2aKrmUd4ju0WRc6uukZLpzKLRa7i8fRCOpleJLackkqz9wv19aDIAC+KCvTSXwZ4UXSgl2j91wdG0qV7q7b4V1VVkSZlv5g+wt296e/3guQC8tiQQ74e8oUsCJagRfhXghf/+nB3FV1tSVHmAyv+cHNXUkpemWgpOZNVQqczi+lMVrHoJ+d/86bnSu8f3yQ+3H3bBlPf+GDqFx8sgiln6srbdiabZv53r2jFS4ryFy1KEQFechcLwOY83Vzp4yn96ZEv99MfxzLo/s/30n8m9qDJg5xnAAN/T14qKKeDF/PpQO3GQRK37NfHrS5tQ3yofZiv+KHJc60lhPqKH1QcIPHrCbaBYAlaNbDiHCbe+rQNbvAFwa1NJzOKRCvKkZR82nMmnbLKXcT1aw6niY1x0nmv2CDqEx9E/doG04CEEFW2svBr8smWc7To1xMiaXJAQjAtmzpA/AoEUCv+4fXeHX3p2e8P09d7UsTl0UsFYtZvNZ78+XPOXWnbzuTQ9jM5tDc5T7TG1+fn6SbyFLu2CaDOUf7ihxOnL/jI2NriTPAqg2ICKU7+5m1E5wjRTLt2bSpdMXIMncgopX3JebTvQp74IuGkxF3nc8Wmvy9Rl6gAGtohVCSFDmgXIr5YHBnX8YVfDhsCxBv7xNBLN/YQJxKwzJIlS6iwsJACAgJo1qxZKIuDdcm9fFNPig32EXOJfbEzmY6lFdLbt/cRuY6OHhxxTtGWfzLp//7R0MLDm0W6gjHO+eFgqHdcEPWKC6I+cUEitxMjjuXj2GcUUD0OejjJU0r05C+as9kltPeCPnjacyFPdNvxFylvy7acE180vWIDaWiHMBqaGCq68BwpyDic60L/WbqVsoorRR7X3Gu70pQh8UgObkaAkpqaSjExMbIHKEoqi6Pg9/sjIztSj9hAevTL/bQ/OZ/GvvmXmCrjjkHxDhU4pBWUiVYjqfUoNb+s9hZOJ6gUreX9E4LFd9bAdiHUvU2gSKYG5UCwBA73BSqNoLu1f5y4LrOoXHwBSV9G/KttX3K+2N7ZeFrkN/WP5y8iDrrCqGdsoCJH3Z3NKqZFa4/TupP8JVlJHcJ96fVbe4tflwDOilua1zxyOc3+5iDtOpdLc388Sj8euET/vqZLg+58pcgprqAdZ3NFviF/L/EPPGP8I6h3XCCF1uTSv8YMpP7twhzqB50zQrAEDo8Ty6/vHSM2xgnk28/qg6etp7Mps6hCBFG8Ef1Dvh6uoquOgyf+JdclOkC0RsmFE9159uKvdl8U0zC4kI7uuawdzR6bhC9QACLR9bZ6xmD6744LtPjXE6JF+Yb3ttE1PaPpoRGJ4jMsd3C081wu7TybIy5PpNedG4+/Xng5oiG13zn8481Do6O1a9fSoHYh5I7PueIhWAJVfrHyxi1P3G3HI+628y+82gCKJ2vbdDJLbIwTpvkLi0fa8Yg7TqK0d5DCc1ltOZ1Nq3cli1E/0ky1IzqH0WCvdLp7bCd8gQIY4W63qUMTaEy3SHr9j3/o//al0JpDaWK7LDFMdFUP7xzeKkngnIC981wO7TybSzvO5ohh/fVxzpFIIWgfSoPahVJgvTmCOC8THAeCJVB9tx2PGOHtX0MSxASc/KuPm8f5S46/7HgmWw5YeGM82RpPT8BN/PyF1ynKX0wC2dIJIHkeKg7WtpzOEhPv8d+SEZ3DaebwDtQvLkD82gQA06IDvem1W3rR3cPa0bubTtOvh9PEDw/eArzcaFz3KBreKUIEKiE2GCWbV1JJh1MLxHak9pKnPqmvc6Q/DWofIgIjvuRRv6AeCJbA6X6d8tBb3u65vL2Y7O3IpULRfC5G3CXni1+NB1MKxGYsJshbBF3Ssi28pEuQjzsFeLuLHCjOQ+BuNF5PiedE4lwqnvbgTGaxCNA4l6r+hHHX9oymOwfHU8dI/aSF+LUJYBn+DL87ua/odufuuR8PpFJGYYWYboA3Hg/B8w8liUlu/cV8bRxo8WeWW445qZo/r/wdUMRrj5VWUVZxhXi8Czml4vPKm/GPGgk/dlJUgGiRHtw+VCRl2yIwA+VCsATk7EOUOYFaSqLmbjv+1ciB08GLBXQqUz9TLuc98QiW/41iaR7+0uYRepy0yjlTWNcNoGW4y/3Z8V1ozrgk0TX2x9EM0YLLc7ZxFzxva0g/BUdzJYT6UI/YIOoREyByj3gLwFJDTgXBEkC9bjsp50lKGGf5pZX0T4Z+pvE0ETSVU25Jhch/4qVeeLVt/oXq6upCPu5u5OPJM5p7iuUF2ob6UpdofzEXlBonzwRQAh6kIaYL6aBfgJeXBjp6qZBOpBWK6UV4ySVeWJZbfXk2bF7v0q12TTNfTzfR4sSLgfNnPz7ER8yM3TbUh+JDfR1+3jZoObwDACwQ5OMhmtp5AwDl45yh4Z3CxQbQUgiWAECV+vbtS3FxcRQeLv/JUkllAQDrIVgCAFX66aefSCmUVBYAsB6ySwEAAADMQLAEAAAAYAaCJQAAAAAzkLMEAKo0YcIEysrKEknVcucMKaksAGA9BEsAoEr79u2j1NRUion533xZKAsANAe64QAAAADMQLAEAAAAYAaCJQAAAAA1BEsvvvgiDR06lHx8fCgoSL/oqbGVK1eKdb1MbZmZmY0+bkJCQoP9Fy9ebOfaAAAAgKNwmATvyspKuuWWW2jIkCH0ySefNLj9tttuo3HjxtW5btq0aVReXk4RERFmH3vBggU0Y8YMw9/+/v42LDkAAAA4MocJlubPn29oQTLF29tbbBIeprthwwaTgVV9HBxFRUXZsLQAAACgFg4TLFnrs88+E112N998c5P7crfbwoULqW3btjR58mR6/PHHyc2t8ZemoqJCbJLCwkJxWVVVJTZbqa6pNlza8nEdgVRf1Nt52LPuSno9TZXFWY+7s9aboe5kcd35HKjTaO1yLrT08VQbLHGLEgc+xq1NpjzyyCNiRfCQkBDatm0bPfPMM5SWlkZLlixp9D6LFi0ytHQZ++GHH0SAZmsbdm8g2k1O6ccffyRn5Kz1tmXdS0tLDZfffvutTR7T3mVx1uPurPVmqLuFkoj+2HGO7PXZ1Ol05nfUyWjOnDlcOrPb8ePH69xnxYoVusDAQLOPu23bNnHfPXv2WF2mTz75ROfm5qYrLy9vdB++raCgwLAdO3asyXpgw4YNGzZs2EiR28WLF83GBrK2LM2ePVskYZvTvn17qx932bJl1Lt3b+rXr5/V9x00aBBVV1fT+fPnqXPnzib38fT0FJvEz8+PLl68KHKfeDSdrXD3XlxcnHjsgIAAcibOWndnrTdD3Z2v7s5ab4a6xymi7tyiVFRURG3atDG7n6zBEq+TxJstFRcX09dffy26yprjwIEDpNFomhxBZ4z3j42NJXvhN5Pcbyi5OGvdnbXeDHV3vro7a70Z6h4gdzEoMDBQPTlLycnJlJubKy5rampEUMMSExNFy47kq6++Ei1Dd955Z4PH2LVrF02ZMoXWr18v1mjavn077dy5k0aMGCFahfhvTu7m+wYHB7dq/QAAAECZHCZYev755+nTTz81/N2nTx9xuXHjRrryyivrJHbfeOONJieu5ESukydPGrLfuStt9erV9MILL4jRbe3atRPB0qxZs1qlTgAAAKB8DhMs8fxKjc2xZIxHtDWGgyrjjHceBbdjxw5SKg7m5s2bVyc/ylk4a92dtd4MdXe+ujtrvRnqPs+h6u7CWd5yFwIAAABAqRxmbTgAAAAAOSBYAgAAADADwRIAAACAGQiWAAAAAMxAsKRg7777LiUkJJCXl5eYWZzniVITnjh0wIABYo4rngR04sSJYmqH+iMYeVZ04+2+++4jR8fTVdSvV1JSkuH28vJyevDBByk0NFTMI3bTTTdRRkYGOTp+P9evN29cV7Ud77/++ouuu+46MTMw14PXjjTGY2t4SpTo6GixhuWoUaPo1KlTdfbhueXuuOMOMXEfT4cyffp0MfGuI9edp26ZM2cO9ejRg3x9fcU+PP/dpUuXmnyv8KLnjnzMecWK+nUaN26c6o85M/W55+3VV18lRzjmCJYUiifX5PmeeHjlvn37qFevXjR27FjKzMwktdi8ebM4SfL0DevWrRNfomPGjKGSkpI6+82YMUMsbixtr7zyCqlBt27d6tRry5Ythtt4vq+ff/6ZvvnmG/E68YmE5w9zdLt3765TZz7u7JZbblHd8eb3MX9u+UePKVyvt99+mz744AMxOS4HDvwZ50BZwifNo0ePitfpl19+ESeke++9lxy57jzfHX+nzZ07V1x+99134kfShAkTGuy7YMGCOu+Fhx9+mBz5mDMOjozr9OWXX9a5XY3HnBnXmbfly5eLYIh/CDrEMbd6pVloFQMHDtQ9+OCDhr9ramp0bdq00S1atEinVpmZmWJBw82bNxuuGz58uO7RRx/Vqc28efN0vXr1Mnlbfn6+zt3dXffNN98YruMFpfm12b59u05N+Nh26NBBp9VqVX28+dh9//33hr+5vlFRUbpXX321znH39PTUffnll+JvaYHu3bt3G/b59ddfdS4uLrrU1FSdo9bdlF27don9Lly4YLguPj5e98Ybb+gclal6T506VXf99dc3eh9nOubXX3+97qqrrqpznZKPOVqWFKiyspL27t0rmuWN15/jv3lJFrUqKCgQlyEhIXWu/+KLLygsLIy6d+9OzzzzjPhlqgbc5cJN1rxYNP+a5KV8GB97bmUzPv7cRde2bVtVHX9+n3/++ed0991311mAWq3H29i5c+coPT29zjHm9am4u106xnzJ3TD9+/c37MP783cBt0Sp7bPP74H6Ky9wFwx3RfOKDdxdw0tZObpNmzaJtANeqP3++++nnJwcw23OcswzMjJozZo1oouxPqUec4eZwduZZGdni/XvIiMj61zPf584cYLUSKvV0mOPPUbDhg0TJ0nJ5MmTKT4+XgQVhw4dErkO3GTPTfeOjE+KPCM9f2FyU/P8+fPp8ssvpyNHjoiTqIeHR4MTBx9/vk0tOKchPz9f5HGo/XjXJx1HU59x6Ta+rL+gt5ubm/gxoab3AXc78nGeNGlSnUVVH3nkEbHKAteXV2bgwJk/K0uWLCFHxV1w3J3OS2udOXOGnn32Wbr66qtFkOTq6uo0x/zTTz8Vuar1UwuUfMwRLIEicO4SBwrGeTvMuK+eE0I5GXbkyJHii6ZDhw7kqPgLUtKzZ08RPHGQ8PXXX4tkX2fA6zjy68CBkdqPN5jGLai33nqrSHZ///3369xmvEYnf0b4B8TMmTPFwBBHWibD2O23317n/c314vc1tzbx+9xZLF++XLSm8+AlRznm6IZTIO6C4F8Z9Uc/8d9RUVGkNg899JBIZORFkWNjY83uy0EFO336NKkJtyJ16tRJ1IuPMXdRcauLWo//hQsX6M8//6R77rnHKY+3dBzNfcb5sv6ADu6S4NFSangfSIESvxc4mdm4Vamx9wLX//z586QW3AXP3/fS+1vtx5z9/ffforW4qc++0o45giUF4mi6X79+tH79+jrdVPz3kCFDSC341yQHSt9//z1t2LBBNE035cCBA+KSWxzUhIcGc+sJ14uPvbu7e53jz18unNOkluO/YsUK0d1wzTXXOOXx5vc6n/yMj3FhYaHIS5GOMV9ywMw5bBL+nPB3gRREOnqgxHl7HDRzjkpT+L3AuTv1u6kcWUpKishZkt7faj7mxi3K/B3HI+cc6pjLnWEOpq1evVqMjFm5cqUYIXHvvffqgoKCdOnp6Tq1uP/++3WBgYG6TZs26dLS0gxbaWmpuP306dO6BQsW6Pbs2aM7d+6c7scff9S1b99ed8UVV+gc3ezZs0W9uV5bt27VjRo1ShcWFiZGBLL77rtP17ZtW92GDRtE/YcMGSI2NeCRnVy3OXPm1Llebce7qKhIt3//frHxV+2SJUvEv6URX4sXLxafaa7noUOHxOigdu3a6crKygyPMW7cOF2fPn10O3fu1G3ZskXXsWNH3aRJk3SOXPfKykrdhAkTdLGxsboDBw7U+exXVFSI+2/btk2MiuLbz5w5o/v888914eHhuilTpugctd582xNPPCFGtPL7+88//9T17dtXHNPy8nJVH3NJQUGBzsfHR/f+++/r6lP6MUewpGBLly4VJxUPDw8xlcCOHTt0asIfKFPbihUrxO3JycniRBkSEiICx8TERN2TTz4pPnCO7rbbbtNFR0eLYxsTEyP+5mBBwifMBx54QBccHCy+XG644QZxMlGD33//XRznkydP1rlebcd748aNJt/fPHxcmj5g7ty5usjISFHfkSNHNnhNcnJyxInSz89PFxAQoLvrrrvEScmR686BQmOffb4f27t3r27QoEHix5SXl5euS5cuupdeeqlOUOFo9eYfgWPGjBEBAE8NwsPkZ8yY0eAHsBqPueTDDz/UeXt7i2ky6lP6MXfh/8ndugUAAACgVMhZAgAAADADwRIAAACAGQiWAAAAAMxAsAQAAABgBoIlAAAAADMQLAEAAACYgWAJAAAAwAwESwBgNytXrhTr3pnzwgsvUO/evUnNeKFUFxeXBuv9WYNfJ34M3t58802z+/I+P/zwA9nStGnTDM9v68cGUDoESwBQ54Q4ceJEmz3ebbfdRv/88w8pMUhzRN26daO0tDS69957W/2533rrLfHcAM7ITe4CAIB6eXt7iw1sw83NTbbV5wMDA8UG4IzQsgQAjbryyivpkUceoaeeeopCQkLEiZq7g4xx19LMmTMpMjKSvLy8qHv37vTLL7802sKzePFisa+/vz9Nnz6dysvLGzzvsmXLqEuXLuLxkpKS6L333jPcdv78edEV9N1339GIESPIx8dHrGC+fft2Q5fXXXfdRQUFBYZuo/pllpw5c4auv/56UR4/Pz8aMGAA/fnnn3X2SUhIoJdeeonuvvtuUea2bdvSRx99VGefbdu2ia5ELm///v1FNxU/L6+a3pgtW7bQ5ZdfLoLJuLg48TqXlJSQtU6dOkVXXHGFeO6uXbvSunXrGuxz8eJFuvXWW8Wx4OPIdebXUVJdXS2en28PDQ2lOXPm0NSpU23aygjgyBAsAYBZn376Kfn6+tLOnTvplVdeoQULFhhOyFqtlq6++mraunUrff7553Ts2DERDLm6upp8rK+//loELhx87Nmzh6Kjo+sEQuyLL76g559/nl588UU6fvy42Hfu3LmiHMb+/e9/0xNPPCECkk6dOtGkSZPESX/o0KEipycgIEB0G/HG+5lSXFxM48ePp/Xr19P+/ftp3LhxdN1111FycnKd/V5//XURBPE+DzzwAN1///108uRJcVthYaG4T48ePWjfvn20cOFCEWyYw0EaP9dNN91Ehw4doq+++koETw899BBZg1//G2+8kTw8PMTx+eCDDxo8d1VVFY0dO1YEen///bc4VhwY8vNXVlaKfV5++WXxuq9YsULcznVCXhKAEblX8gUA5eAVwq+//nrD38OHD9dddtlldfYZMGCAbs6cOeLfv//+u06j0ehOnjxp8vFWrFghVhGXDBkyRPfAAw/U2YdXGu/Vq5fh7w4dOuhWrVpVZ5+FCxeK+zJp1fply5YZbj969Ki47vjx4yaf1xrdunXTLV261PA3rw5/5513Gv7WarW6iIgI3fvvvy/+5svQ0FBdWVmZYZ+PP/5YlGf//v11VmTPy8sTf0+fPl1377331nnev//+W7yWxo9jbN68eXVeJ+n1d3Nz06Wmphqu+/XXX8Vzff/99+Lv//73v7rOnTuLcksqKirE6u98fxYZGal79dVXDbdXV1fr2rZtW+e9IDF+bABngZYlADCrZ8+edf7m1qDMzEzxb27ViY2NFS07luCWokGDBtW5bsiQIYZ/czcUt7pw9xy3fkjbf/7zH3F9Y+XiMjGpXJbiliVudeIuP+6C4ufiMtZvWTJ+Lu5e4+5I6bm4hYlv524wycCBA80+78GDB0UXpXEdufWHW4rOnTtncfm5rNyF16ZNG5Ovp/Rcp0+fFi1L0nNxVxx3f/Jryt2VGRkZdcrMLYP9+vWzuBwAaocEbwAwy93dvc7fHCzwSZ3ZOnmbgxf28ccfNwiq6nftGZeLy8SkclmKAyXuUnzttdcoMTFR1Ofmm282dE+Zei7p+ax9rvr15DwvzhOqj3OibImfiwMf7marLzw83KbPBaBWCJYAoNm4RSUlJUVMD2BJ6xK34HBuzZQpUwzX7dixw/BvTrTmVpKzZ8/SHXfc0exycQ5PTU1Nk/txfg5Pl3DDDTcYAgvjxGdLdO7cWeRrVVRUkKenp7hu9+7dZu/Tt29fkd/FAVpL8OvJyduclyW1rhm/ntJzcU5URESEyOMyhV93LjMnijN+7Tj/Su3zXwFYCt1wANBsw4cPFydYTlTmFhruQvr111/pt99+M7n/o48+SsuXLxeJxBxgzZs3j44ePVpnn/nz59OiRYvo7bffFvscPnxY7L9kyRKLy8Uj2Djw4cTt7OxsKi0tNblfx44dxag67k7k7qrJkydb3WIk3YfnPuJusd9//120VBm3eNXHSdg8go4Tuvm5eUTbjz/+aHWC96hRo0SQyiPXuPycwM2J78Y46AwLCxMj4Ph2PkY8YpBbtTjQZQ8//LB4zbkM3K3IxykvL6/R8gM4GwRLANAi//d//yeG3PNoNB66ztMMNNaqw5NU8sg23oe7hi5cuCBGlhm75557xNQBHCDxCDMOyDi/p127dhaXiUfE3XfffeL5uKuJR/GZwgFYcHCw2J9HtHHeELfEWINba37++WcR9HBLDAcrPJqPGecx1W+R27x5swgGefqAPn36iPsY5x5ZQqPR0Pfff09lZWUi54hfOx5FaIynVvjrr79E9x6PnOPWKGnKBqmliYM3Pn7c4sc5T1IOVWPlB3A2LpzlLXchAADUhPODpLmebJXXxVMu8HB+c3M32Qq3lHFQxXMz8VQIxri1iQM0zMEEzgQtSwAALfTZZ5+JeZK4i4sDGm6p4UDD1gnw3CXJrT7156ZqKW7h46R6qduTW/u4LtzFKOGWOn5uAGeEliUAgBbibj4OYNLT00WiNbe6cHcYd4HZSm5urtgYdy3acukRThK//fbb6ciRIzz3npiFnScXlRK+GU+VwJNVMq4jT1QK4CwQLAEAAACYgW44AAAAADMQLAEAAACYgWAJAAAAwAwESwAAAABmIFgCAAAAMAPBEgAAAIAZCJYAAAAAzECwBAAAAGAGgiUAAAAAatz/A6YCleg3qSQlAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "M = 4 # number of antenna elements in the antenna system (ULA)\n", "delta_theta = 7\n", "theta1, theta2 = 90+delta_theta, 90-delta_theta\n", "\n", "# Array response vectors of the test signal\n", "a_1 = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(theta1)))\n", "a_2 = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(theta2)))\n", "\n", "# Generate multichannel test signal\n", "# Notes seems to require some noise , if sigma is too low less reliable outcome?!?\n", "soi2 = np.random.normal(0,1,N)\n", "soi_outer = np.outer( soi1, a_1)\n", "soi_outer+= np.outer( soi2, a_2)\n", "soi_matrix= soi_outer.T\n", "\n", "# Generate multichannel uncorrelated noise\n", "noise = np.random.normal(0,np.sqrt(10**-1),(M,N))\n", "\n", "# Create received signal array\n", "rec_signal = soi_matrix + noise\n", "\n", "R = corr_matrix_estimate(rec_signal.T, imp=\"mem_eff\")\n", "\n", "array_alignment = np.arange(0, M, 1)* d\n", "incident_angles= np.arange(0,181,1)\n", "ula_scanning_vectors = gen_ula_scanning_vectors(array_alignment, incident_angles)\n", "\n", "Bartlett = DOA_Bartlett(R,ula_scanning_vectors)\n", "Capon = DOA_Capon(R, ula_scanning_vectors)\n", "\n", "# DOA_plot(Bartlett, incident_angles, log_scale_min = -50)\n", "\n", "axes = DOA_plot(Capon, incident_angles, log_scale_min = -50)\n", "# Mark nominal incident angles\n", "axes.axvline(linestyle = '--',linewidth = 2,color = 'black',x = theta1)\n", "axes.axvline(linestyle = '--',linewidth = 2,color = 'black',x = theta2)\n", "axes.plot()" ] }, { "cell_type": "markdown", "metadata": { "id": "ZbdTj-Jeyvuy" }, "source": [ "### 8 elements\n", "\n", "* Bartlett +/- 7\n", "* Capon +/- 3" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 386 }, "id": "MqkEDiUtyyth", "outputId": "f332d129-df43-4aff-a18f-c78177e06517" }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "d = 0.5 # Inter element spacing [lambda]\n", "N = 2**12\n", "\n", "M = 8 # number of antenna elements in the antenna system (ULA)\n", "delta_theta = 3\n", "theta1, theta2 = 90+delta_theta, 90-delta_theta\n", "\n", "# Array response vectors of the test signal\n", "a_1 = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(theta1)))\n", "a_2 = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(theta2)))\n", "\n", "# Generate multichannel test signal\n", "soi1 = np.random.normal(0,1,N) # Signal of Interest\n", "# Notes seems to require some noise , if sigma is too low less reliable outcome?!?\n", "soi2 = np.random.normal(0,1,N)\n", "soi_outer = np.outer( soi1, a_1)\n", "soi_outer+= np.outer( soi2, a_2)\n", "soi_matrix= soi_outer.T\n", "\n", "# Generate multichannel uncorrelated noise\n", "noise = np.random.normal(0,np.sqrt(10**-1),(M,N))\n", "\n", "# Create received signal array\n", "rec_signal = soi_matrix + noise\n", "\n", "R = corr_matrix_estimate(rec_signal.T, imp=\"mem_eff\")\n", "\n", "array_alignment = np.arange(0, M, 1)* d\n", "incident_angles=None\n", "incident_angles2= np.arange(70,110.01,0.01)\n", "ula_scanning_vectors = gen_ula_scanning_vectors(array_alignment, incident_angles2)\n", "\n", "Bartlett = DOA_Bartlett(R,ula_scanning_vectors)\n", "Capon = DOA_Capon(R, ula_scanning_vectors)\n", "\n", "# DOA_plot(Bartlett, incident_angles, log_scale_min = -50)\n", "# DOA_plot(Capon, incident_angles2, log_scale_min = -50, alias_highlight=True)\n", "# fig = plt.figure()\n", "# fig.add_subplot(111)\n", "axes = plt.axes()\n", "axes.plot(incident_angles2,np.abs(Capon))\n", "axes.set_title('Direction of Arrival estimation ',fontsize = 16)\n", "axes.set_xlabel('Incident angle [deg]')\n", "axes.set_ylabel('Amplitude [dB]')\n", "# Mark nominal incident angles\n", "#\n", "axes.axvline(linestyle = '--',linewidth = 2,color = 'black',x = theta1)\n", "axes.axvline(linestyle = '--',linewidth = 2,color = 'black',x = theta2)\n", "axes.plot()" ] }, { "cell_type": "markdown", "metadata": { "id": "RwBcto0zOCoN" }, "source": [ "### 12 elements\n", "\n", "* Bartlett: 4.2\n", "* Capon: 1.7" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 386 }, "id": "YA0zr6BTOHo0", "outputId": "bfa3a6ab-abe7-4869-e1b5-c0e3ce5c6d8d" }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHJCAYAAAB5WBhaAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAYxxJREFUeJzt3Qd4k9UaB/C3e7e0dJeykSF7gwNQFJWhV70qqCCi4h44cFzAcQUUGVdFERQ3iANRAUFEERBkIygbCqWlg9K913ef9yRfTNq0Tdok38j/9zxpdnK+JM335j3vOcdDkiSJAAAAAHTCU+kGAAAAADgSghsAAADQFQQ3AAAAoCsIbgAAAEBXENwAAACAriC4AQAAAF1BcAMAAAC6guAGAAAAdAXBDQAAAOgKghuwS+vWrcnDw8N08PT0pJCQEGrRogUNGzaMnnrqKdq5c2e9jzF06FBx302bNpFWnT59WmwDvx56lJubSw899BC1atWKfH19xbby+2avlStXmj4rTz75JLmK/JxKUkMbGuuuu+4Sbf/oo49Iy7j9vB28PeBeENxAo1xyySU0YcIEGj9+PF133XXUsWNH+vPPP2nu3Lk0YMAAsSM8deoUaT2I4yDGHd133330zjvviOD1xhtvFO/1NddcY/fjfPDBB6bTn332GVVUVDi4peCuO3y9/8CApvFu4v3BTd1zzz21vhx5mbIff/yRHn/8cfrtt99o8ODBtH37dmrTpo3F7T755BMqLi6mli1bklYlJCTQ4cOHycfHh/SGA5Bvv/2W/P39RcAaGhraqMdJTU2l9evXk5eXF0VFRVF6ejr98MMPIlhyNn5voPFmzZpFzz77LMXFxZGW/etf/6KBAwdSWFiY0k0BF0PmBhyGf0VxFoe7pTp06EAZGRkiCKqJg5pOnTpRYGAgaRUHNbwN7dq1I71JS0ujyspKiomJaXRgI2cIqqqq6Oqrr6b777+/VibHmfi94QM0Dgc1/PppPSjg9vN2aD1Ig0bgVcEBbNWqVSteRV768MMP673dmjVrxO34sHv3bovrhgwZIi7/9ddfLS6fMGGC6bEPHjwo3XLLLVJsbKzk6ekpzZgxw3S7iooKacmSJeJxwsPDJV9fX6l169bS/fffLyUnJ9fZppSUFOmpp56SunbtKgUHB0uBgYFShw4dxPP+/vvv4jb83HK7rR3kNiclJYnz/HpYc/bsWenhhx+W2rdvL/n5+UmhoaHS4MGDpUWLFkmVlZW1bi8/L7elsLBQevbZZ6V27dqJbYuJiZHGjx8v2t8Yhw8flu666y6pZcuW4vH4NbviiiukFStW1LqtLdtui+rqaqlt27bifl9//bV05swZ8T56eXnVuR38+Hx7fl+LioqkadOmSZ06dZICAgJMr7P563ThwgXpscceE8/D28X3q7kdspycHMnf31+0ob7X8aabbhL3W7Bggemy06dPS7Nnz5aGDRsmJSYmiucKCwuTLrnkEvF+VlVVWX2smm2wx1dffSWNGDFCioyMlHx8fKT4+Hjp9ttvl/7++2+rt+f/Mf5/SUhIELcPCQmR2rRpI914443SqlWrav3/WjuYv37m/4vm+P+QL+fj1NRUadKkSVJcXJx4bS+++GLp/ffft/jcjR07Vnx++X+ge/fu0hdffGG1/bxd06dPF/8jvK28DREREdKVV15p9XMqt6+ug8z882LNjh07pH//+99iG/g5o6KipFGjRkk//fST1dubvy6nTp2S7rjjDrF9/Jngz+ELL7wglZaWWr0vuBa6pcAprr32WoqIiKDs7GzasGED9enTx+b7btu2TfzS519bl19+OZWUlIiiZVZQUEBjxowRxcjBwcHicbnL4+DBg7Ro0SL66quvxPP16tXL4jE3btxIN998syiUjY6OpiuvvFIUynK//bJly8RtuButffv2or7k66+/pqKiIrrpppvE88hiY2MbbP+uXbtEfQpvO2epbrjhBsrLyxNt5m3jLp/vv/9ePH9NfDtuR3JyMl122WXUtWtX0bXHXXnc1cfdRPb8ml6zZo3Y7tLSUlEXxV1CmZmZ4rF++eUX0W1knk3hbS8sLKRvvvmGgoKCxH3t2XbZr7/+KmquIiMjxfvFmS5+zfm9+fjjj+n555+v877cVq7ZOnTokHj/e/ToQRcuXLC4TVZWFvXt21e8n/w68efA2uspa9asmeiiWL58OX366aeiy6Umfg7uNuPHueOOO0yX8+2nTZsmulcvuugiUW/G2S1+X37//Xf66aefxOfFEcXDnDG7/fbb6csvvyQ/Pz+xXdwFeuzYMfr8889FgTYfzOuf+LPN/2/cnciv1aBBg0TGjLsF+f3n09dff724Lb+ff/zxh2g3Zx0vvfRS0+PYk+niz6f8mvPrf/78edq8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27lzZ2nmzJmqCVZ/bWD7PvzwQ6vX8/xMSuwfPfiP4/NBAAAAAMpAzQ0AAADoCoIbAAAA0BUENwAAAKArCG4AAABAVxDcAAAAgK4guAEAAABdQXADAAAAuoLgBgBMPvroo1qr9tb04osvUs+ePUnPePFJDw+PWuvg2INfJ34MPixYsKDe2/JtVq1aRY501113mZ7f0Y8NoHYIbgA0jHdgN9xwg8Me79Zbb6Vjx46RGoMqLeJV2dPS0ui+++5z+XP/73//E88N4I68lW4AAKhHQECAOIBjeHt7K7ZqdVhYmDgAuCNkbgB0ZOjQofToo4/SM888QxEREWLHyt0j5rirZfLkyRQTE0P+/v7UtWtXWr16dZ0ZlNmzZ4vbhoSE0KRJk6i0tLTW877//vvUuXNn8XidOnWid955x3Td6dOnRdfIypUradiwYRQYGEg9evSg7du3m7qAJk6cSHl5eaZulJptlp08eVKsis3tCQ4Opn79+tHPP/9scZvWrVvTzJkz6e677xZtbtmyJS1evNjiNtu2bRNda9zevn37im4bfl55hXtrtm7dSpdddpkI/hITE8XrXFRURPY6fvw4XX755eK5u3TpQhs2bKh1m7Nnz9Itt9wi3gt+H3mb+XWUVVZWiufn65s3b05Tp06lCRMmODSLB6BlCG4AdObjjz+moKAg2rFjB73++uv08ssvm3ag1dXVdO2119Lvv/9On332GR06dEgEL15eXlYf68svvxSBBgcLu3fvpri4OIvAhX3++ec0ffp0evXVV+nw4cPittOmTRPtMPfCCy/QU089JQKIiy66iMaOHSt20oMHDxY1KaGhoaIbhQ98O2sKCwvpuuuuo40bN9K+ffvommuuodGjR1NycrLF7ebOnSuCFr7Ngw8+SA888AAdPXpUXJefny/u061bN9q7dy+98sorIjioDwdV/Fw33XQTHThwgFasWCGCnYcffpjswa//jTfeSL6+vuL9WbRoUa3nrqiooBEjRojAbMuWLeK94kCOn7+8vFzc5rXXXhOv+4cffiiu521CXQ2AGacsxwkALsEr8l5//fWm80OGDJEuvfRSi9v069dPmjp1qmm1d09PzzpXyOaVfXlVYtmgQYPEKr7meOXiHj16mM63a9dOWrZsmcVtXnnlFXFflpSUJFYHfv/9903X//333+Kyw4cPW31ee1x88cXSW2+9ZTrPK2TfcccdpvO8GnN0dLT07rvvivN83Lx5c7FCsWzJkiWiPfv27bNYATknJ0ecnzRpknTfffdZPO+WLVvEa2n+OOZ4NWTz10l+/b29vaXU1FTTZT/++KN4rm+//Vac//TTT6WOHTuKdst4RfeAgABxf8YrS8+ZM8d0fWVlpVgF3vyzIDN/bAB3gcwNgM50797d4jxnWzIzM8Vpzpq0aNFCZE5swZmYAQMGWFw2aNAg02nuluGsBndXcXZBPvz3v/8Vl9fVLm4Tk9tlK87ccFaHu8C4S4afi9tYM3Nj/lzc3cTdc/JzcQaHr+duIVn//v3rfd4///xTdNmZbyNnVzgTk5SUZHP7ua3cpRUfH2/19ZSf68SJEyJzIz8Xd01xdyC/ptx9l5GRYdFmzrz16dPH5nYA6B0KigF0xsfHx+I879x5J8wcXSzMwQZbsmRJrSCoZleXebu4TUxul604sOEutjfeeIPat28vtufmm282dddYey75+ex9rprbyXVKXOdSE9f0OBI/Fwcq3O1UU1RUlEOfC0CvENwAuBHOWKSkpIjh3rZkbzhDwrUh48ePN132xx9/mE5zYS9nIU6dOkW33357o9vFNShVVVUN3o7rS3j4+7/+9S9TIGBeaGuLjh07inqjsrIy8vPzE5ft2rWr3vv07t1b1CdxQNUU/HpysTDXFcnZK/PXU34urumJjo4WdUjW8OvObebCZMavHdcP6X3+IQBboVsKwI0MGTJE7BC5MJYzINyl8uOPP9K6deus3v6xxx6jpUuXisJVDohmzJhBf//9t8VtXnrpJZo1axa9+eab4jYHDx4Ut583b57N7eIRThyocKFwVlYWFRcXW71dhw4dxKgr7l7j7ptx48bZnZGR78Nzz3A30fr160UmyDyjVBMX/fIIKy4g5ufmEU/fffed3QXFw4cPF0Elj2zi9nPBMBdam+MgMTIyUoyQ4uv5PeIRZZw14sCUPfLII+I15zZwNxu/Tzk5OXW2H8DdILgBcDPffPONGELNo5V4KDIPG68ra8KT+vHIJ74Nd5WcOXNGjDwyd88994ih4BzQ8AgkDqC4PqVNmzY2t4lHTN1///3i+bjrhUd5WcMBU3h4uLg9j3jiuhfOdNiDsyE//PCDCFI408HBBY/2YuZ1ODUzXr/99psI3ng4eK9evcR9zGtnbOHp6UnffvstlZSUiJoZfu14lJk5Hiq/efNm0d3FI6s42yMPwZczORxs8fvHGTWu2ZFrgOpqP4C78eCqYqUbAQCgJK5vkefacVRdEg+h5+HZ9c2d4yicieIgiOfG4aHt5jibwwEV5sABd4LMDQC4nU8++UTMU8NdPhyAcCaEAwNHF1xzFx1nVWrODdRUnEHjIm65G5Czabwt3OUm40wYPzeAO0LmBgDcDnd7ccCRnp4uCns5q8HdQ9wl5CjZ2dniwLirzZFLIXBR8m233UZ//fUXz1UmZpnmyRjlAmPGQ995cj/G28gTOwK4CwQ3AAAAoCvolgIAAABdQXADAAAAuoLgBgAAAHQFwQ0AAADoCoIbAAAA0BUENwAAAKArCG4AAABAVxDcAAAAgK4guAEAAADSk/8DRqYkiwZXQsIAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "d = 0.5 # Inter element spacing [lambda]\n", "N = 2**12\n", "\n", "M = 12 # number of antenna elements in the antenna system (ULA)\n", "delta_theta = 1.7\n", "theta1, theta2 = 90+delta_theta, 90-delta_theta\n", "\n", "# Array response vectors of the test signal\n", "a_1 = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(theta1)))\n", "a_2 = np.exp(np.arange(0,M,1)*1j*2*np.pi*d*np.cos(np.deg2rad(theta2)))\n", "\n", "# Generate multichannel test signal\n", "soi1 = np.random.normal(0,1,N) # Signal of Interest\n", "# Notes seems to require some noise , if sigma is too low less reliable outcome?!?\n", "soi2 = np.random.normal(0,1,N)\n", "soi_outer = np.outer( soi1, a_1)\n", "soi_outer+= np.outer( soi2, a_2)\n", "soi_matrix= soi_outer.T\n", "\n", "# Generate multichannel uncorrelated noise\n", "noise = np.random.normal(0,np.sqrt(10**-1),(M,N))\n", "\n", "# Create received signal array\n", "rec_signal = soi_matrix + noise\n", "\n", "R = corr_matrix_estimate(rec_signal.T, imp=\"mem_eff\")\n", "\n", "array_alignment = np.arange(0, M, 1)* d\n", "incident_angles=None\n", "incident_angles2= np.arange(70,110.01,0.01)\n", "ula_scanning_vectors = gen_ula_scanning_vectors(array_alignment, incident_angles2)\n", "\n", "Bartlett = DOA_Bartlett(R,ula_scanning_vectors)\n", "Capon = DOA_Capon(R, ula_scanning_vectors)\n", "\n", "# DOA_plot(Bartlett, incident_angles, log_scale_min = -50)\n", "# DOA_plot(Capon, incident_angles2, log_scale_min = -50, alias_highlight=True)\n", "# fig = plt.figure()\n", "# axes = fig.add_subplot(111)\n", "axes = plt.axes()\n", "axes.plot(incident_angles2,Capon)\n", "axes.set_title('Direction of Arrival estimation ',fontsize = 16)\n", "axes.set_xlabel('Incident angle [deg]')\n", "axes.set_ylabel('Amplitude [dB]')\n", "# Mark nominal incident angles\n", "axes.axvline(linestyle = '--',linewidth = 2,color = 'black',x = theta1)\n", "axes.axvline(linestyle = '--',linewidth = 2,color = 'black',x = theta2)\n", "axes.plot()" ] }, { "cell_type": "markdown", "metadata": { "id": "CAD4Ew1mXs_G" }, "source": [ "## angle of arrival with FFT\n", "\n", "the phase increase as a function of distance between antennas and angle of arrival\n", "\n", "$$ \\omega = 2 \\cdot \\pi \\cdot \\lambda \\cdot d \\cdot sin(\\theta)$$\n", "\n", "Where:\n", "* $ \\lambda $ is the wavelength\n", "* $ \\theta $ is the angle of arrival (AoA)\n", "* d is the distance between antennas\n", "\n", "The AoA can be computed by looking for peaks in the FFT of the range FFT phase.\n", "\n", "Similarly to temporal FFT, physical FFT defines:\n", "\n", "* angular range bin, physical range bin is $ \\frac{1}{d \\cdot \\frac{N}{2}} \\iff $ angular range bin is $ \\frac{2 \\cdot \\lambda *pi}{d \\cdot N} = \\frac{4*pi}{N}$\n", "* angular resolution\n", "\n" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 312 }, "id": "3c3ELYtgXwc7", "outputId": "094c3737-0012-4e26-a183-4e964c62a548" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tetha est [np.float64(44.5633840657307), np.float64(19.098593171027442)]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAUoVJREFUeJzt3Qd41eXZ+PE7e5GEDAIJJBDCHrIFxVlxoFVx9bV/a9X21draqrW2lbpfB+5afa3rratVUdxVXFUUB0P2khkgYYSQvff5X8+T84tJSEISzjm/9f1c12lOkpPk6c+Qc5/7uZ/7DvJ4PB4BAACwoWCzFwAAANBbBDIAAMC2CGQAAIBtEcgAAADbIpABAAC2RSADAABsi0AGAADYFoEMAACwLQIZAABgWwQyAADAtghkAFjGCy+8IEFBQR3ebrrpJv2YIUOGdPqYjz76qNPPtb8BcIZQsxcAAO39z//8j2RmZrb52Lhx41ruT5w4Uf7whz8c8nWTJk2Sf/7zn20+NnfuXOnTp4/cfPPNflwxALMQyACwnNmzZ8vUqVM7/fzAgQPlZz/7WYefa//x++67T5KTkzt9PAB7Y2sJAADYFhkZAJZTWloqBQUFbT6msiqG+vr6Qz4fHR2tbwDchUAGgOXMmjXrkI95PJ6W+5988on069evzedvv/12ueOOOwKyPgDWQSADwHKeeOIJGTFiRKefnz59utx9991tPjZ06NAArAyA1RDIALCco48+ustiX7XN1FHWBoD7UOwLAABsi0AGAADYFoEMAACwLQIZAABgWwQyAADAtoI8rZszAAAA2AgZGQAAYFsEMgAAwLYIZAAAgG0RyAAAANsyNZBZvHixnH322ZKWliZBQUHyzjvvtPm8qkO+7bbbJDU1VaKionRL8m3btpm2XgAAYC2mBjKVlZUyYcIEPSCuIw888IA89thj8tRTT8myZcskJiZGTj/9dKmpqQn4WgEAgPVY5vi1ysi8/fbbMmfOHP2+WpbK1PzhD3+QG2+8UX+stLRU+vfvLy+88IJcfPHF3fq+TU1Nsm/fPomNjdU/AwAAWJ+KA8rLy3UsEBwcbL/p1zt37pS8vLw2E27j4+Nl+vTpsmTJkm4HMiqISU9P9+NKAQCAv+Tm5sqgQYPsF8ioIEZRGZjW1PvG5zpSW1urbwYj4aQuRFxcnN/WCwAAfKesrEwnItSOSlcsG8j01rx58+TOO+885OMqiCGQAQDAXg5XFmLZ49cDBgzQbw8cONDm4+p943MdmTt3rq6lMW4qEwMAAJzJsoFMZmamDlg+++yzNmkmdXrpmGOO6fTrIiIiWrIvZGEAAHA2U7eWKioqZPv27W0KfNesWSOJiYmSkZEh119/vdx9990yfPhwHdjceuutunrZONkEAADczdRAZsWKFXLyySe3vH/DDTfot5dddpk+Yv2nP/1J95q56qqrpKSkRI477jj56KOPJDIy0sRVAwAAq7BMHxl/UdtR6ti2qpdhmwkAAGc9f1u2RgYAAOBwCGQAAIBtEcgAAADbIpABAAC2RSADAABsi0AGAADYFoEMAACwLQIZAIBtNDV5pKa+0exlwEIIZAAAtnHlSytk+r2fSWFFrdlLgUUQyAAAbKGhsUkWbzsopdX1sia3xOzlwCIIZAAAtpBbXC31jc1TdXYcrDB7ObAIAhkAgC3syP8heNmRX2nqWmAdBDIAAFvILqjo8D7cjUAGAGALrbMwOw6SkUEzAhkAgC20rospqqzTN4BABgBgC9kFzVmYoCDv+xT8gkAGAGAHxa0yMJMzEvTbbLaXQCADALADo7g3NT5Sxg+M1/c5gg2FQAYAYJtC36x+fSQrpU/zxwhkQCADALCDHd6MzNB+MZKVHNP8MbaWQCADALBrRianqErqGppMXhnMRiADALBNjYzKyKTERkifiFBpbPJIThFZGbcjkAEAWFp9Y5PkFFa1ZGSCgoIkq1/z9tJ2RhW4HoEMAMDS1BZSQ5NHosNDZEBcZEtAo1DwCwIZAIAthkVmJsdIcHBQyxaT/hyBjOsRyAAAbNHR18jCtL5PUzwQyAAAbJGRMbIwSuteMh6Px7S1wXwEMgAA22VkBidFi9plKq9pkIMVtSauDmYjkAEAWJpRB9M6IxMRGiLpidHNn+fkkqsRyAAALEsNiiypqtf3hyb/kJFpUyfj7TEDdyKQAQBYPhszsG+URIWHtPmc0UuGjIy7EcgAACwru4NtJQO9ZKAQyAAALMsYDNm60NcwlEAGBDIAADtkZIxtpNaMj+0tqZaa+saArw3WQCADALB8RsbIvrSWGBMufaPDRLWR2ek9og33IZABAFhSXUOTnrPU2dZS8/BItpfcjkAGAGBJOUWV0tjkkZjwEOkfF9HhYzi5BAIZAIAlbc//YVtJZV86QsEvCGQAAJZkNLrr6Oi1gaZ4IJABAFiSsV3UUX1MR1tLTU0Mj3QjAhkAgG0zMmreUlhIkFTXN0peWU0AVwerIJABAFiOx+ORHfkVh83IhIUES4YxPJI6GVcikAEAWE5hZZ2U1TSIqvHNTO48I6O0HMH2Bj5wFwIZAIDlGEGJGhYZGdZ2WGR7WSlGwS9HsN2IQAYAYDlGUNLVtpKBpnjuRiADALBsRqarQl8DTfHcjUAGAGDrjIzRFE+dWqqobfD72mAtBDIAAMsxtom6k5GJjwqT5D7NIwx2eodMwj0IZAAAllLb0Ci53mGRw7qRkWmzvUSdjOsQyAAALGV3YZWoJr19IkKlX2zHwyI7O7lEIOM+BDIAAEvJ9gYjKsvS2bDI9oZ6e80QyLgPgQwAwFJ2eOtcjCLeHmVkOLnkOgQyAABLMbIqRt1Ldxi1NDsLK6WR4ZGuQiADALB9Riatb5REhAZLXUOT7C2u9uPqYDUEMgAASw2L/KFGpvuBTEhwUMtMJupk3IVABgBgGQcraqXcOyxycFLzVOvuYlSBOxHIAAAsI9u7rZSeEH3YYZGd95Kh4NdNCGQAALbs6NsevWTciUAGAGC5jExP6mMMxtcYNTZwBwIZAIAjMjJGsW9BRZ2UVtX7fG2wJgIZAIAjMjIxEaGSGh+p7+8oICvjFgQyAABLqKlvlNziql5nZNqcXMonkHELAhkAgCXsKqwUj0ckNjJU+vXp3rDI9ji55D4EMgAAy20rdXdYZHtGN2BOLrkHgQwAwBKM7aDebispNMVzHwIZAIAlZBf0vtDXkJXSHATlFFZJfWOTz9YG6yKQAQDYdup1ewPiIiU6PEQamjySU9RcOAxnI5ABAFhkWOSRZ2RUbY2xNcXJJXcgkAEAmC6/vFYqahskOEgko4fDIjuvk+HkkhtYOpBpbGyUW2+9VTIzMyUqKkqysrLkrrvu0pE7AMB520oZidESEdqzYZHtMarAXULFwu6//3558skn5cUXX5SxY8fKihUr5IorrpD4+Hi59tprzV4eAMBHjOyJcXz6SHByyV0sHch8++23cu6558pZZ52l3x8yZIi8+uqrsnz5crOXBgDwoWwfFPq2P7mkgiOVwe9tTxrYg6W3lo499lj57LPPZOvWrfr9tWvXytdffy2zZ8/u9Gtqa2ulrKyszQ0A4J6MzJCkGFGxS2l1vRRW1vlgdbAyS2dkbrrpJh2IjBo1SkJCQnTNzD333COXXHJJp18zb948ufPOOwO6TgCArzIyRx7IRIaFyKCEKMktqtYnl5J7Oe4A9mDpjMzrr78uL7/8srzyyiuyatUqXSvz0EMP6bedmTt3rpSWlrbccnNzA7pmAEDPh0XuLak+4q6+HRb8epvswbksnZH54x//qLMyF198sX5//Pjxsnv3bp11ueyyyzr8moiICH0DANjDzoLmYZHxUWGSFBPus0Dmiy0H6SXjApbOyFRVVUlwcNslqi2mpibaTgOAUxini1Q2xleFuS1N8Ti55HiWzsicffbZuiYmIyNDH79evXq1PPLII/KLX/zC7KUBAHzEFx1926MpnntYOpB5/PHHdUO83/zmN5Kfny9paWnyq1/9Sm677TazlwYA8ENGxteBzJ7iKl2DowqA4UyWDmRiY2Pl0Ucf1TcAgDP5IyOT3Cdc4iJDpaymQXYXVsnIAbE++96wFkvXyAAA3DAs0nfN8NoOj6TDrxsQyAAATHOgrFYq6xolJDhIMhJ9F8i0qZPh5JKjEcgAAExjZEsGJ0ZLeKhvn5J+GFVAIONkBDIAANNk+6HQ10BTPHcgkAEAmGaHHwp9O9paUrU4cCYCGQCAo45eGzISo3XtjarBUbU4cCYCGQCAo45eG1TNjaq9UaiTcS4CGQCAKarqGloNi/R9INP6+xq1OHAeAhkAgGnDIpWE6DBJ9NGwyM5PLlHw61QEMgAAUxjBhb+yMUpWMk3xnI5ABgBgCn909O00I0NTPMcikAEAODYjM9SbkdlXWqNrcuA8BDIAAJMzMv4LZBJiwiXJW39jnJCCsxDIAAACrqlJDYs0MjL+21pq0xiPOhlHIpABAARcXlmNVNc3SqgeFtnc68VfjECJk0vORCADAAg4IzuSkRQtYSH+fSoiI+NsBDIAAEd19O3s5BI1Ms5EIAMAcNSMpU6nYB+s0LU5cBYCGQCAozMygxKiJTwkWGobmlpGIsA5CGQAAKZlZPzZDM+gJmAPSWZ4pFMRyAAAAqqytkH2l9a0aVgXuO0l6mSchkAGAGDKsEg1KFI1rAsETi45F4EMYDH7S6ulrqHJ7GUAjthWOrSXDIGM0xDIABayaV+ZzLzvc/l/zy6V+kaCGTjTjgAW+h6akWFryWkIZAAL+XTTAVGnQ1fsLpa/frrV7OUAfp2xFIij1wbjZx0sr5WymvqA/Vz4H4EMYCFLswtb7j/55Q75dnuBqesBnJKRiY0Mk/5xEfo+Bb/OQiADWERtQ6OsyinW92cOSxKPR+T3r6+R4so6s5cG+IxqSLezwMjIBC6QabO9lE+djJMQyAAWsW5PqW7YlRQTLs9cOlWnwg+U1cqf3lwnHhXVAA6wr7RaauqbJCwkSNITogL6syn4dSYCGcAilu5o3laaPjRRYiJC5bGLJ+lupKpu5l/LcsxeHuDTbaXBSTES6udhke1xBNuZCGQAi1i2s0i/nZ6ZpN+OGxgvfzpjpL5/9/ubZOuBclPXB/iy0DeQR68NNMVzJgIZwAJU35iVu5vrY2YMbQ5klF/MzJQTRvTTW07XvrpaauobTVwl4MthkYGtj1GyUpp/5q7CSmmgvYFjEMgAFrB+b4lU1zdKQnSYDPf+sVWCg4Pk4YsmSHKfcNmcVy7zFn5v6joBOw2LbC81LlIiw4KlvtEjucUMj3QKAhnAApZmN28rHZ2ZqIOX1vrFRshDF03Q919csls++/6AKWsEfJuRCfzWkvq3Zcx24uSScxDIABaqj2m9rdTaSSNT9DaT8sc31kl+WfPAPcBOKmob9Ek8JStAwyI7216i4Nc5CGQAk6lRBCt2tS307cifZ4+UMalxUlRZJze8vlb34wDsWOirtkrjo8NMWYNRZEzBr3MQyAAm27C3VKrqGiU+KkxGDYjt9HERoSHy2E8n6T3+r7cXyLNfZQd0ncCRMoIHMwp9DcbPJiPjHAQygEW2lTqqj2lvWEofuf3ssfr+gx9vkXV7SgKyRsCuU6/bM342gYxzEMgAJlvmna80PTOxW4+/eFq6zB43QBqaPPpItqo7AOzAzBNLBqPYt7iqXm/Twv4IZAATqV4W3+06tH9MV4KCguS+84+StPhI2VVYJXe8t9HPqwTsf2LJEBUeIgP7RrWp2YG9EcgAJtq0v0xnVGIjQ2V0aly3v04VSv71vyaK2ol6Y+UeeW/tPr+uEzhSjXpYpPkZGf3zObnkKAQygImWGf1jhiRKyGHqY9qbPjRJfnvyMH3/5rfWS25RlV/WCPjCvpJq3aFazQ8blBBt6lqGJht1MpxccgICGcBES436mKHdq49p79pThsvkjL5SXtsg181fTdt1WJaR/RiSHN3joN1vGRma4jkCgQxgYqp9eTf6x3RFTQ/+28WTJDYiVFbllMhjn23z8SoB3zCyH2ZvK7XpJePd6oK9EcgAJvl+f5mU1zRIn4hQGZvW/fqY9tITo+We88fr+/+7aHvLKSjASrItUOhrGOYNpnKKqqS2gUGsdkcgA5i8rTR1SILOrByJcyakyYVTBolq9vv719ZIaVW9j1YJ+LqHjPkZGTW/TL2AUFnRnEJqy+yOQAYwuRFeb7eV2rvjnLEyJCla9pXWyE1vrROPhxEGsA4rdPVt3cKAxnjOQSADmEDNSVreMiiyd4W+7alXmGqEQWhwkHy4IU9e+y7XJ98XOFLlNfWSX15rma2l1pkhTi7ZH4EMYILNeeVSWl0v0eEhMm5gvM++71GD+sqNp4/U9+/89ybZzqkMWCgbo7Z04iLNGRbZHr1knINABjDBsp3N9TFTBidI2BHWx7R31fFD5bhhyVJd36hHGFDMCLNZYcZSez9sLZGRsTsCGcDERnjdHUvQE2rw5CM/mSCJMeG6c/ADH23x+c8A7FofYzDWkp1fQT2ZzRHIAGbUx+zybX1MeylxkfLABUfp+//4eqd8sSXfLz8HsNuJJcPgpGg94kM1kzzord+BPRHIAAG2Lb9CT92NDAuW8QP7+u3nzBrTXy47ZrC+f+OCtfyxhgUyMtbZWooIDZGMxOZRCWwv2RuBDGBSfczUwYkSHurff4JzzxwtI/vHSkFFnQ5mVDYIMGtYpNGIzip+OLlEwa+dEcgAJtXHTM/0z7ZSa5FhIfL4/5skEaHB8uXWg/LcNzv9/jOB1vYUV0ldY5MO2tP6RomVGBkiAhl7I5ABAkgVFRoZGTW9OhBG9I+VW348Rt+//6PNsmFvaUB+LtBmWyk5xvRhke3RS8YZCGSAAFKv/NQ2j8qQTEj3Xf+Yw/nZ9Aw5dUx/qW/0yLXzV0tVXUPAfjbczch2WKk+xsAUbGcgkAECaKl3W2lyRoIuNgxkS/b7LzhK+sdF6FfI//PvTQH72XA3K029bs9Y077Saqmuo9+SXRHIACYMipzup2PXXVF9Zf76XxMlKEhk/ne5snD9/oCvAe5j5YyM+jfRNzpMVBsZoyAZ9kMgAwS0Psa3gyJ76tisZPn1iVn6/k1vrpO9JdWmrAPuq5GxYkZG4eSS/RHIAAGiXvGpXi7q9MakDP/1jzmc3586Qiak95Wymgb5/fw1+ngs4A9qnlhBRXP/osxk62VkFKZg2x+BDBDg+piJ6X31sWizqNlOj108UU/LVh2Gn1i03bS1wNmyvcGBqs2KtciwyM4yMkbmCPZDIAMEiHHsekYA+scczuCkGLlrzlh9/2+fbZOVu5uDLMAthb4Gtpbsj0AGCFR9jB8HRfbGeZMGyZyJaXpr6dpX1+htAMAfGRkrFvoajLWpjAydr+2JQAYIgJyiKskrq5GwkCCZlJEgVnHXnHGSnhili35vfns9U4Dh+GGR7aUnRut/l9X1jbK/rMbs5aAXCGSAAB67njCor0SFm1cf056qW/jbxZN0x9X31+2XN1buMXtJcOSwSOsGMqpmTG21KjTGsycCGSAArLat1JpqznfDqSP0/dvf29iyHQAciYbGJtlVaNTIWHdrqfX6+N23JwIZIJD9Y0xohNcdV5+YJTOGJkpVXaNcN3+N1DU0mb0k2Nye4mo9EiMyLFjS4q01LLI9I2PEzCV7IpABAvAHXdWghAYHyZTB1qmPaU1tLamuv6rL6fq9pfLwJ1vMXhIcUh+TmdxHgi02LLI9Ti7Zm+UDmb1798rPfvYzSUpKkqioKBk/frysWLHC7GUBPa6PGT8oXqLDQ8WqUuOj9Dwm5enF2fLVtoNmLwmOqI+x9raSQlM8e7N0IFNcXCwzZ86UsLAw+fDDD2XTpk3y8MMPS0KCNV/VAh0xtpWsWB/T3uljB8gl0zP0/RteXyuF3q6sgBNPLLXfWjpQVisVtUyGtxvrvjwUkfvvv1/S09Pl+eefb/lYZmamqWsCej0o0gKN8LrjlrPGyPKdRbItv0L++MY6+cdlU/X0bKB3M5asn5GJjwqT5D4RepyCKvg9apB5I0TgsIzMe++9J1OnTpWLLrpIUlJSZNKkSfLss892+TW1tbVSVlbW5gaYRdXGqBoZVYMydYg9Ahl1PPyxn07SM6E+35wvL367y+wlwYbslJFR2F6yL0sHMtnZ2fLkk0/K8OHD5eOPP5Zf//rXcu2118qLL77Y6dfMmzdP4uPjW24qowOYZZk3GzNuYLyebWQXo1Pj5C+zR+n79364Wb7fzwsCdF9JVZ0UVtZZelhke1kp3oLffE4u2Y2lA5mmpiaZPHmy3HvvvTobc9VVV8mVV14pTz31VKdfM3fuXCktLW255ebmBnTNQEfbSlaYr9RTlx07RH40KkUfxb721dVSXddo9pJgE8Yx5tT4SImxSQDPySX7snQgk5qaKmPGjGnzsdGjR0tOTk6nXxMRESFxcXFtboBZrN4/piuqLubBC4+SfrERul7mnoWbzF4SbMIOM5Y6b4pHRsZuLB3IqBNLW7a07WexdetWGTx4sGlrArorr7RGdhdWiWqhYZf6mPaS+kTIIz+ZoO//a2mOfLwxz+wlwQbsMPW6PWOtOwsq9SBV2IelA5nf//73snTpUr21tH37dnnllVfkmWeekWuuucbspQGHtWxn87bS2LR4iYsME7s6fng/ueqEofr+n99cJ/tLq81eEizO2J4ZapP6GCWtb5REhAZLXWOT7CmuMns5cEogM23aNHn77bfl1VdflXHjxsldd90ljz76qFxyySVmLw1w3LHrrtx42kgZPzBeSqrq5YbX1vKKFd3aWjIKaO1AnSw0CpOpk7EXSwcyyo9//GNZv3691NTUyPfff6+LfQE7sPKgyJ5SR7H/dvFEiQ4PkSXZhfLUlzvMXhIsqr6xSW+pWn3qdUeMwIs6GXuxfCAD2FF+WY1kF1SK6iM3zQEZGeNJ6Y5zxur7j3y6VVbnFJu9JFhQblGVNDR5JCosRFLjIsVOssjI2BKBDOAHS72nlUYPiNNdQ53ioimD5MdHpeqtJTUlu7ym3uwlwaKFvmqbxurDItujl4w9EcgAfmyEZ8dj14c7kn3PeeNlYN8oySmqktve3Wj2kmAxdqyPMdBLxp4IZACXD4rsKZVhUvUy6sX226v3ytur95i9JFhyNIF9TiwZjGJf1ZVYdSeGPRDIAD52sLxWtuc3/zE/2qb9Yw5H9cW57pQR+v6t72yU3YWk4iFtCmXtVuirqC7EafGRbbbIYH0EMoCPqcnRyqgBsZIQEy5Odc3JWTJtSIJU1DbItfPX6NMqgJ0zMq0DMLaX7INABvBTIzwnbiu1FhoSLI9ePEniIkNlbW6J/PXTrWYvCSYrqqyT4qp6Ww2LbI8p2PZDIAP4mJMa4R2OKvq974Kj9P0nv9wh3+4oMHtJsEChr/q9iA63x7DI9ji5ZD+hvZlI/eWXX8pXX30lu3fvlqqqKunXr5+eTj1r1ixJT0/3z0oBm7wi3XrAWx/jgkBGOXN8qvzX1HR5bUWu7vr74XXHO3pLDd2pj7FnNqb1yaXsAjIyjsvIVFdXy913360DlTPPPFM+/PBDKSkpkZCQED0H6fbbb5fMzEz9OTUfCXCj5d5tpRH9++iBi25x+zlj9JNXXlmN/OnNdeLxMMLA3fUx9iv0NRhBWE5hFXVfTgtkRowYIevWrZNnn31WysrKZMmSJfLmm2/Kv/71L1m4cKHk5OTIjh075Pjjj5eLL75YPw5wm6XesQTTM51dH9Oe2kZ47OJJEhYSJJ9uOiAvL8sxe0kwwQ4HZGQGxEXqURyqO7ExagEOCWQ++eQTef3113XGJSys406lgwcPlrlz58q2bdvkRz/6kS/XCdirPsZhjfC6Y9zAePnzGaP0/bve3yRbD5SbvSSY1QzPxhkZ1fSRxngODWRGjx7dcl9lXzpKHauPqc+pQCcrK8t3qwRsQDXQ2uJ98nZbRsbwi5mZcsKIflLb0CTXvrpaauobzV4SAkRtw6huz3bPyLQ+ucTwSAefWlK1MAcPHjzk40VFRfpzgFv7x6j4Xv0R7BfrnvqY1tRsnYcvmiDJfcJlc1653P/RZrOXhABR2zBqO0Zty6jtGTujl4wLAhmVeVHpt/YqKiokMtLev8DAEdfHOLx/zOGoIO7BCyfo+/9auluf5IJ7tpVUNqaj5wc7YWvJwcevb7jhBv1W/ZLeeuutEh0d3fK5xsZGWbZsmUycONH3qwRs1AjPDf1jDufkUSkyNi1ONu4rk/fW7JXLZ5KpdUuhr53rYwxZKd6mePkVnb5wh00DmdWrV+u36j/s+vXrJTz8h14R6v6ECRPkxhtv9P0qAYsrra6XTfvLXNHRt7sunDJINu7bJAtW7iGQcVNGJtn+gcyQJJVVEimraZCCijrXbhU7MpBZtGiRfnvFFVfI3/72N4mLi/PXugBb+c5bH6Pasve3eX2Ar5w7caDcu/B7nZXZtK9MxqTx98IVPWS82Qw7iwwLkfSEaF28rAI0AhkH1sg8//zzBDFAK2wrHSoxJlxmje6v7y9YmWv2cuBHKkvf0kPGARmZ1ievmILtoEDm6quvlj179nTrsa+99pq8/PLLR7IuwFaWeSdes63U1kVTB+m3767ZJ3UNdEl1KlXQrbZX1XaMXYdFtkfBrwO3ltQ8pbFjx8rMmTPl7LPPlqlTp0paWpo+pVRcXCybNm2Sr7/+WubPn68//swzz/h35YBFlNXUy4a9pa5thNeVE4b302n5g+W18vnmfDlj3ACzlwQ/yC5ozlqkxUdJVHiIOAGBjAMzMnfddZds2bJFBzJ///vfZcaMGZKRkSEpKSkycuRI+fnPfy7Z2dk6gFGzlo46qnkiLuB0K3cVS5NHJCMxWlLjo8xejqWEhgTL+ZMG6vtvsL3kWOp0T+vJ0U5AUzyHFvsOGDBAbr75Zn1TWRjVxVcNk0xOTtadfDmiBjda6q2PmUE2ptPtpacXZ8uiLQclv7xGUmIphnbusEhnbCu1boqXW1ylO1SrAmA4oNhX9Y5paGjQ9xMSEvRxa5WZGTZsmA5iVGBz6qmn+mutgCUtc+mgyO4alhIrE9P7SmOTR95Zvdfs5cAPjKyF8eTvBKo7dVxkqD6NuKuQrIxjApkXX3xRpk2bJhs2bDjkc08//bSMGzdOQkN7lOQBbK2itkHWUx/T7aLfBSv2dDinDfbmxIyMHh7p3SrbkU8g45hARgUw48eP14W+8+bNk6amJp2FmTVrlvzpT3+Shx56SD788EP/rRawmJW7i3WmYVBClAxK+KHTNdr68VFpEhEaLNvyK2TdnubAD85Q29AoucXVjunq2xoFvw4MZFTvmJdeekkfr1YN8SZPnqwDGxW5rlu3Tq666ir/rRSwoGXZRv8YtpW6Eh8VJqePbT6xRE8ZZ8kprNLBfJ+IUElxWOM4o5eM0bUYDmqIp+piVACjgheVlbnllltk8ODBvl8dYHFLjUCGbaVuby+9t2afLp6EM7Q0wnPAsMjOMzJsLTkqkHn11VdlzJgxOoD5/vvv5de//rWcdtpp8vvf/15qamr8s0rAgqrqGlq2SY6hEd5hHZuVLGnxkXp+zSebDpi9HPi8PsZZ20rtt5ao7XJIIHPBBRfIlVdeKXfccYd89tlnun/MAw88oGcwLVy4UJ9iWrJkif9WC1jIqt0l0tDk0U/OqkYGXQsJDpILpjRnZd5Y2b0u4bDRiSWHdPRtbXBStIQGB0lVXaPklfFC3RGBTF5enp6A/bvf/a7Nx4899lhZs2aNnHHGGXLiiSf6eo2AxbeVkhyXUvfnRGzlq20HZX9pc4EonDIs0nkZmbCQYMlIai7ipzGeQwKZr776SoYPH97h56KionQB8H/+8x9frQ2wNAZF9tzgpBg5ekii7s3x1ip6ytid2m4xCmGNwlinMYZgcnLJIYFMcPDhH37CCSccyXoAW6iua5S1uc31MQyK7JkLW3rK5FJ3YHMFFXW65kklJIckOTOQyUqJaTOGAQ45tQS43eqcYqlrbJL+cRF6Hx3dd9b4VIkOD5FdhVWyYnex2cvBETCyMapGzKkt/Dm5ZH0EMkAvLN35w1gC6mN6JiYiVM4cn6rvv7GCol87M57cnXhiyWD8f6OXjHURyABH0AiPbaXeuchb9Pv+un36GDvsqaU+xltH4kTG2IV9pTVSWcvvqhURyAA9pJq5rc4t0fdphNc7R2cmSkZitFTWNcqH6/PMXg6O+MSSM+tjlL7R4ZIUE67v7yxge8mKCGSAHlqTWyJ1DU2S3CfCkb0zAkFtxxlHsRlZYF/Z3id2J2dkFGYuWRuBDNBDy7Kb62NmDE2kPuYIqOZ46vItzS7S83pgw2GRRVWOz8gonFyyNgIZoLf9Y6iPOSID+0bJzKxkff/NVRT92s3uwipp8ojERoRKvz7OGhbZaS8ZtpYsiUAG6OGr0JXeI8MzaITns0GSamRBk3pWhG0Y2YmhKX0cn5kkI2NtBDJAD6ghkbUNTbr4b5gDW7IH2mljBuhX9HtLqltGPsBe9THGqR431MioYt9GAm7LIZABenHsWp1Wcvqr0ECICg+RH09I0/cXMEjSVozshJN7yBgGJURLeEiwfhGzr4QZYVZDIAP0gCpMNRrhwbfbSx9u2C9lNfVmLwfdtMNFGRk1uT3Te0KRk0vWQyADdFN9Y1NLfQz9Y3xnUnpf/WRYU98kC9ftN3s56O6wSKNGxgUZmdZDMRlVYD0EMkAP6mOq6xslITpMRqTEmr0cx1BbdBdNTdf32V6yh4PltVJe2yDBQeKaWWP0krEuAhmgm4xiVNWVNlj9BYfPnDdpoH5SVBkvniisz8hKpCdGS0SoM4dFtsfJJesikAG6aVmrQZHwrf5xkXLiiH4tR7Fhk9EELtlWUpiCbV0EMkA3NKj6mF1GR18CGX8wtpfeWrWHI64Wl+19MnfTiA6j2LegolZKqylKtxICGaAbNuwr0wMO46PCZNQA6mP84ZTRKdI3OkwOlNXKV9sOmr0cdGtYpHsyMrGRYdI/LqLN1G9YA4EM0IP6mGlDqI/xF1VrMWfiQH2fol9ryy6ocF1GRmF7yZoIZIAeNMJTgyLhP8ZE7E83HpCSqjqzl4MO1NQ3yp7iatdlZBROLlkTgQzQjfqYFbu885Woj/GrsWlxeuuurrFJ3lu7z+zloAO7CivF4xGJiwzVozrcxGj+x9aStRDIAIexaX+Z7pkRGxkqo1PjzF6Oa3rKcHrJmnbkezv6umBYZHtG8z+2lqyFQAY4jGXesQRHD0nUrcrhX3MmpklocJBuQLglr9zs5aAdIxsxNNld20qtt9J2F1bqTt+wBgIZ4DCW7fxhUCT8L6lPhD7BpCxYkWv2ctDpiSV3FfoqqXGREhUWIvWNHsktqjJ7OfAikAG6oPqZ0Agv8C6c0ry99M6avbzytZhs77BIN2Zk1IlFZi5ZD4EM0IXvVX1MTYP0iQjVhagIjJNG9pPkPuFSUFEnizbnm70ctBoWabToH+bCjEzrOhkKfq2DQAbogpGNmTokQUJD+OcSKGEhwXr+kkLRr3Xkl9fqxpCqViwj0Z2BjHFyiSPY1sFfZqAbjfDYVgo84/TS55vzdVt4mM/IxmQkRkt4qDufPmiKZz3u/E0EuqGpySPfeecrUegbeCP6x8qEQfHS0OSRd1bvNXs5UE/e3voYIyvhRjTFsx4CGaATWw6US0lVvUSHh8j4gfFmL8fVnX7V9pKqz4A1MjJGnYgbGcMj1d+Gokq6T1sBgQxwmLEEUwYn6JoNBN45EwbqLYzNeeWyYW+Z2ctxPePEkpszMlHhITKwb5S+T1bGGvjrDHRiqbcRHmMJzBMfHSanjemv77+xkp4yZiMj07YxnnE9YC4CGaADahtjubc+hkGR1ij6fXftPqltaDR7Oa5VXdco+0q9wyLdHshwcslSCGSADmzLr9D735FhwTJ+YF+zl+Nqxw1LlgFxkbom4T+b6Cljlp0FzcMi+0aHSaLLhkW2ZwRy2ZxcsgQCGaCLY9eqPsatx0ytQvUsOX9yc0+ZBWwvmSa7wDuawOXZGOWH7r5kZKyAv9BAF4MiZ9A/xlKnlxZvPSgHymrMXo6rp14P9Z7acbNh3mAup6iK7U4LsFUgc9999+mx8ddff73ZS4HD62N+GBRJIGMFqrh06uAEafKIvLWKnjLmDoskI9MvNkJiI0L17+PuQoZHms02gcx3330nTz/9tBx11FFmLwUu+IOtZvxEhAbLhHT6x1jFRVMHtWwv0VPGvK0lMjKiX1AP5eSSZdgikKmoqJBLLrlEnn32WUlISDB7OXDJsetJGX0lIjTE7OXA66yj0iQqLEQXWK7KKTF7Oa6iAkejsJWMTLMsb0Bn9NaBeWwRyFxzzTVy1llnyaxZs8xeClw0KJL+MdaiJpDPHjdA36enTGDlldVIVV2jhOphkdFmL8cS6CVjHZYPZObPny+rVq2SefPmdevxtbW1UlZW1uYG9OSVJ4MiretC7/bS+2v3674mCGyhb0ZSNF2uveglYx2W/o3Mzc2V6667Tl5++WWJjIzs1teogCc+Pr7llp7e3EwL6G6vjIPltRIeEqy3lmAt6hTZoIQoKa9tkI835pm9HBfWx7Ct1NEUbGq2zGXpQGblypWSn58vkydPltDQUH378ssv5bHHHtP3GxsPfUU2d+5cKS0tbbmpYAjo6bbSxIy+EhlGfYzVBAcHtRzFpqdM4BjbJ1kpFPoaVHYqOEikorZBv/iBeULFwk455RRZv359m49dccUVMmrUKPnzn/8sISGHPtFEREToG3AkgyJnZDKWwKoumDxIHv3PNvl2R6HsKa6SQQnUbARsWCQZmRbqIICqF9pVWCXbD1ZISlz3dg3gsoxMbGysjBs3rs0tJiZGkpKS9H3A9/UxzRkZ+sdYV3pitBwzNEm3y39zJT1lAoGMzOG3l2AeSwcyQCCpLp3qdEZYSJBMzuCYvx16yryxKleaVFcy+E1VXYPsK23upkyNTFucXLIGS28tdeSLL74wewlw+FiCCYP6SlQ49TFWNntcqtz27kbJLarWU8o5Ku8/Rv8YNSgyweXDItvj5JI1kJEBvFqOXQ+lPsbqVKD546NS9f0FK/aYvRxX1MfQ0bfj0RkKU7DNRSADeNEIz57bSwvX79cnR+Dn+himXh/CuCZ7S6rpa2QiAhlA9SwqqtJ/jFTn0imDqY+xA1XHpLIE1fWNsnDdfrOX4/wTSxT6HkJvt0WHtem1g8AjkAFabSuNHxQv0eG2Kx1z7eC+C7w9Zd5YyfaSvzMyFPp2jJNL5iOQAdhWsnVPGdWUTBX87mJ4n8+pE2Gq27XCsMiODfUW/GZT8GsaAhlABzLGfCUKfe1kQHykHD+8n75PVsb39pfV6K071ZIgPSHK7OVYEhkZ8xHIwPVUbYw6xhsSHCRThxDI2LXo981Ve6SRnjI+ZWQZBifFSCjDIrsOZOglYxp+M+F6xliCcWlx0ieC+hi7mTW6v8RFhsr+0hr5dkeB2ctxaH0Mhb6dMbbcVLEvzRnNQSAD1zMa4VEfY09quOe5Ewfq+/SU8deJJepjOqO23NTWW019k+wrrTZ7Oa5EIAPXa6mPoRGe7beXPt6YJ6XV9WYvxzGMjrVkZDqnttzU1ptCYzxzEMjA1fJKa/T0WnXyhfoY+xo/MF5G9o+V2oYm+ffafWYvxzGMJ2YyMl1jVIG5CGTgakY2ZmxavMRFNje2gj17yhhZmQWcXvKJytoGXXekZNFDppsnlwhkzEAgA1db6q2P4di1/ak6GXXybG1uiWw7UG72cmzP6B+T3Cdc4r3da3G4k0tsLZmBQAauZpxYmk6hr+31i42Qk0em6Pv0lPFlfQzZmG43xWNMgSkIZOBa+WU1+lRGUJDI0dTHOIKxvfTW6r3S0Nhk9nKcMSySGUvdnoJ9oKxWymsoNg80AhmI28cSjB4QR+rcIX40KkWSYsLlYHmtfLn1oNnLsbUd3q0lMjKHFx8VpjOCCieXAo9ABuL2QZEcu3aOsJBgmTOJnjK+QEamZzi5ZB4CGbgWgyKd6ULvROzPNh+Qoso6s5dj+2GRZGR6tr1EIBN4BDJwpYKKWtnufcVJfYyzjE6Nk3ED46S+0SPvrtlr9nJsO39M9eQJDwmWQQyL7NHJJbaWAo9ABq4eSzBqQKwkxISbvRz42EVT0vVbtpeObDTB4KRohkV2E1tL5uE3FO4eS0D/GEc6Z0KaziZs2l8mG/eVmr0c+9bHeLMMODzjWu0qqOLEXIARyMCVGBTpbCrLNmtMc08ZsjI9Z/RDodC3+wb2jZKI0GCpa2ySPcUMjwwkAhm4jioA3eLt/Ho0GRnHby+pOpm6Bl4h94TRoZZC3+4LDg6STO9wTRrjBRaBDFxnuXdbaXhKH0nq09z7Ac5z/PBkSYmNkOKqevl88wGzl2PTjAyBTE8Y14tRBYFFIAPXzldiW8nZVJHq+ZO9gyTZXuo21ZlWdaht3Xof3cPwSHMQyMC1/WNohOeenjJfbD0o+eXNk5zRNaN/jOpUy0T4nuHkkjkIZOAqJVV1sjmvTN+nPsb5hqX0kUkZfaWxySPvrKanTM+GRZKN6Sl6yZiDQAausnxnkXg8za+cUmIjzV4OAtxTxqP+46NLxpMw9TE9ZxT7FlbWSTFdpQOGQAYu3VaiPsYtfjwhVSLDgmVbfoWs3UNPmcMhI9N7MRGhkhbf/AKJk0uBQyADdw6KZFvJNVSdxxljB+j7C1bkmr0cyyMjc2Q4uRR4BDJwjdLqet3pVeHEkrtcNLV5e+m9tfukpr7R7OVYlqolMsYTZNFDpleMTBYFv4FDIAPXWLGruT5G7WP3j6M+xk2OGZqkO6+W1zTIJ5voKdOZfSXVunlgeGiwDGRY5JFlZCj4DRgCGbgG20ru7rp6weSB+j7bS53b7s0iZCbFSEhwkNnLsfnJJTIygUIgA9egf4y7Xeg9vfT19gKdeUBX9TEU+h5pILO7qIrRGAFCIAPXdCvdsLf5xMr0TOpj3CgjKVpn49T24lur6PTb9Ykl6mN6q39chMSEh+h6o5witpcCgUAGrrBid7E0eUQyEqMlrS97/24v+n1jJT1lOmJsh5CR6b2goCAZ2jKqgEAmEAhk4ArUx0CZPW6ARIeHyK7CKh3coi3jiZeMzJFhVEFgEcjAFZYxKBLehmVnjU/V9yn6bauspl4OljMs0qfDI+klExAEMnC8ytoGWW/Ux1Do63rG9tIH6/ZLVV2D2cuxXKFvSmyExDIs0kdHsMnIBAKBDBxPbSGowjvVR2RQQrTZy4HJpg1JkCFJ0VJZ1ygL1+eZvRzL2JFf0SabgN4zMloqkKEWy/8IZOB4y7z1MWwrwSjGvHDKIH2f7aUfGLOBKPQ9ckOSYiQoSJ2WbJCCCoZH+huBDByP/jFo7/zJg/QTjfrdyCmsMns5lmDUc1Doe+Qiw0Ik3Zv9ZXvJ/whk4GiqBmJtbom+P4P+MfBSR/CPG5as779BT5l2GRkCGV/g5FLgEMjA0VbtLpGGJo+kxUdKeiL9Y/ADY3vpzZV7pEk1GXIxVUO2q6CqzdBDHJmWXjKcXPI7Ahk42rKd3v4xQ5N0bQRgOH3sAImNDJW9JdWyxFtH5VZ7iqukrrFJItSwSBpG+nbmkjfTBf8hkIGj0QgPXdUxnDMhraXTr5sZ2x9qMrwasIkjx9ZS4BDIwLFq6htlba7RP4b6GHS+vfThhv26IZxb/TAskvoYXzGu5Z7iav23CP5DIAPHWpVTrNPlaoib6hsCtDcxva8MS+kjNfVNukGeWxlZgyzqY3wmKSZc4qPC9JDSnQXUyfgTgQwcP5ZATbumPgYdUb8XF9FTpmXGEhkZXw+PZHspEAhk4Pz6GPrHoAvnTR4oIcFBsiqnRLZ7u9u6deo1PWT8VPDLFGy/IpCBI6k96dVG/xjqY9CFlNhIOWlEP33/TRf2lCmtqm/pPsuwSD8NjyQj41cEMnAk1QSvrqFJkvtE0BcD3S76fWvVHt1TxU12eI8HD4iL1NPB4TucXAoMAhk40lKjPmZoIvUxOKxTRveXhOgwOVBWK4u3HRR3nlgi4PdXUzx1jRke6T8EMnB0Izy2ldAd4aHBcu7Egfr+Gyvctb1kZAuoj/G9wUnREhocJFV1jZJXVmP2chyLQAaOU9vQqI9eKzNohIduumhq8/bSp5sOSElVnesKfY1tEPhOWEiwZHhbPzCqwH8IZOA46/aU6r4gqo+D6hECdMfYtHgZkxqnew+9t3afuO3otbENAt+i4Nf/CGTgOMtaHbumPga9Kfpd4JLtpYbGJtldSA8ZfyKQ8T8CGTjOsp0/NMIDemLOpIESFhIk6/eWyua8MnG63OJqqW/0SGRYsKTGRZq9HEcyjrTTS8Z/CGTgKPWNTbJiV3N9DI3w0FOJMeFyyqj+rsnKtG6Ex7BI/yAj438EMnBcfUx1faP0jQ6TESmxZi8HNi76fWf1Xh0Yu+LEEoW+fmMUUe8vrZGK2gazl+NIBDJw5LHr6ZmJvMJEr5w4op9upFhYWSeLNueLkxknaYysAXyvb3S4JPcJ1/d3sr3kFwQycOygSKA3QkOC5fzJzT1lFqx09vZStrerL4W+/mX06GF7yT8IZOCoExgrdv3Q0RfoLWMitsrIFFTUiuOPXjPGw6+MrslGTRJ8i0AGjrFhX5lU1jVKfFSYjB4QZ/ZyYGPD+8fKhPS+0tDk0bUyTlRcWSdFlQyLDGzBL1tL/kAgA8f1j5k2hPoY+C4ro04vOXFOjrGtlBYfKdHhDIv0J04u+ReBDBxjqTeQmcG2Enzg7AlpegbTlgPlsmGv83rKGNkB6mMC2EumoNJ109UDgUAGjqD+OBj9YxgUCV9QW5Snjx2g7y9YmSvOHRbJtpK/DUqIlvCQYKlraJJ9JdVmL8dxCGTgCCt3F0t5bYPERobK6FTqY+Db7aVXl+fIPR9sktKqenEKo9MsGRn/CwkOkkxvwLid7SWfI5CBramGZU9+sUN+/twy/f7MrGT9RwPwhZnDkmX2uAG6jf+zX+2UEx5cJP/3VbaesO6cjAyBTCBPLu3IJ5BxVSAzb948mTZtmsTGxkpKSorMmTNHtmzZYvayYBGrcorl7Me/lvs/2qynXR+blSS3nzPG7GXBQVRQ/PdLJsvzV0yTkf1jpbS6Xu7+4HuZ9ciX8u+1+2xbBKxeAOQUVrV5goV/cXLJpYHMl19+Kddcc40sXbpUPv30U6mvr5fTTjtNKiv5RXCzspp6ueWd9XLBk9/K5rxySYgOk4cvmiAv//d0SY2PMnt5cBg1Qf3kkSmy8Lrj5f4LxktKbITkFlXL715dLXP+/q0s9w4ptZOcoip9tDw6PEQGMCwyoAW/nFzyPUufufvoo4/avP/CCy/ozMzKlSvlhBNOMG1dMId69fvhhjy5472Nkl/e3KTswimD5C9njtbD/gB/UtmZ/5qWoU8zPbt4pzy9eIeszS2Rnzy9RE4b01/+PHuUbVr9G/Ux6slVBWrwP+N3gynYLgtk2istLdVvExM7P15bW1urb4ayMucdm3SjPcVVctu7G+Vz7+wbVTh3z3nj5NisZLOXBpdRPVeumzVcfjo9XR79zzaZvzxHPtl0QD7bnC//7+gM/Tk1q8nKqI8JvKHeQEZ1ilZF4/HRYWYvyTEsvbXUWlNTk1x//fUyc+ZMGTduXJd1NfHx8S239PT0gK4Tvh87oIorT31ksQ5iwkKC5NpThsuH1x1PEANTpcRGyr3njZePrz9BThmVolsA/HPpbjnpwS/kiUXbpbrOugXBRqt8u2SQnKBPRGjLNt4ObzNCuCyQUbUyGzZskPnz53f5uLlz5+rMjXHLzXVe/we3WLenRM594htdXFld3yhHD0nUAcwNp46QyLAQs5cHtIwz+Mfl0+TVK2fI+IHxUlHbIA9+vEVOfugLWbAi15IN0FpmLDGawJw6GU4uuW9r6be//a28//77snjxYhk0qLmvQ2ciIiL0Dfalngge/mSLvPjtLlHPAaox2V/OHCUXTUln9AAs65isJHn3mpny73X75IGPtsjekmr54xvr5Llvdunf3+OH9xOrICNjDnW9v91RqDv8wiWBjCru/N3vfidvv/22fPHFF5KZmWn2kuBnn2zMk9vf2yj7S2v0+3MmpsktPx5j+ZoDQFGB9rkTB+qOwCoQ/99F2+X7/WVy6T+Wy4kj+sncM0fJKJMHmqpBkcXexn5GkzYERhYZGfcFMmo76ZVXXpF3331X95LJy8vTH1e1L1FRHLN1kv2l1XL7uxt10aSSkRgtd88ZJyeMsM6rWKC71Nbnr07Mkp9MTZfHPt8m/1q6W77celC+2nZQn7S74dSRMiA+0tRszMC+URIVzhZtIBldlDmC7aIamSeffFLXuZx00kmSmpracnvttdfMXhp8RNUPvPDNTl3Mq4KY0OAg+c1JWfLJ708giIHtJcSEy+1nj5X/3HCinDU+VW+Vvr5ij5z00CK9faq2UU07sUR9jGknl3YXVummhHBBRsauXTPRPRv3lcpf3lova/c0H6ufnNFX7j1/vOmpd8DXBifFyBOXTJZf7C6Wexd+r2eDPf75dj3D6fpZI+TiaekSGhIc2BlL1McEXGpcpESFhejDC6opIf8NXJCRgTNV1TXoP+bn/O83OohRgx7VNtIbVx9LEANHmzI4Qd64+hh56meTZUhStBRU1Mkt72yQ0x9dLJ9uOhCQF29GRoZhkebUUBmZMBrjuSQjA+dZtDlf/+FWJzqUs45Kldt/PEZSaJMOl1CddM8Ylyo/GtVfXlm2W/722TZ9HPrKl1bI9MxEufms0XLUoL7+z8hQ6GsKlYXZuK9MB5SnSn+zl+MIBDIIiPyyGrnz35vkg/X7WwoNVRbm5FEpZi8NMEV4aLBcPjNTzp8ySE9wf+7rnbJsZ5HOVJ4zIU3+ePpISU+M9unPrGtokt1FxrBIMjKmDo/k5JLPEMjAr5qaPPLK8hw9obq8pkHPq/nlcZly/azhutU74HZxkWHy5zNGyc9mDJaHP94ib6/ZK++t3ScfbciTy2cOkWtOGuazdvaqLkMV2MeEh+jhlwg8hkf6Hs8k8JsteeUy9611siqnRL8/YVC8LuYdmxZv9tIAy1FZykf+a6L84rhMmffh9/LN9kJ5ZnG2vPZdrvzuR8Pk0mMGS0RoiM/qYxgWaXJG5mClroniv8ORI5CBz6kZM6p3xrOLs6XB++pPpckvPWaIzsgA6Ny4gfHyr19Oly+2HpR5C7+XrQcq9JiOF5fs0pkbdYy7t09+PwyLpD7GLKoJofrPV1pdr5sTJtHs84gRyMCnFm89qIt5VQpbOX1sf7njnLGSGk8DQ6C7VKBy8sgUOX5Ysryxco88/OlWyS2qlt++slr+L32nLgieNiSxx9+Xo9fmU00IVfZtT3G1zsoQyBw5jl/DJw6W18p181fLz59broOY1PhIeebSKfL0pVMJYoBeUr1lLj46Q7648SRvXVmIrMktkYueWiJXvbSipUtvz5vhEciYybj+1Mn4BoEMjriYd/7yHJn1yJfy7pp9onaOrpg5RD694UQ5bewAs5cHOEJMRKhunKcCmp8enaH/nalO2Kf9dbHc9u4GKayoPez3UPUYLRmZFLaWrDBzqaeBKDrG1hJ6bXt+ufzlrQ2yfFeRfn9sWpzMO3+8X3tgAG6m+i2pf2PqxcJ9H26Wzzfny0tLdstbq/bKr0/Kkl/MzOx0flJhZZ2uy1D1GUOSCGSsUvCLI0cggx6rqW+Uvy/aLk9+uUPqGz063X3DqSPk8mOHBKzNOuBmI/rHynOXT5NvdxToLtkb9pbJgx9v0cMp/3DaSDlv0sBDCuuNbMyghCg91BJWCGTIyPgCgQx65NvtBXLzOxtkZ0HzH8VTRqXIneeOlUEJvm3cBeDwjs1KlveuOU73nVGBjOqYfeOCtfKPr3fKX84cJccP79fBiSXqY8xmbO3lFlXpF4YElkeGQAbdoo4J3vPB9/Lmqj36fdVM685zxsoZ4wbQBwEweX7PnEkD9b/FF77dJU8s2i7f7y+TS/+xXE4c0U/mnjlKzzAz6jE4sWS+fn0iJDYiVMprG3QW7fSxA3zexdlNgjwOHzFdVlYm8fHxUlpaKnFxDCTsKfXr8eaqvXLPB5ukuKp5f/1n0wfLH88YqTuSArDei47HP98m/1yyW/dxUjtMF04ZpLeWVuwu1qNBVBdhmOsnTy+R5Tub6wsVdSRbzdqaPjRRpmcmyeCkaNe/SCzr5vM3gQw6pV7B3fz2BlmSXajfHzUgVnfmnZyRYPbSABzGroJKeeDjzbJwfV6bj7965Qw5JivJtHWhWU5hlR7fsmxnoazfU6qDztb6x0XogMYIbNRJJ7cFNmUEMs0IZHqutqFRnv4yW/530XY9ZC4yLFgf/VQzksIo5gVsZeXuIr0trEaFqOzM8ptnSTJN2CylsrZBVuUUy7LsIh3YqF5B6iBFa+q/WeuMzfCUPnpb0ckIZLwIZHpGpTr/8vZ62e6dzHrCiH5y97njJCOJ/VvArtSf+S+2HNT3mThvjzEvq3OKZenOIlmWXSirc0v0i8rWEqLD5GgV2GQ2Z21GD4hzXGBDIONFINM9JVV1ui/F/O9y9fvJfcLltrPHytlH9X6uCwDgyKmTTWtzS2SZCmx2FsrK3cVSU982sImPCtNjK2Z4MzZj0uJsP9uOQMaLQKZr5TX18p/vD+jUc0FFnf7YT49Ol5vOGC3x0RTzAoDVqOzM+r0lslRvRRXJyl1FUlnX2OYx6lTU1CEJMn1okt6SUsNI7VYaQCDjRSAjUlpVL7sKK/Vtd2GVLgI07qtunwa156qKeXszjA4AYI6GxibZsK9Mb0OpwOa7nUX6aHdrqnHplMEJMsMb2KgO7OGh1g5sCGRcFMio/4TFRrCig5Qq2V34w9uSqvouv75fbIT8fMZg+dWJWZb/xQYAdK2xyaN7CS31Bjaq9lGNp2hNHeJQgY2usclMlAnpfS3XmI9AxmGBjPrPpLZ+jGBFZ1aMDEthpZTXtI2+21NH+QYnxciQpGjv2xjdp0DdYukHAwCOHu67Oa9c19eok1FqPp7qN9SaehE7Kb2v3oqakZkokzISOp3bFSgEMjYMZNR/igNltd4ApVVmpaD5bfs90PbS4iObg5RkI1hpfquClehwmjgDAEQ/12zLr9BbUc0no4qkoN0E9bCQIJkwSAU2zcXDKnujprAHEoGMRQMZFRnvL6uR3W22gH7IrLSvRG9NHR5S3R+NbIrxNjM5Rre3tlpaEABgfR6PR7ILKlv62Ki3eWU1bR4TGhykC4ZVYDMjM0kXEvs7m08gY2Igo/Yn95VUewtsq1qCFvV+TlHVIf0AWlPH5dR02tYZlUxvhkV9PCKUYAUA4D8ej0c/V6mAZqk3sFEDSVtTJ7vHpsW3HPeelpmoj4D7EoGMnwOZ+sYm2Vtc3SabYtSu5BZXHdKVsX3KLj2huT6lOVD5IcMyMCHKdkfkAADOlqsCG2+DPvVWBTqt3XDqCLn2lOGmPH9TONFL189fIx+s39/p58NDgnU33CHGFlByTMv91PhICSVYAQDYRHpitL6pAaTK/tLqNltR6uSTWQhkekllUNTxtcGJzcW1zfUq3u2g5BgZEBdp+66KAAB0JDU+SuZMGqhvZmNr6QhaRqusi9NmWwAAYAVsLfkZJ4QAADAfhRoAAMC2CGQAAIBtEcgAAADbIpABAAC2RSADAABsi0AGAADYFoEMAACwLQIZAABgWwQyAADAtghkAACAbRHIAAAA2yKQAQAAtkUgAwAAbMvx0689Hk/LOHAAAGAPxvO28Tzu2kCmvLxcv01PTzd7KQAAoBfP4/Hx8Z1+PshzuFDH5pqammTfvn0SGxsrQUFBPo0UVXCUm5srcXFxPvu+TsI16hrXp2tcn65xfbrG9bH/9VHhiQpi0tLSJDg42L0ZGfV/ftCgQX77/uoXwKq/BFbBNeoa16drXJ+ucX26xvWx9/XpKhNjoNgXAADYFoEMAACwLQKZXoqIiJDbb79dv0XHuEZd4/p0jevTNa5P17g+7rk+ji/2BQAAzkVGBgAA2BaBDAAAsC0CGQAAYFsEMgAAwLZcHcg88cQTMmTIEImMjJTp06fL8uXLu3z8ggULZNSoUfrx48ePl4ULF7b5vKqbvu222yQ1NVWioqJk1qxZsm3btjaPKSoqkksuuUQ3IOrbt6/88pe/lIqKCrGiQF+fXbt26euRmZmpP5+VlaWr6uvq6sSKzPj9MdTW1srEiRN1t+o1a9aIFZl1fT744AP989RjEhISZM6cOWJFZlyfrVu3yrnnnivJycn6b9Bxxx0nixYtEjdcn7feektOO+00SUpK6vTfTU1NjVxzzTX6MX369JELLrhADhw4IFYU6OtTVFQkv/vd72TkyJH69ysjI0OuvfZaKS0tFdN5XGr+/Pme8PBwz3PPPefZuHGj58orr/T07dvXc+DAgQ4f/80333hCQkI8DzzwgGfTpk2eW265xRMWFuZZv359y2Puu+8+T3x8vOedd97xrF271nPOOed4MjMzPdXV1S2POeOMMzwTJkzwLF261PPVV195hg0b5vnpT3/qsRozrs+HH37oufzyyz0ff/yxZ8eOHZ53333Xk5KS4vnDH/7gsRqzfn8M1157rWf27NnqxKFn9erVHqsx6/q88cYbnoSEBM+TTz7p2bJli/7Zr732msdqzLo+w4cP95x55pn681u3bvX85je/8URHR3v279/vcfr1eemllzx33nmn59lnn+30383VV1/tSU9P93z22WeeFStWeGbMmOE59thjPVZjxvVZv3695/zzz/e89957nu3bt+trpH6fLrjgAo/ZXBvIHH300Z5rrrmm5f3GxkZPWlqaZ968eR0+/ic/+YnnrLPOavOx6dOne371q1/p+01NTZ4BAwZ4HnzwwZbPl5SUeCIiIjyvvvqqfl/9AqlfkO+++67lMerJOygoyLN3716P269PR9Q/PPXH2GrMvD4LFy70jBo1Sv8Bs2ogY8b1qa+v9wwcONDzf//3fx6rM+P6HDx4UP++LF68uOUxZWVl+mOffvqpx8nXp7WdO3d2+O9GXS/15L5gwYKWj33//ff6sUuWLPG4/fp05PXXX9cBlfq3ZyZXbi2prYqVK1fq1GvrmUzq/SVLlnT4NerjrR+vnH766S2P37lzp+Tl5bV5jJoRoVJ+xmPUW7WdNHXq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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\"\"\"X=arange(0,100,1e-2)\n", "Y=sin(2*pi*10*X)\n", "FA = fmcw_fft(Y,X,1/1e-2,plot_fft=False)\n", "FAt = fmcw_fft(Y,X,1/1e-2,plot_fft=True)\n", "print(FA)\"\"\"\n", "\n", "lambda1 = 0.05\n", "d = lambda1 /2\n", "Nrx = 20\n", "X = arange(0.0, d*Nrx, d)\n", "theta1=20\n", "theta2 = 45\n", "F1 = 1/lambda1*sin(theta1*pi/180)\n", "F2 = 1/lambda1*sin(theta2*pi/180)\n", "\n", "#ensure that there is at least one full period\n", "assert F1*X[-1]>1\n", "assert F2*X[-1]>1\n", "#Y = sin(2*pi*F1*X)\n", "Y = sin(2*pi*F1*X)+sin(2*pi*F2*X)\n", "Fest=fmcw_fft(Y,X,1/d,plot_fft=False,Npeaks=2)\n", "theta_est = [f1*lambda1*180/pi for f1 in Fest]\n", "print(\"tetha est\",theta_est)\n", "F0=fmcw_fft(Y,X,d,plot_fft=True)\n" ] }, { "cell_type": "markdown", "metadata": { "id": "k5XcKdjo6HU5" }, "source": [ "## angle of arrival with cross-correlation\n", "\n", "background maths:\n", "* https://www.eecs.umich.edu/courses/eecs206/archive/spring02/lab.dir/Lab3/lab3_v3_0_release.pdf\n", "\n", "> p7/14 gives refresher of correlation of different sine waves to find frequencies\n", "\n", "https://www.comm.utoronto.ca/~rsadve/Notes/DOA.pdf\n", "\n", "> Fig 1. for different methods for spectral estimation and DoA\n", "\n", "> Pcorr(φ) is a non-adaptive estimate of the spectrum of the incoming data. The M largest peaks of\n", "this plot are the estimated directions of arrival.\n", "In the case of our linear, equispaced array, the steering vector s(φ) is equivalent to Fourier\n", "coefficients, i.e., the correlation in Eqn. (33) is equivalent to a DFT of the data vector x. We will\n", "see that this technique is optimal (in the maximum likelihood sense) in the single user situation.\n", "\n", "> ibid `p6/25`" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 300 }, "id": "0CXvNb3o6Knj", "outputId": "2bdf321c-f85f-498a-8590-e7220f31a88f" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[45, 20, 44, 21]\n", "20 45\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "corr = []\n", "angles = range(-90,91,1)\n", "for theta in angles:\n", " fc = 1/lambda1*sin(theta*pi/180)\n", " yc = sin(2*pi*fc*X)\n", " xcor = [yc[i]*Y[i] for i in range(len(X))]\n", " corr.append(sum(xcor))\n", "f, ax1 = plt.subplots(num=1, clear=True)\n", "ax1.plot(angles,corr,'-r')\n", "\n", "top4 = sorted(corr,reverse=True)[:4]\n", "angle4 = [angles[list(corr).index(peak)] for peak in top4]\n", "print(angle4)\n", "print(theta1,theta2)" ] }, { "cell_type": "markdown", "metadata": { "id": "TlZmNnysg56j" }, "source": [ "## DFT" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "id": "grolGk4qhDWE" }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "# deprecated after numpy 3.6\n", "# plt.style.use('seaborn-poster')\n", "plt.style.use('default')\n", "%matplotlib inline\n", "\n", "\n", "def DFT(x):\n", " \"\"\"\n", " Function to calculate the\n", " discrete Fourier Transform\n", " of a 1D real-valued signal x\n", " \"\"\"\n", "\n", " N = len(x)\n", " n = np.arange(N)\n", " k = n.reshape((N, 1))\n", " e = np.exp(-2j * np.pi * k * n / N)\n", "\n", " X = np.dot(e, x)\n", "\n", " return X" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 387 }, "id": "S0VuFOOKhFJc", "outputId": "2883b3d1-63e5-4019-c602-b2b70ad12738" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAArEAAAH5CAYAAACWOWaxAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAATAdJREFUeJzt3Qmc1fP+x/H3tC8q0qJ9lSIVlVQiWaL+JSQX13Ltu4trv67lXsLNcsUVQpYIKUv7orQJbUopshRtUtr3mfN/fM73HjNlqlnOOb/t9Xw8fs5vpplzvjM/Te/5/j7fzzcjFovFBAAAAARIEa8HAAAAAOQXIRYAAACBQ4gFAABA4BBiAQAAEDiEWAAAAAQOIRYAAACBQ4gFAABA4BRThGRlZWn58uUqV66cMjIyvB4OAAAA9mBbGGzcuFHVq1dXkSJ7n2+NVIi1AFurVi2vhwEAAID9+Omnn1SzZs29/nmkQqzNwCa+KeXLl/d6OAAAANjDhg0b4pOOidy2N5EKsYkSAguwhFgAAAD/2l/pJwu7AAAAEDiEWAAAAAQOIRYAAACBQ4gFAABA4BBiAQAAEDiEWAAAAAQOIRYAAACBQ4gFAABA4BBiAQAAEDiEWAAAAAQOIRYAAACBQ4gFAABA4BBiAQAAEDiEWAAAAAQOIRYAAACBQ4gFAABA4BBiAQAAEDiEWAC5e/ddqWtX6YEHpMmTpR07vB4RAAC/y4jFYjFFxIYNG1ShQgWtX79e5cuX93o4gH8NGyb16CFlZma/r0wZqUMHqVMnqVcvqW5dL0cIAIh4XiPEAtjd9OkuqG7dKv3f/0lly0offyytXp39Mfb3Z948qXZtL0cKAIhwXqOcAEC2hQtdCYEF2NNPl4YMkQYNklaulL78UnrySalJE/sJI912m9ejBQBEGDOxAJzly6V27aQlS6TWraUJE9ws7J7mzJFatpSysqRPPpGOP96L0QIAQoqZWAB5t369m3m1AHvoodLw4bkHWNOihXTFFe78xht3r5sFACBNCLFA1G3f7hZxzZ0rHXKINHq0VLnyvj/nn/+UKlRwJQb9+6drpAAA/I4QC0Tdf/4jTZwolSsnjRwp1au3/8+xkGutt8w990i//ZbyYQIAkBMhFogy6/1qIdY89ZQrFcira6+VDj9cWrMmO9ACAJAmgQ2xjzzyiDIyMvTXv/7V66EAwfX2225BV7Vq0p//nL/PLV7cBV/zzDPSggUpGSIAAKEJsV988YWef/55NWvWzOuhAMFljUn69HHnN9wglSiR/+c45RTpjDPc4i77hTI6zU4AAB4LXIjdtGmTLrjgAr344os66KCD9vmx27dvj7dpyHkA+J/x491iLtuJ66qrCv48jz/uAvDYsdJHHyVzhAAAhCfEXnfdderatatOPvnk/X5s7969433GEketWrXSMkYgECx8mssukypWLPjzNGgg3XqrO//Xv5IzNgAAwhRiBw0apFmzZsXDaV7cdddd8Ua5ieOnn35K+RiBQPjqK2nUKKlIEVcGUFg33SRlZFitj+s1CwBAigUmxFoAvemmmzRw4ECVKlUqT59TsmTJ+E4POQ8Akp54wj2eeaZUv37hn69qValDB3duW9UCAJBigQmxM2fO1C+//KKjjz5axYoVix+ffPKJnn766fh5JrsGAXmzcqU0cKA7T5QBJMPZZ7vH995L3nMCABD0EHvSSSdp3rx5mjNnzu9Hq1at4ou87Lxo0aJeDxEIBmuHZf1h27WT2rZN3vOedZZ7nDZNWrEiec8LAEAuiikgypUrp6ZNm+72vrJly+rggw/+w/sB7MXmzdJzzyV/FtbUrCkde6w0fbo0dKjbDAEAgKjPxAJIggEDpLVrXUcB6++abJQUAADSJCMWi053cusTa622rFMBi7wQOVY3fthh0nffuZKC665L/mv88INbKGblPVZ7W6lS8l8DABBqec1rzMQCUTF5sguwFSpIl1ySmteoV0866igXmD/4IDWvAQAAIRaIkLffzr7lX7Zs6l6HkgIAQBoQYoEo2LUrO1See25qXysRYseNk9atS+1rAQAiixALRMGECdLq1a5GtVOn1L5W48bS4YdLO3dKH32U2tcCAEQWIRaIWilBsTR01qOkAACQYoRYIOxsY4PEVrCpLiXYM8SOHi1t2pSe1wQARAohFgg7q0397TfpkEOk449Pz2s2a+Z60W7bJo0YkZ7XBABECiEWiEopQc+ern9rOmRkUFIAAEgpQiwQZjYTalvAprOUIMFCsxk+XNq6Nb2vDQAIPUIsEGajRkkbN0o1akjt2qX3tVu1kmrXljZvlsaMSe9rAwBCjxALhFmilKBXL6lImv+6W0lB9+7ZdbkAACQRIRYIqy1bsvu0pruUIOGEE9zjpEnevD4AILQI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n3zyfq87/Pn3MWHQoEHxrah79OiR8jEiuddw3bp1uu6661StWrV4q59GjRrxczWA1/Gpp57SYYcdptKlS8e3Mr355pu1bdu2tI0XfzRp0iR169YtvvWr/Xx8//33tT8TJ07U0UcfHf+72LBhQw0YMEApZS22UDCDBg2KlShRIvbyyy/H5s+fH7viiitiBx54YGzVqlW5fvzUqVNjRYsWjT322GOxBQsWxP7+97/HihcvHps3b17ax46CX8fzzz8/9uyzz8Zmz54d+/rrr2OXXHJJrEKFCrGff/457WNHwa9jwg8//BCrUaNGrEOHDrEzzjgjbeNF4a/h9u3bY61atYp16dIlNmXKlPi1nDhxYmzOnDlpHzsKfh0HDhwYK1myZPzRruHo0aNj1apVi918881pHzuyjRgxInbPPffEhgwZYq1YY0OHDo3ty/fffx8rU6ZM7JZbbolnnL59+8Yzz6hRo2KpQogthGOOOSZ23XXX/f52ZmZmrHr16rHevXvn+vG9evWKde3adbf3tWnTJnbVVVelfKxI3nXc065du2LlypWLvfrqqykcJVJxHe3atWvXLta/f//YxRdfTIgN2DV87rnnYvXr14/t2LEjjaNEsq+jfWynTp12e58Fofbt26d8rMibvITY22+/PXbEEUfs9r5zzz031rlz51iqUE5QQDt27NDMmTPjt5ITihQpEn/7008/zfVz7P05P9507tx5rx8Pf17HPW3ZskU7d+5UxYoVUzhSpOI6Pvjgg6pSpYouu+yyNI0UybyGH374odq2bRsvJ6hataqaNm2qhx9+WJmZmWkcOQp7Hdu1axf/nETJwffffx8vCenSpUvaxo3C8yLjFEvZM4fcr7/+Gv9BaT84c7K3Fy5cmOvnrFy5MtePt/cjONdxT3fccUe8ZmjPv7zw93WcMmWKXnrpJc2ZMydNo0Syr6GFnY8//lgXXHBBPPQsXrxY1157bfyXStsOE8G4jueff37884477ji7O6xdu3bp6quv1t13352mUSMZ9pZxNmzYoK1bt8brnZONmVigEB555JH4oqChQ4fGFzAgGDZu3KgLL7wwvkivUqVKXg8HBZSVlRWfSX/hhRfUsmVLnXvuubrnnnvUr18/r4eGfLDFQDaD/t///lezZs3SkCFDNHz4cP3zn//0emjwOWZiC8j+4StatKhWrVq12/vt7UMOOSTXz7H35+fj4c/rmNCnT594iB03bpyaNWuW4pEimdfxu+++048//hhfeZszEJlixYpp0aJFatCgQRpGjsL8XbSOBMWLF49/XkKTJk3iM0J2W7tEiRIpHzcKfx3vvffe+C+Vl19+efxt69yzefNmXXnllfFfSqwcAf53yF4yTvny5VMyC2v4P6OA7Iej/eY/fvz43f4RtLetRis39v6cH2/Gjh2714+HP6+jeeyxx+KzBKNGjVKrVq3SNFok6zpam7t58+bFSwkSR/fu3XXiiSfGz63FD/z/d7F9+/bxEoLELyDmm2++iYdbAmxwrqOtK9gzqCZ+MXFrihAEbb3IOClbMhaRNiLWFmTAgAHxdhJXXnllvI3IypUr439+4YUXxu68887dWmwVK1Ys1qdPn3hrpvvuu48WWwG8jo888ki8fczgwYNjK1as+P3YuHGjh18F8nsd90R3guBdw6VLl8Y7g1x//fWxRYsWxYYNGxarUqVK7F//+peHXwXyex3t30K7jm+99Va8TdOYMWNiDRo0iHf0gXc2btwYbyVph8XFJ554In6+ZMmS+J/bNbRruWeLrdtuuy2ecawVJS22fM76oNWuXTseaqytyPTp03//sxNOOCH+D2NO77zzTqxRo0bxj7dWFMOHD/dg1CjMdaxTp078L/Seh/0gRrD+PuZEiA3mNZw2bVq8VaGFJmu39dBDD8VbpyE413Hnzp2x+++/Px5cS5UqFatVq1bs2muvjf32228ejR5mwoQJuf5bl7h29mjXcs/PadGiRfy629/HV155JZZKGfaf1M3zAgAAAMlHTSwAAAAChxALAACAwCHEAgAAIHAIsQAAAAgcQiwAAAAChxALAACAwCHEAgAAIHAIsQAAAAgcQiwAAAAChxALAACAwCHEAgAAQEHz/wD0AxdxRTSKAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "\n", "# sampling rate\n", "sr = 100\n", "# sampling interval\n", "ts = 1.0/sr\n", "t = np.arange(0,1,ts)\n", "\n", "freq = 1.\n", "x = 3*np.sin(2*np.pi*freq*t)\n", "\n", "freq = 4\n", "x += np.sin(2*np.pi*freq*t)\n", "\n", "freq = 7\n", "x += 0.5* np.sin(2*np.pi*freq*t)\n", "\n", "plt.figure(figsize = (8, 6))\n", "plt.plot(t, x, 'r')\n", "plt.ylabel('Amplitude')\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 523 }, "id": "GhL6JGXxhMXb", "outputId": "44d78950-8460-4a14-8894-e9a999a58ac2" }, "outputs": [ { "data": { "image/png": "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GTMGu2UA/sfqSVk9p3///Vcej0fLli1zhtYNGDCAiWAAAAB8XVMq0c5SpXI6Y2+//bYvdxueVq50szoKF3YXIBxZ8OfGG911q98UDP36uYX27f+RBWSSE5Dysp/hmWfc9Ycflv74Q2Fnxw43oPb449K+fdKsWdK997rZYI8+emamTwBB9dBDD+n1119X3759dezYMd17771O8fN33nlHbWw4MQAAAPwTlDK//vqrTp8+7evdhu/QPbKkEO6aNXNvbcicZSsF0g8/SN4g9wcf2PRVKd+X1VKxSQds1r7773eDxuHis8+kSpXcgvOWFfXmm9Jzz0nFikkHD0ojRrg/28cfB7ulAGRJnW21efNmp6D47t27tWPHDnXs2DHYzQIAAIic4XuWEZWQpajv2rVL33zzjdpbzZdoR5FzRIrbbnMDIZatZIXCbSa7QDh+3B2eZoGwBx5wZ9273NkEx493h73Nny+9/rrUp49C2qlT7tDFcePc+xZ4sqGIZcq49/v3l+bOtem+3JkJrWaWnac8eYLabACuTJkyOQsAAAB8HJRaddb06jZ0L2/evHrzzTcvOTNfVKDIOSJF1qxSixZuto4FdQIVlLJhe7/84hYpf+st3+yzdGlp2DA3yPX889Jdd7mPhSqrHWUBKZtWvm9f6dln3eCalw1ltGL0118vVasm/fSTzf3u1t0CEDA2257NcJcUK214PwAAABwxHktxijKHDh1S9uzZdfDgQWXLls33B9izRypQwOZglmwmQn8cAwikr75yM6asfpHVY7Igib+H7dWv72ZJTZt2ZgihL9g+LZtoxgypVSvpiy8UkhYvds+BFTe3YOA991z6nNWrd2a2RHstgID0DV544YX4dStw/t5776l8+fKqU6eO89iSJUv0888/67HHHnMKnocbv/ebzponJksWd/3IESlzZr8eDgCAiHTUz5+nvuwbpLim1I033qgDFnA5T+PsuajmzZIqX56AFCKDFdi2ek67dkkLFvj3WCdPSlZ7xYJHNhTYlwEpY8HiQYPcLKPJk/3/86TE4cPSffe5ASm7vVRAytStaxWW3XUrfG5D/wAERP/+/eOXffv2qVu3blq8eLHeeustZ/nhhx/UvXt37bGLVgAAALj8oNS8efN00r48nsWuEH5vV+mjGUXOEWnSp5fuuMNdt6wdfxoyRNq4UcqX70yRc1+r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d8UVVzgdstOnTweh5dF3/k+dOuV5/vnnnUBUhgwZPEWLFvU89thjnv379wep9eFr7ty55/0b7j3fdmvn/+zXVKlSxXmv7Hd/zJgxQWo9Lvf/FnzjfP+HbEn4f8O+mNjfqZw5czpf2m+//XYncAX/B6U49/719ddfeypWrOj0h8qWLev54IMPEj0fFxfn6devnyd//vzONg0bNnQu6OHyHDp0yPk9t7/v1heyz+Nnn33Wc+LEifhtOPeB6y/FJeFc//33304QKkuWLJ5s2bJ5OnToELBEjhj7x//5WAAAAAAAAMAZ1JQCAAAAAABAwBGUAgAAAAAAQMARlAIAAAAAAEDAEZQCAAAAAABAwBGUAgAAAAAAQMARlAIAAAAAAEDAEZQCAAAAAABAwBGUAgAAAAAAQMARlAIAAAAApNh1112n8ePH+3Sf69evV5EiRXT06FGf7hdAaCEoBQAAAABh5IEHHlBMTMw5y5YtWwLelq+++kp79uxRmzZt4h8rUaKEBg8efM62zz//vKpUqZKk/ZYvX161a9fWW2+95dP2AggtBKUAAAAAIMzcfPPN2rVrV6KlZMmS52x38uRJv7ZjyJAh6tChg1Kl8v1XS9vv8OHDdfr0aZ/vG0BoICgFAAAAAGEmffr0KlCgQKIlderUuuGGG9SlSxd1795defLkUZMmTZzt161bp1tuuUVZsmRR/vz5df/99+uvv/6K358Nk2vXrp3zfMGCBfXmm286+7L9XMi+ffs0Z84cNW/ePEU/w/myvSzLyqtx48b6559/NH/+/BTtH0DoIygFAAAAABHko48+Urp06bRo0SKNGDFCBw4c0I033qiqVatq+fLlmjFjhjPk7q677op/zVNPPeUEf7788kvNnDlT8+bN08qVKy96nIULFypTpkwqV65citqZMMvLhh6WLl3aqU/lZT+DDff7/vvvU7R/AKEvTbAbAAAAAABInmnTpjlZTV6WBTVp0iRn/corr9TAgQPjn3v55ZedgNSrr74a/9iHH36ookWL6pdfflGhQoU0evRojRs3Tg0bNowPbFmh8YvZtm2bk3V1vqF7zzzzjPr27XvOUEKrFeVl2V3G4/GodevWyp49u95///1Er7G22XEARCaCUgAAAAAQZho0aODUW/LKnDlz/Hq1atUSbbtmzRrNnTs3URDL69dff9Xx48edgFGtWrXi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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "freqs = [1,4,7]\n", "x = np.sin(2*np.pi*freqs[0]*t)\n", "for f in [1,4,7]:\n", " x+=np.sin(2*np.pi*f*t)\n", "\n", "X = DFT(x)\n", "\n", "# calculate the frequency\n", "N = len(X)\n", "n = np.arange(N)\n", "T = N/sr\n", "freq = n/T\n", "\n", "plt.figure(figsize = (12, 6))\n", "#plt.figure(figsize = (8, 6))\n", "plt.subplot(221)\n", "\n", "plt.plot(t, x, 'r')\n", "plt.ylabel('Amplitude')\n", "\n", "plt.subplot(222)\n", "\n", "plt.stem(freq, abs(X), 'b', \\\n", " markerfmt=\" \", basefmt=\"-b\")\n", "plt.xlabel('Freq (Hz)')\n", "plt.ylabel('DFT Amplitude |X(freq)|')\n", "\n", "n_oneside = N//2\n", "# get the one side frequency\n", "f_oneside = freq[:n_oneside]\n", "\n", "# normalize the amplitude\n", "X_oneside =X[:n_oneside]/n_oneside\n", "\n", "\n", "plt.subplot(223)\n", "plt.stem(f_oneside, abs(X_oneside), 'b', \\\n", " markerfmt=\" \", basefmt=\"-b\")\n", "plt.xlabel('Freq (Hz)')\n", "plt.ylabel('DFT Amplitude |X(freq)|')\n", "\n", "plt.subplot(224)\n", "plt.stem(f_oneside, abs(X_oneside), 'b', \\\n", " markerfmt=\" \", basefmt=\"-b\")\n", "plt.xlabel('Freq (Hz)')\n", "plt.xlim(0, 10)\n", "plt.tight_layout()\n", "#plt.show()\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "xECwQNYPrmD7" }, "source": [ "## AoA - MRE (old #2)\n", "\n", "Below computes AoA for one target with 2 antennas, only looking at the phase difference" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "mWbST4hKruiN", "outputId": "f5cfc1c6-a206-498b-fbee-c37782ff8ff0" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "theta: -60, calculated_p: -64\n", "theta: -30, calculated: -31\n", "theta: -18, calculated_p: -19\n", "theta: 0, calculated: -0.019\n", "theta: 18, calculated: 19\n", "theta: 30, calculated: 31\n", "theta: 60, calculated: 64\n" ] } ], "source": [ "from numpy import abs ,angle, arange, arcsin, cos, pi, sqrt, tan\n", "from scipy.fft import fft\n", "\n", "class Object(object):\n", " def __init__(self, x, y, z):\n", " self.x = x\n", " self.y = y\n", " self.z = z\n", " def dist(self, obj2):\n", " sx = self.x\n", " sy = self.y\n", " sz = self.z\n", " ox = obj2.x\n", " oy = obj2.y\n", " oz = obj2.z\n", " distance = sqrt((sx-ox)**2+(sy-oy)**2+(sz-oz)**2)\n", " return distance\n", " def __str__(self):\n", " return f\"x: {self.x}, Y: {self.y}, z: {self.z}\"\n", "\n", "def y_IF(f0_min,slope,T, antenna_tx, antenna_rx, target):\n", " \"\"\" y_{IF} = cos(2 \\pi [-f_0\\delta -2 * K * \\delta * t + K* \\delta^2])\n", " delta: delta t = distance (m)/c\n", " A: (x,y,z)\n", " T: (x,y,z)\n", " \"\"\"\n", " c = 3e8\n", " distance = antenna_tx.dist(target) + antenna_rx.dist(target)\n", " # delta = sqrt((A.x-target.x)**2+(A.y-target.y)**2+(A.z-target.z)**2)/3e8\n", " delta = distance/c\n", " # /!!!!!!\\ most equations have 2 * delta as delta is the one way time of flight\n", " # here we have computed the 2 way round time of flight ence the lack of 2x\n", " # see text books ahve\n", " # YIF = cos(2 *pi *(2 * f0_min * delta + 2 * slope * delta * T + slope * delta**2))\n", " # but we only have :\n", " YIF = cos(2 *pi *(f0_min * delta + 2 * slope * delta * T + slope * delta**2))\n", " return YIF\n", "f0_min = 60e9\n", "c = 3e8\n", "# lambda ~5mm at 60GHz\n", "lambda0_max = 3e8/f0_min\n", "n_rx = 2\n", "Distance = 10\n", "k = 200e12\n", "n_samples = 512\n", "f_if = 2*k*Distance/c\n", "fs = 50e6\n", "ts = 1/fs\n", "\n", "antenna_tx = Object(-lambda0_max/2,0,0)\n", "T = arange(0, n_samples*ts+ts, ts)\n", "\n", "for theta in [-180/3, -180/6, -180/10, 0, 180/10, 180/6, 180/3]:\n", " scatterer = Object(4*tan(theta/180*pi),4,0)\n", "\n", " Antennas_RXs = [Object(i*lambda0_max/2,0,0) for i in range(n_rx)]\n", "\n", " phases = []\n", " i_peaks = []\n", " for target_i in [scatterer]:\n", " for antenna_rx in Antennas_RXs:\n", " Distance = antenna_rx.dist(target_i) + antenna_tx.dist(target_i)\n", " f_if = 2*k*Distance/c\n", " assert f_if < 1/ts/2\n", " YIF = y_IF(f0_min, k,T, antenna_tx, antenna_rx, target_i)\n", " FT = fft(YIF)\n", " MAG = abs(FT)[0:int(n_samples/2)]\n", " ANG = angle(FT)[0:int(n_samples/2)]\n", "\n", " # now find the peak\n", " amplitude_peak = sorted(MAG, reverse = True)[0]\n", " i_peak = list(MAG).index(amplitude_peak)\n", " if not i_peaks:\n", " i_peaks.append(i_peak)\n", " else:\n", " try:\n", " assert i_peak in i_peaks\n", " except:\n", " # exit now as we don't have the logic to track across range bins\n", " print(\"bin range change\")\n", " break\n", " phases.append(ANG[0:int(n_samples/2)][i_peak])\n", " f_peak = i_peak * 1/ts / n_samples\n", " d2 = f_peak*c/2/k\n", " dfixed = 0\n", "\n", " delta_phase = (phases[0]-phases[1]) #/len(phases)\n", " # need to verify / proof below formula still seems buggy\n", " # idea is that phase goes inside frequency range bin and needs to be computed\n", " # as such\n", " # print(\"G***\", 90+arcsin(delta_phase*1/ts*c/pi/ n_samples/1/k/lambda0_max)*180/pi)\n", " if delta_phase/pi>1:\n", " theta_calc = arcsin(delta_phase/pi -2)*180/pi\n", " print(f\"theta: {theta:.2g}, calculated_p: {theta_calc:.2g}\")\n", " elif delta_phase/pi<-1:\n", " theta_calc = arcsin(delta_phase/pi % +2)*180/pi\n", " print(f\"theta: {theta:.2g}, calculated_m: {theta_calc:.2g}\")\n", " else:\n", " theta_calc = arcsin(delta_phase/pi)*180/pi\n", " print(f\"theta: {theta:.2g}, calculated: {theta_calc:.2g}\")" ] }, { "cell_type": "markdown", "metadata": { "id": "IRvNvZwRhqJ3" }, "source": [ "## AoA trial #2" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "dH-PZQwohzo7", "outputId": "3fa2c891-9b1f-4cf8-c360-9d9c216c99b9" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Scatterer Angle Objective -60.0\n", "delta_phase -0.8954859449632953\n", "theta calc -63.57091626643821\n", "Scatterer Angle Objective -30.0\n", "delta_phase 1.4814397586646584\n", "ipeaks [126]\n", "test ? 28.779477208424495\n", "Scatterer Angle Objective -18.0\n", "delta_phase -0.3195709654583408\n", "theta calc -18.636980685491228\n", "Scatterer Angle Objective 0\n", "delta_phase -0.00032144728634370725\n", "theta calc -0.018417573160603964\n", "Scatterer Angle Objective 18.0\n", "delta_phase 0.31940018563514966\n", "theta calc 18.626654540903953\n", "Scatterer Angle Objective 30.0\n", "delta_phase 0.5153379636703278\n", "theta calc 31.020047623162547\n", "Scatterer Angle Objective 60.0\n", "delta_phase -1.1048598118773927\n", "ipeaks [219]\n", "test ? 63.52644220014059\n" ] } ], "source": [ "#imports\n", "from numpy import abs ,angle, arange, array, linspace, matrix, pi, sin, cos, exp\n", "from numpy import sqrt, arcsin, arccos, arctan, dot, tan\n", "from numpy import column_stack, identity\n", "#import scipy.fftpack\n", "from scipy.fftpack import fft, fftshift, fftfreq\n", "import matplotlib.pyplot as plt\n", "\n", "class Object(object):\n", " def __init__(self, x, y, z):\n", " self.x = x\n", " self.y = y\n", " self.z = z\n", " def dist(self, obj2):\n", " sx = self.x\n", " sy = self.y\n", " sz = self.z\n", " ox = obj2.x\n", " oy = obj2.y\n", " oz = obj2.z\n", " distance = sqrt((sx-ox)**2+(sy-oy)**2+(sz-oz)**2)\n", " return distance\n", " def __str__(self):\n", " return f\"x: {self.x}, Y: {self.y}, z: {self.z}\"\n", "\n", "def y_IF(lambda0_max,slope,T, antenna_tx, antenna_rx, target):\n", " \"\"\" y_{IF} = cos(2 \\pi [-f_0\\delta -2 * K * \\delta * t + K* \\delta^2])\n", " delta: delta t = distance (m)/c\n", " A: (x,y,z)\n", " T: (x,y,z)\n", " \"\"\"\n", " distance = antenna_RX.dist(target_i) + antenna_TX.dist(target_i)\n", " # delta = sqrt((A.x-target.x)**2+(A.y-target.y)**2+(A.z-target.z)**2)/3e8\n", " delta = distance/c\n", " f_0 = c/lambda0_max\n", " YIF = cos(2 *pi *(-f_0 *delta - 2 * slope * delta * T + slope * delta**2))\n", " return YIF\n", "\n", "f0_min = 60e9\n", "c = 3e8\n", "# lambda ~5mm at 60GHz\n", "lambda0_max = 3e8/f0_min\n", "n_rx = 16\n", "Distance = 10\n", "k = 200e12\n", "n_samples = 512\n", "f_if = 2*k*Distance/c\n", "fs = 50e6\n", "ts = 1/fs\n", "\n", "for Scatterer_Angle in [-180/3, -180/6, -180/10, 0, 180/10, 180/6, 180/3]:\n", " print(\"Scatterer Angle Objective\", Scatterer_Angle)\n", " Scatterer = Object(4*tan(Scatterer_Angle/180*pi),4,0)\n", " if abs(Scatterer.x)>0:\n", " alpha = arctan(Scatterer.y/Scatterer.x)\n", " else:\n", " alpha = 0\n", " # theta = pi/2-alpha\n", " theta = None\n", " antenna_TX = Object(-lambda0_max/2,0,0)\n", " Antennas_RX = [Object(i*lambda0_max/2,0,0) for i in range(n_rx)]\n", " # ts = 1/f_if/n_samples\n", " # T = linspace(0.0, n_samples*ts+ts, n_samples)\n", " T = arange(0, n_samples*ts+ts, ts)\n", " phases = []\n", " Distances = []\n", " i_peaks = []\n", " for target_i in [Scatterer]:\n", " for antenna_RX in Antennas_RX[:8]:\n", " Distance = antenna_RX.dist(target_i) + antenna_TX.dist(target_i)\n", " Distances.append(Distance)\n", " f_if = 2*k*Distance/c\n", " assert f_if < 1/ts/2\n", " YIF = y_IF(lambda0_max,k,T, antenna_TX, antenna_RX, target_i)\n", " FT = fft(YIF)\n", " MAG = abs(FT)[0:int(n_samples/2)]\n", " ANG = angle(FT)[0:int(n_samples/2)]\n", "\n", " # now find the peak\n", " amplitude_peak = sorted(MAG, reverse = True)[0]\n", " i_peak = list(MAG).index(amplitude_peak)\n", " if not i_peaks:\n", " i_peaks.append(i_peak)\n", " else:\n", " try:\n", " assert i_peak in i_peaks\n", " except:\n", " # exit now as we don't have the logic to track across range bins\n", " print(\"bin range change\")\n", " break\n", " phases.append(ANG[0:int(n_samples/2)][i_peak])\n", " f_peak = i_peak * 1/ts / n_samples\n", " d2 = f_peak*c/2/k\n", " dfixed = 0\n", "\n", " delta_d = Distances[1]-Distances[0]\n", " delta_phase = (phases[0]-phases[1]) #/len(phases)\n", " # need to verify / proof below formula still seems buggy\n", " # idea is that phase goes inside frequency range bin and needs to be computed\n", " # as such\n", " # print(\"G***\", 90+arcsin(delta_phase*1/ts*c/pi/ n_samples/1/k/lambda0_max)*180/pi)\n", " print(\"delta_phase\",delta_phase/pi)\n", " if abs(delta_phase/pi)>1:\n", " print(\"ipeaks\",i_peaks)\n", " print(\"test ?\",arcsin(delta_phase/pi %1)*180/pi)\n", " else:\n", " theta_calc = arcsin(delta_phase/pi)*180/pi\n", " print(\"theta calc\", theta_calc)\n" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Qq4PIEmky4eU", "outputId": "6ca6516d-62c0-4db4-eb9c-e0250a49ebd3" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x: 0.0, Y: 10, z: 0\n", "3.1249999565829967e-07 /// 0.0 @@ -3.1249999565829967e-07\n", "x: 5.773502691896257, Y: 10, z: 0\n", "0.001250202952732593 /// 0.0012499999999999998 @@ -0.001250202952732593\n" ] } ], "source": [ "tx = Object(-lambda0_max/2,0,0)\n", "rx0 = Object(0,0,0)\n", "rx1 = Object(-lambda0_max/2,0,0)\n", "angle = 30\n", "angle = 0\n", "D0 = 10\n", "for angle in [0, 30]:\n", " theta = angle/180*pi\n", " target = Object(D0*tan(theta),D0,0)\n", " print(target)\n", " d1 = tx.dist(target)+rx0.dist(target)\n", " d2 = tx.dist(target)+rx1.dist(target)\n", " print(d2-d1,\"///\", lambda0_max/2*sin(theta),\"@@\",rx0.dist(target)-rx1.dist(target))" ] }, { "cell_type": "markdown", "metadata": { "id": "TSGzom-pt2dV" }, "source": [ "### Non linear FFT x-axis" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 525 }, "id": "LwaPd1lJt1-E", "outputId": "4c645321-99b6-4a64-af54-be7d80902b64" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "16000.0 500\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "c:\\dvpt_tools\\venv_mmWrt\\lib\\site-packages\\matplotlib\\cbook.py:1719: ComplexWarning: Casting complex values to real discards the imaginary part\n", " return math.isfinite(val)\n", "c:\\dvpt_tools\\venv_mmWrt\\lib\\site-packages\\matplotlib\\cbook.py:1355: ComplexWarning: Casting complex values to real discards the imaginary part\n", " return np.asarray(x, float)\n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGzCAYAAAD9pBdvAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAATHFJREFUeJzt3QmYFMX5x/F3AVlAYblBLhEvRAUUFFHwSFC8RaMiUUHiEU00KjECRkG8MF4hKko0GtRoxBg1/hUxiqJRMETQxAsvzoBcIrcuCvN/ftWpoXeY2d1hZ7fn+H6ep3eO7Zqq7unjneqq6qJYLBYzAACAiNSKKmMAAAAhGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEKwHXXXWdFRUXbnf7RRx+1zp072w477GCNGze26jB//nxXxokTJ1bL5wPIXgQjAMo1Z84cO/fcc2233XazBx54wO6///4ay3vy5MkukKqsI444wgU0ySYth0ybNi3lPGeeeaZb1lT/D0+aD0Bm1MnQ5wDIUzp5b9myxX73u9/Z7rvvXqN5KxgZP358WgFJu3btbOzYsdu836ZNmzKvf/GLX9iBBx5Y5r2OHTta7dq1rV+/fvH35s2bZ6NGjbILL7zQ+vbtG39fwRmAzCAYAVCu5cuXu8fqujyTaSUlJXb22WdXOJ8Ci9NOOy3p/3r37h1//s4777hgRO9V5nMBpI/LNECeefPNN90v/nr16rlf77///e9TzvunP/3JevToYfXr17emTZu6yxSLFi0qU1MwevRo97xFixbu8oSvpfjb3/5mxx9/vKtxKC4udnndcMMNtnnz5jJ56DOSXdLQJRVNqSiNakUkfHkEQP6hZgTII++//74dffTRLnBQ0PD999+7YKJVq1bbzHvTTTfZtddea2eccYadf/75tmLFCrv77rvtsMMOs3fffdfVhIwbN84eeeQRe+aZZ+y+++6znXbaybp27erSq6GpXg8bNsw9vvrqq64GYe3atXbbbbdVeVl++tOf2pIlS+zll192DWgrS8HQypUry7ynwExlDFu3bt028ykgq1WL32hAjYsByBsDBgyI1atXL7ZgwYL4ex999FGsdu3asfDuPn/+fPfeTTfdVCb9+++/H6tTp06Z90ePHu3Srlixosy8Gzdu3Cb/n/70p7EGDRrEvv322/h7u+yyS2zIkCHbzHv44Ye7yZs3b57L549//GP8vZ///Odlyl0RfZ7mT5zC+b/22mtJ59GkMiT617/+tU25AGQWNSNAnlCNwEsvvWQDBgywDh06xN/fe++9rX///q4xqPf000+7RqmqFQnXDrRu3dr22GMPe+211+zqq68uNz9d2gnXMpSWlrp2GLospJ4r3bp1syjospB6/ZTXeFVUixNukOqXH0DNIxgB8oQus3zzzTcumEi01157lQlGPvvsM1U3JJ1XNJ5IRT788EO75ppr3OUZXZoJW7NmjUVlxx13LNMbJpX99tuvUvMBqH4EI0ABUq2IGoO++OKLritrosT2FYlWr15thx9+uDVq1Miuv/5613hV7TJmz55tw4cPd5/vpWp0qpqcZHkDKDwEI0CeUKNVXTpRrUeiTz75pMxrBQ+qGdl1111tzz333K6xR7766it3uUcNXsNjciRq0qSJC14SLViwwDp16lRuPvSeAQoDzcaBPKFaBrUNefbZZ23hwoXx9z/++GPXliTs1FNPdfOPGTPGBSVheq1Ao6K8/Lzepk2b7N57791mXgU+b7/9tvu/9/zzz5fpQlzeJRdJFswAyB/UjAB5RMHFlClTXMPMn/3sZ65rr7rr7rPPPvaf//ynTIBw44032siRI909YdTotWHDhq5mQ914NdrolVdemTKfQw45xNV4DBkyxI1kqhoMdb9NDGxE3YafeuopO+aYY1yD2S+++MKNb1KZEUw1BoooDwVaCoI0FgqA/ELNCJBHNAaIakF0yUa9RR566CEXoJxyyinbzDtixAj761//6sbV0DwKPp577jk3TslJJ51Ubj7NmjVztRs777yza8R6++2321FHHWW33nrrNvMqiLjjjjvs008/tcsvv9xmzJjh0mrY9oqoBufSSy91AdY555xjgwYNSnONAMgFRerfG3UhAABA4aJmBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARConBj3TfS6WLFniBmVieGgAAHKDRg/RXb1152yNaZTTwYgCkfbt20ddDAAAsB10+4fyBjrMiWBENSJ+YXSXUAAAkP3Wrl3rKhP8eTyngxF/aUaBCMEIAAC5paImFjRgBQAAkSIYAQAAkSIYAQAAkSIYQf5YvtxsyBCz6dOjLgmAZN58M9hHV6yIuiTI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V65caZs3b7ZWrVqVeV+v58yZkzSNakSUrk+fPhaLxez777+3iy66qNzLNGPHjrUxY8akUzQAAJCjqr03zbRp0+zmm2+2e++917Uxefrpp+2FF16wG264IWWakSNH2po1a+LTokWLqruYAAAgF2pGmjdvbrVr17Zly5aVeV+vW7dunTTNtddea+ecc46df/757vV+++1nGzZssAsvvNB+/etfu8s8iYqLi90EAADyX1o1I3Xr1rUePXrY1KlT4+9t2bLFve7du3fSNBs3btwm4FBAI7psAwAACltaNSOibr1Dhgyxnj172kEHHeTGEFFNh3rXyODBg61t27au3YeceOKJrgfO/vvv78Yk+fzzz11tid73QQkAAChcaQcjAwcOtBUrVtioUaNs6dKl1r17d5syZUq8UevChQvL1IRcc801VlRU5B4XL15sLVq0cIHITTfdlNklAQAAOakolgPXStS1t6SkxDVmbdSoUdTFAQAAGTx/c28aAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAAAQKYIRAACQe8HI+PHjrWPHjlavXj3r1auXzZw5s9z5V69ebT//+c9t5513tuLiYttzzz1t8uTJ21tmAACQR+qkm2DSpEk2bNgwmzBhggtExo0bZ/3797dPPvnEWrZsuc38mzZtsqOOOsr976mnnrK2bdvaggULrHHjxplaBgAAkMOKYrFYLJ0ECkAOPPBAu+eee9zrLVu2WPv27e3SSy+1ESNGbDO/gpbbbrvN5syZYzvssEOl8igtLXWTt3btWpfHmjVrrFGjRukUFwAARETn75KSkgrP32ldplEtx6xZs6xfv35bP6BWLfd6xowZSdM899xz1rt3b3eZplWrVrbvvvvazTffbJs3b06Zz9ixY13h/aRABAAA5Ke0gpGVK1e6IEJBRZheL126NGmauXPnusszSqd2Itdee63dcccdduONN6bMZ+TIkS6K8tOiRYvSKSYAAMjnNiPp0mUctRe5//77rXbt2tajRw9bvHixu3QzevTopGnUyFUTAADIf2kFI82bN3cBxbJly8q8r9etW7dOmkY9aNRWROm8vffe29Wk6LJP3bp1t7fsAACg0C7TKHBQzcbUqVPL1HzotdqFJHPooYfa559/7ubzPv30UxekEIgAAIC0xxlRt94HHnjAHn74Yfv444/t4osvtg0bNtjQoUPd/wcPHuzafHj6/6pVq+yyyy5zQcgLL7zgGrCqQSsAAEDabUYGDhxoK1assFGjRrlLLd27d7cpU6bEG7UuXLjQ9bDx1BPmpZdesiuuuMK6du3qxhlRYDJ8+PDMLgkAACiMcUayuZ8yAADI83FGAAAAMo1gBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAARIpgBAAA5F4wMn78eOvYsaPVq1fPevXqZTNnzqxUuieeeMKKiopswIAB25MtAADIQ2kHI5MmTbJhw4bZ6NGjbfbs2datWzfr37+/LV++vNx08+fPtyuvvNL69u1blfICAIBCD0buvPNOu+CCC2zo0KHWpUsXmzBhgjVo0MAeeuihlGk2b95sZ511lo0ZM8Y6depU1TIDAIBCDUY2bdpks2bNsn79+m39gFq13OsZM2akTHf99ddby5Yt7bzzzqtUPqWlpbZ27doyEwAAyE9pBSMrV650tRytWrUq875eL126NGmaN9980x588EF74IEHKp3P2LFjraSkJD61b98+nWICAIAcUq29adatW2fnnHOOC0SaN29e6XQjR460NWvWxKdFixZVZzEBAECE6qQzswKK2rVr27Jly8q8r9etW7feZv4vvvjCNVw98cQT4+9t2bIlyLhOHfvkk09st9122yZdcXGxmwAAQP5Lq2akbt261qNHD5s6dWqZ4EKve/fuvc38nTt3tvfff9/ee++9+HTSSSfZkUce6Z5z+QUAAKRVMyLq1jtkyBDr2bOnHXTQQTZu3DjbsGGD610jgwcPtrZt27p2HxqHZN999y2TvnHjxu4x8X0AAFCY0g5GBg4caCtWrLBRo0a5Rqvdu3e3KVOmxBu1Lly40PWwAQAAqIyiWCwWsyynrr3qVaPGrI0aNYq6OAAAIIPnb6owAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABApAhGAABA7gUj48ePt44dO1q9evWsV69eNnPmzJTzPvDAA9a3b19r0qSJm/r161fu/AAAoLCkHYxMmjTJhg0bZqNHj7bZs2dbt27drH///rZ8+fKk80+bNs0GDRpkr732ms2YMcPat29vRx99tC1evDgT5QcAADmuKBaLxdJJoJqQAw880O655x73esuWLS7AuPTSS23EiBEVpt+8ebOrIVH6wYMHVyrPtWvXWklJia1Zs8YaNWqUTnEBAEBEKnv+TqtmZNOmTTZr1ix3qSX+AbVqudeq9aiMjRs32nfffWdNmzZNOU9paalbgPAEAADyU1rByMqVK13NRqtWrcq8r9dLly6t1GcMHz7c2rRpUyagSTR27FgXSflJNS8AACA/1WhvmltuucWeeOIJe+aZZ1zj11RGjhzpqnT8tGjRoposJgAAqEF10pm5efPmVrt2bVu2bFmZ9/W6devW5aa9/fbbXTDyyiuvWNeuXcudt7i42E0AACD/pVUzUrduXevRo4dNnTo1/p4asOp17969U6a79dZb7YYbbrApU6ZYz549q1ZiAABQuDUjom69Q4YMcUHFQQcdZOPGjbMNGzbY0KFD3f/VQ6Zt27au3Yf85je/sVGjRtnjjz/uxibxbUt22mknNwEAgMKWdjAycOBAW7FihQswFFh0797d1Xj4Rq0LFy50PWy8++67z/XCOe2008p8jsYpue666zKxDAAAoJDGGYkC44wAAJB7qmWcEQAAgEwjGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAAJEiGAEAALkXjIwfP946duxo9erVs169etnMmTPLnf8vf/mLde7c2c2/33772eTJk7e3vAAAoNCDkUmTJtmwYcNs9OjRNnv2bOvWrZv179/fli9fnnT+6dOn26BBg+y8886zd9991wYMGOCmDz74IBPlBwAAOa4oFovF0kmgmpADDzzQ7rnnHvd6y5Yt1r59e7v00kttxIgR28w/cOBA27Bhgz3//PPx9w4++GDr3r27TZgwoVJ5rl271kpKSmzNmjXWqFGjdIoLAAAiUtnzd510PnTTpk02a9YsGzlyZPy9WrVqWb9+/WzGjBlJ0+h91aSEqSbl2WefTZlPaWmpmzwthF8oAACQG/x5u6J6j7SCkZUrV9rmzZutVatWZd7X6zlz5iRNs3Tp0qTz6/1Uxo4da2PGjNnmfdXAAACA3LJu3TpXQ5KRYKSmqOYlXJuiS0GrVq2yZs2aWVFRUUYjNgU4ixYtSvvyz/amLZQ8c6285JlfeeZaeckzv/LMtfKurUKeFVGNiAKRNm3alDtfWsFI8+bNrXbt2rZs2bIy7+t169atk6bR++nML8XFxW4Ka9y4sVUXrfzt/QK2N22h5FmVtORJnlGmJU/yjDJtoxzLszzl1YhsV2+aunXrWo8ePWzq1Kllai30unfv3knT6P3w/PLyyy+nnB8AABSWtC/T6PLJkCFDrGfPnnbQQQfZuHHjXG+ZoUOHuv8PHjzY2rZt69p9yGWXXWaHH3643XHHHXb88cfbE088Ye+8847df//9mV8aAACQ/8GIuuquWLHCRo0a5RqhqovulClT4o1UFy5c6HrYeIcccog9/vjjds0119jVV19te+yxh+tJs++++1rUdClI46UkXhKqzrSFkmdV0pIneUaZljzJM8q0xTmWZ2TjjAAAAGQS96YBAACRIhgBAACRIhgBAACRIhgBAACRIhgBAADRihWwe+65J7bLLrvEiouLYwcddFDs/PPPV8+iMtNee+0Vn/+bb76J/exnP4s1bNgwVrt27Vi9evXcPM8880x8ngULFsSOPfbYWJ06dWK1atVyjz/4wQ9in376qfv/66+/HjvhhBNirVq1cmn1GSUlJbGf/OQnsXXr1sWGDBmyTRmKiopijRo1irVr1y620047xZo3b+6e77jjjmXS+vI1bdo0Vr9+/VizZs1cOXfYYYdY3bp1Yy1atIgdffTRscMOO8z9X6+vvPJK9zoxT59W6VRG5du4ceP45yid8vT5qSx9+/aN7bvvvm4eX0al0zrwy6B03333Xezwww/fJk+tr9122y32xz/+Mb4utf71P5XXpw0vp19/WsZw2uHDh7t0WoaKllP5JlvnlVnOJk2abJNWeVZmOe+8887YWWed5dar3lOeeu7TbtmyJXbttdfGWrdu7fLSuvTL6dMqf+Wn9CpbRduR5k18X5M+X2lXrFhRZll/+MMfun0jWRq//Za3blVelVHbg/azBg0auO1Brytazk6dOsVOPPHEWMeOHePboP6v7aii5WzTpk3s0EMPjXXo0MGlVX7K2+8va9eujeep//fq1SvWo0cPV0afVttvZdetX97f/OY3bvv76quvYoMGDXLl9ev9iCOOcMcBfwzQ9uXLq0nlqKhsSrP33nsn/R61jFq3KquOUXqve/fuZdLtvPPO7v1jjjnGfcf6n99Hw+kmT54cO+6449x+p3Wm70LLkpinPkPrR//T1LJly1jbtm1duZXnwIEDY8cff3yZ453yUTrlqe1d8+u70fya/DEmXN5k37HmU/n1GVpH3bp1K7OsicfYI488MrbHHnvEj2uaV8vrjx8V5al02u9feOGF2E9/+lP33q677lqpPDWPT3vaaaeVOTZVtJyW8J6WtzJ5pjquabv226nOf+Utp/z73/+O9enTx+UZThv25JNPumN1eDnTVbDByBNPPOE2yIceeij24Ycfxi644AK3IrVCv/zyy/ikg7N30UUXxdq3bx+7+eab3UFjzz33LBOMfP/99+6L2H333d0OrgOKNhxtGNpodRLVTv7rX/86tv/++7u0+mL/8Y9/uDQ6eOlApwOFDlo6uJx66qmxt956K9a1a1e3w4wePTp2yCGHuJ1IB6u///3v8bS+fM8995zb2ZVe8+l9LZvyVbm00U6fPt2VRfPogK3l1/L+85//dAegn//857Hx48e7tNqAdcDQSUEHkPvuu8+l0zIov6lTp8b+9re/uY1fB/KPPvooduGFF8bT9e7dO3beeefFDz4jR450J2nl6fPTzj1z5szY3Xff7XYGbcw6AKqsWn8nn3yyy1Np/XL+6U9/cv/Xjqyy+LS//e1v3brSsv74xz+ucDl18tVn+B1Vwcarr74aT1fecirw1Pfo07388suxP//5z/GyplpOfe9K169fP7ecOvnde++9sQcffDCe9pZbbnEHl9///vduORWEKJ8bb7zRpT3qqKNiBx98cKxz586x3/3ud26brmg78p916623uoOW8tZn3XXXXS6tJr+s06ZNc+tR6d944w33vWs70sHPb78qY3nr9rLLLnMnH78t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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from numpy import arange, cos, sin, pi\n", "from scipy.fft import fft\n", "import matplotlib.pyplot as plt\n", "\n", "f0=500\n", "f1 =4096\n", "N = 32\n", "ts = 1/f0/N\n", "fs = 1/ts\n", "assert fs> 2* f0\n", "print(fs, f0)\n", "T = arange(0, N*ts, ts)\n", "y = cos(2*pi*f1*T)\n", "DFT = fft(y)\n", "F = arange(0, fs, fs/N)\n", "fig, (ax1, ax2) = plt.subplots(2, sharex=True)\n", "\n", "ax1.title.set_text(r\"default FFT\")\n", "ax1.tick_params(axis='x', which='minor', bottom=False)\n", "plt.xticks(F)\n", "ax1.plot(F, DFT, 'r')" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2026-06-23\n" ] } ], "source": [ "from datetime import datetime\n", "print(datetime.now().date())" ] } ], "metadata": { "colab": { "name": "FMCW-Radar-103_AoA.ipynb", "provenance": [], "toc_visible": true }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10.9" } }, "nbformat": 4, "nbformat_minor": 4 }