{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import numpy as np\n", "import csv\n", "from scipy import linalg\n", "import matplotlib.pyplot as plt\n", "import random" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def least_squares(A, b):\n", " return np.linalg.inv(A.T.dot(A)).dot(A.T).dot(b)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# create n codes of length l, with lower and upper limits\n", "def gen_code(n, l, lower, upper, hardcoded_list_code_vals):\n", " x = []\n", " if len(hardcoded_list_code_vals) == 0:\n", " for i in range(n):\n", " x.append(np.random.randint(lower, upper, size=l))\n", " return x;\n", " else:\n", " for i in range(n):\n", " x.append(np.random.choice(hardcoded_list_code_vals, l))\n", " return x;" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# generate some arbitrary y using the codes and randomized weights!\n", "#returns y and the \"solutions\" for weights of codes and shifts\n", "def generate_y_and_solutions(codes, shifting_on, hardcoded_ysig_code_weights):\n", " y = np.zeros(l)\n", " code_weights, code_shifts = np.zeros(n), np.zeros(n) # use as answer key for comparison at the end!\n", " if len(hardcoded_ysig_code_weights) == 0:\n", " if shifting_on:\n", " for i in range(n):\n", " code_weights[i] = np.random.randint(-30, 30)/10\n", " code_shifts[i] = int(np.random.randint(0, l))\n", " codes[i] = np.roll(codes[i], int(code_shifts[i]))\n", " y += (code_weights[i])*codes[i]\n", " else: \n", " for i in range(n):\n", " code_weights[i] = np.random.randint(-30, 30)/10\n", " y += (code_weights[i])*codes[i]\n", " return (y, code_weights, code_shifts)\n", " else:\n", " if len(hardcoded_ysig_code_weights) < n:\n", " hardcoded_ysig_code_weights.extend(np.zeros(n-len(hardcoded_ysig_code_weights)))\n", " print(hardcoded_ysig_code_weights)\n", " for i in range(n):\n", " y += hardcoded_ysig_code_weights[i] * codes[i]\n", " return (y, hardcoded_ysig_code_weights, code_shifts)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def make_pretty_plots(y, l, n, codes, lower, upper, plot_codes, force_plot_codes):\n", " if plot_codes or force_plot_codes:\n", " plt.figure(figsize=(24, 6))\n", " for i in range(n):\n", " plt.subplot(1, n, i+1)\n", " plt.stem(np.arange(0, l), codes[i],use_line_collection=True)\n", " plt.xlim([-0.5, l-0.5])\n", " plt.ylim([lower-1, upper+1])\n", " plt.xlabel(\"Amplitude\")\n", " plt.ylabel(\"Time Step\")\n", " plt.title(\"Code {}\".format(i+1))\n", "\n", " plt.figure(figsize=(8, 4))\n", " plt.stem(np.arange(0, l), y,use_line_collection=True)\n", " plt.xlabel(\"(Combined) Amplitude\")\n", " plt.ylabel(\"Time Step\")\n", " plt.title(\"Received Signal y\")\n", "\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# From here on, we can only use y (or err) and the source codes to find the weights and shifts!\n", "# compute cross correlations of y (or err) with all songs\n", "def correlations(vec, codes, iter_count, shifting_on):\n", " corrs = np.zeros((n, l))\n", " if shifting_on:\n", " for i in range(n):\n", " for lag in range(l):\n", " corrs[i][lag] = np.correlate(vec, np.roll(codes[i], lag))\n", "\n", " plt.figure(figsize=(24, 6))\n", " for i in range(n):\n", " plt.subplot(1, n, i+1)\n", " plt.stem(np.arange(0, l), corrs[i],use_line_collection=True)\n", " plt.ylabel(\"Correlation\")\n", " plt.xlabel(\"Lag (Time Steps)\")\n", " if iter_count == 1:\n", " plt.title(\"Cross Correlation: y with code {}\".format(i+1))\n", " else:\n", " plt.title(\"Cross Correlation: err with code {}\".format(i+1))\n", "\n", " plt.show()\n", " else:\n", " for i in range(n):\n", " for lag in np.zeros(l):\n", " corrs[i][int(lag)] = np.correlate(vec, np.roll(codes[i], int(lag)))\n", " \n", " curr_corrs = []\n", " for i in range(n):\n", " curr_corrs.append(corrs[i][0])\n", " \n", " plt.figure(figsize=(24, 6))\n", " xint = range(1,n+1)\n", "\n", " plt.xticks(xint)\n", " plt.stem(np.arange(1, n+1), curr_corrs,use_line_collection=True)\n", " plt.xlabel(\"Correlation\")\n", " plt.ylabel(\"Code Number\")\n", " if iter_count == 1:\n", " plt.title(\"Cross Correlation: y with codes\")\n", " else:\n", " plt.title(\"Cross Correlation: err with codes\")\n", "\n", " plt.show()\n", " return corrs" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Find index of max correlation (or simply the code with max corr, if unshifted)\n", "# returns 3-tuple: max_val, code_num, index\n", "def process_corrs(corrs):\n", " temp_corrs = np.abs(corrs)\n", " max_val = np.amax(temp_corrs)\n", " for i in range(n):\n", " if max_val in temp_corrs[i]:\n", " index = np.argmax(temp_corrs[i])\n", " code_num = i+1\n", " return (max_val, code_num, index)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# least_squares things with A_mat and recieved signal y, uses info = max_val, code_num, index\n", "# returns weights, current_guess\n", "def lst_sq_processing(A_mat, y, max_val, codes, code_num, index, prev_weights, iter_count):\n", " if (iter_count == 1):\n", " A_mat = np.roll(codes[code_num-1], index)\n", " weights = (1/(A_mat.T.dot(A_mat)))*(A_mat.T).dot(y)\n", " current_guess = np.array(A_mat * weights)\n", " else:\n", " A_mat = np.column_stack((A_mat, np.roll(codes[code_num-1], int(index))))\n", " weights = least_squares(A_mat, y)\n", " current_guess = np.array(A_mat @ weights)\n", " \n", " plt.figure()\n", " plt.stem(np.arange(0, l), current_guess,use_line_collection=True)\n", "\n", " markerline, stemlines, baseline = plt.stem(\n", " np.arange(0, l), y, linefmt='grey', markerfmt='D', use_line_collection=True)\n", " markerline.set_markerfacecolor('orange')\n", " markerline.set_markeredgecolor('orange')\n", " markerline.set_fillstyle('full')\n", " plt.stem(np.arange(0, l), y, linefmt='grey', markerfmt='D',use_line_collection=True)\n", " \n", " plt.xlabel(\"Amplitude\")\n", " plt.ylabel(\"Time Step\")\n", " \n", " plt.legend((\"Original Received Signal (y)\", \"Current reconstruction\"))\n", " \n", " if iter_count == 1:\n", " plt.title(\"Best approximation after {} iteration\".format(iter_count))\n", " else:\n", " plt.title(\"Best approximation after {} iterations\".format(iter_count))\n", " \n", " return (weights, current_guess, A_mat)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def will_this_be_pretty(l, n):\n", " plot_codes = False\n", " if n > 8:\n", " return plot_codes\n", " if (l < 30 and n < 5) or (l < 90 and n < 4) or (l < 150 and n < 3): \n", " plot_codes = True\n", " \n", " return plot_codes" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[100, 20, -4, 1]\n", "[125. 117. -83. 123. -85. 117. 115. 85. -77.]\n", "[ 1 1 -1 1 -1 1 1 1 -1]\n", "[ 1 1 1 1 1 1 1 -1 1]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "### PARAMETER: Change at will ###\n", "shifting_on = False\n", "### PARAMETERS: Change at will ###\n", "\n", "### PARAMETERS: Change these at will ###\n", "l = 9\n", "n = 4\n", "\n", "lower= -10 # bounds for code values\n", "upper = 10\n", "\n", "hardcoded_dict_code_vals = [] # default\n", "hardcoded_ysig_code_weights = [] # default\n", "\n", "### overrides the above\n", "### comment out these two lines to allow random generation of received signal and full range of lower -> upper for code vals\n", "hardcoded_dict_code_vals = [1, -1] # set to include valid code values\n", "hardcoded_ysig_code_weights = [100, 20, -4, 1] # rig the received signal (anything not explicitly mentioned will be set to zero)\n", "\n", "force_plot_codes = False # only change to True if you don't care too much about aesthetics in \n", " # plotting the generated codes :)\n", "### PARAMETERS: Change these at will ###\n", "\n", "plot_codes = will_this_be_pretty(l, n)\n", "\n", "codes = gen_code(n, l, lower, upper+1, hardcoded_dict_code_vals)\n", "y, code_weights, code_shifts = generate_y_and_solutions(codes, shifting_on, hardcoded_ysig_code_weights)\n", "print(code_weights)\n", "print(y)\n", "print(codes[0])\n", "print(codes[1])\n", "make_pretty_plots(y, l, n, codes, lower, upper+1, plot_codes, force_plot_codes)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "***Iteration count: 1 ***\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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fv36sXTp0hKPSwq336RhZn9193+5+xB3v9Xd/2Vmfy2N4KTseH12BsNenUfG5kwcyNicybBX5x1Q4nB3+vTpQ69evVi6dClLlixh27Zt3H777fssu3v3burXr8/kyZP3u9533nmHtLS0YsdVkJtvvpk5c+bwxhtvcPXVV5OVlVWi649X3DluvPFGrrrqKqb8ayoLFy7khhtuACA9PZ1HHim968Tdu3czduxY+vfvX+hygwcP5oEHHiilqCRHlOapM/MpO6ukA5GybeT7i8nMyt6rLDMrm5HvLy72Oj/44AOqVKnCZZddBkBKSgqjRo1i7NixbN++nXHjxnHuuedyxhln0K1bN1asWEHr1q0B2L59OxdddBGndz2NK664nM6dOzNjRjCQQePGjdm4cSMrVqygRYsWXHXVVbRq1Yru3buTmZkJwNNPP02nTp1o27Yt559/Ptu3b48cd7NmzahWrRr//e9/AVi+fDk9e/akY8eOnHLKKSxatAiAdevW0bt3b9q2bUvbtm359NNPAXjxxRc54YQTaNeuHVdffTXZ2dl7xT106FAee+yx3O3FXrGPHDmSTp06cfzxxzN8+PDcZe69915+8YtfcPLJJ7N4cf6fydq1a6lXr37udJs2bQCYPn06v/71rwHYsGEDZ555Jq1ateLKK6+kUaNGJb4vP/jgAzp06EBqairLly+nQ4cOufOWLl2aO33KKacwdepUdu/eXej6pGQVmDTMbHD4re/mZvZ1+JhnZt8BX5deiFIWrNmcWaTyKBYsWEDHjh33KqtZsyZHH300y5YtA2DWrFlMnjyZDz/8cK/lHn/8cWrXrs206R8yZMhtzJw5M99tLF26lOuuu44FCxaQlpbGK6+8AkCfPn346quvmDt3Li1atGDMmDGR4541axbNmjWjbt26AAwaNIi//e1vzJw5kwcffJBrr70WCK7sTzvtNObOncusWbNo1aoVCxcuZOLEiXzyySfMmTOHlJQUXnrppb3W37dvXyZNmpQ7PWnSJPr27cuUKVNYunQpX375JXPmzGHmzJl89NFHzJw5kwkTJjBnzhzeeecdvvrqq3zjvvnmm+l70YVccslvGTVqVL5NYf/3f//HGWecwYIFC7jgggtYtWpV7ryS2peffPJJ7ufetGlTatWqxYL58wF49tlncy8iDjroII499ljmzp1b6PqkZBV2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UqVKXHPNNbllbdu25ZRTTtlruG6A66+/nnHjxgHBEOJ//OMf6dChA2+//RYXXHA+v//970lPT2f06NFs2LCB888/n06dOtGpUyc++eQTIBhi/PLLL6dr164cc8wxub8hMXToUJYvX067du0YMmTIXjGuWLGC5s2b87vf/Y7WrVvz/fffM2XKFLp06UKHDh248MILc78t/dVXX/HLX/6Stm3bcsIJJ7B161Z27NjBZZddRps2bWjfvj3TpgX7aty4cfTp04eePXvSrFkzbrvttmCXZmczcOBAWrduTZs2bRg1ahSTJ09mxowZ/Pa3v6Vdu3ZkZmbutQ9efvllunbtmjs0/MaNG2ncuHHu+m699VZat27N8ccfz9ixYxgz5hnWrFnD6aefzumnn567Tzdu3AjAQw89ROvWrWndujUPP/xw7n4oaGh0KV8K+55Gju/N7JeAm1klgu9uFDziWpyZWU9gNJACPOPuGgcr0T67bN+EkSN7ezC/14oir3b+/PnFHr20Tp06zJo1i4w1a3nhhRfYtWtX7kmzf//+3HzzzZx88smsWrWKHj165A4iuGjRIqZNm8bWrVtp3rw5gwcP5v7772f+/PkFfvN56dKlPPfcc5x44ols3LiRESNGMHXqVKpXr85f//pXHnroIYYOHUrfvn2ZOHEinTp1YsuWLVStWpXRo0djZsybN49FixbRvXv33Oa3OXPmMHv2bCpXrkzz5s254YYbWL9+PRkZGbkDCW7evJm0tDQeffRRHnzwQdLTf/4Sb84+AHjyySfzjf2pp55ixYoVzJkzJxigcME31K5dm7FjxjBt2jQOO+ywvZafOXMmzz77LF988QXuTufOnTnttNOoXbs2S5cuZfz48Tz99NNcdNFFvPLKK1xyySXF+vwkeUVJGtcQnKQbEHw7fApwXTyDKoiZpQCPEfww1GrgKzN7092/SUQ8EurybP41DYCUasH8UpYz8mt+01OnTuWbb34+ZLZs2ZJbGzjnnHOoXLkylStXpm7dupGawho1asSJJ54IwOeff84333zDSSedBMCuXbvo0qULixcvpl69ernjPtWsWRMIhhrP+YW84447jkaNGuUmjW7duuWOl9WyZUtWrlxJq1at+Pbbb7nhhhs455xz9hqLaX/7ID9Tp07lmmuuITU1OBXEDnWen48//pjevXvnji7cp08f/vOf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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "err = y\n", "A_mat = np.zeros(l)\n", "code_order = []\n", "weights = 0\n", "shifts = np.zeros(n)\n", "scale_max = 0\n", "counter = 0\n", "if ((np.linalg.norm(err) > 0.1) and counter < n):\n", " counter += 1\n", " print(\"***Iteration count: \", counter, \"***\")\n", " corrs = correlations(err, codes, counter, shifting_on)\n", " max_val, code_num, index = process_corrs(corrs) \n", "# print(\"info: \", max_val, code_num, index)\n", " code_order.append(code_num)\n", " shifts[code_num-1] = index\n", " weights, current_guess, A_mat = lst_sq_processing(A_mat, y, max_val, codes, code_num, index, weights, counter)\n", "\n", " err = y - current_guess\n", "\n", " if counter == 1:\n", " scale_max = np.amax(np.abs(err)+2)\n", "\n", " plt.figure()\n", " plt.stem(np.arange(0, l), err, linefmt='grey', markerfmt='D', use_line_collection=True)\n", " plt.xlim([-0.5, l-0.5])\n", " plt.ylim([-scale_max-1, scale_max])\n", " plt.xlabel(\"Amplitude\")\n", " plt.ylabel(\"Time Step\")\n", " plt.title(\"err vec at iterations = {}\".format(counter))\n", "\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "***Iteration count: 2 ***\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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lUaNGrFkyRKGD/8NCz8q+We8YsUKrrvuOhYvXkxOTg7PPvssAAMHDmTOnDl8+OGHnHjiiUycODHpuPPy8mjRogVHHHEEAFdddRX3338/8+bNY9y4cVx77bUA3Pq/I+l6alc+/PBD8vLyaN26NUuXLuXpp5/mnXfeYcGCBWRlZfH3v/+9yPIHDx7M1KlT48NTp05l8ODBzJw5kxUrVvDBBx+wYMEC5s2bx1tvvcW8efN46qmnWLBgAS+//DJz5swpMe6bbrqJM888k5/85GIemjChxCqs3//+95x55pksXryYH//4x6xZsyY+raq25TvvvBPf78ceeywHH3wwCxYsAOCRRx6Jnyzst99+HHfccXz44YdlLi8ZZTVlfRJ4BRgDjEgYv8Xdv9zrNYvs4xrnZJNfQiJonJNdrevt1asXhxxySGT822+/zY033gjACSecwIknnlji+5s3b0779u0BOPnkk1m9ejUAixYtYuTIkWzevJmtW7fSp0+fcmO55557eOSRR1i+fDkvvvgiAFu3buXdd9/lwgu/69h5x44dQHAQvPe+oLomKyuLgw8+mMcff5x58+bRuXNnAAoKCuJJJqZDhw5s2LCBdevWsXHjRho1asQxxxzDfffdx8yZM+nQoUN83StWrGDLli0MGDCA+vXrA3DeeeeVGP9ll11Gnz59mPLUU8ycMYOnnpoSOfC+/fbbPP/88wD07duXRo0aVfm2XL9+fZH9dcUVV/DII49w99138/TTT/PBBx/Epx1xxBGsW7cuchJRUWVVKxUC+e5+UXgndD1gINBjr9YokiGG92lJdt2sIuOy62YxvE/LSi+zVatWzJs3r8i4b775hjVr1nDccccB0KDB3rU2P+CAA+Kvs7Ky4lUUl156KX/+859ZuHAht912W1JNI2+66SYWL17Ms88+y+WXX8727dvZs2cPOTk5LFiwIP5X1s1l7s4ll1wSn3fZsmXcfvvtkfkuvPBCpk2bxtNPP83gwYPj773lllvi7125ciWXX355hbZH48aNGTLkIiY9Mpk6deqwaNGipN9bVdsyOzu7yDwXXHABr7zyCi+99BInn3wyhx56aHza9u3byc7e+xOQspLDq0AugJkdB7wHfB+4zszu2us1i+zj+ndowpiBbdk/K/iZNcnJZszAtvTv0KTSy+zZsyfbtm2Lt1rZvXs3v/71r7n0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I/z73//G3TnllFP44Q9/SKNGjVixYgVTpkzhoYceYtCgQTz77LP85Cc/qdT+q2nJJIdrgPuAJgR3S88ErqvOoERqva6PlFxyAMiqH0yvYbGeSmPOTeimetasWSxZsiQ+/M0338TP7s8++2wOOOAADjjgAI444oikqrCaNWvGqaeeCsD777/PkiVLOO200wDYuXMnXbt2ZdmyZRx99NHxfo0OOuggtmz9lg/mfMBvwtLICSecQLNmzeLJoWfPnvH+oFq1asUnn3xC69at+c9//sP111/P2WefXaSvofK2QUlmzZrFNddcQ506weHxkHfYpLsAAA/0SURBVEMOKfOmwbfffpsBAwbEe8MdOHAg//rXvzjvvPNK7bK7Nig3Obj7JuDiGohFZN9x5BnQ46VogsiqH4w/8oxKLbZ169alPvazTp06Rer3i3cDXbwr78ReXPfs2cP7779PvXr1IsstrdvpsiSuy93p1atX5BnSCxcuLHc5ycTSqFEjPvzwQ2bMmMGDDz7I1KlTmTRpUrlxJW6vZLofr4zi8damaqVkWis1N7O7zew5M3sh9lcTwYnUamGC2OVh/0V7mRgAzjzzTHbs2MGECRPi4z766CP+9a9/0axZM5YsWcKOHTvYvHkzr732WtLL7d27N/fff398uLyO4xo2bJh0r6ynnnoq77zzTrzL6W+//Zbly5fTsmVL1q9fH38K25YtW9i1axendDkl3o318uXLWbNmTbzbiJJs2rSJPXv2cMEFFzB69Oh4tVF5Mebm5safjZGYcHv16sXf/va3eBL88svg2WYNDjywxOV1796d6dOns23bNr799luef/55unfvntS2SWfJVCtNByYCLwKpaXYgkoaS7ZV1G235fvfFfLX4NHa89AhQepVSsl12//KXv+SPf/wj9erVIzc3l3vvvZdjjjmGQYMG0aZNG5o3bx5/+lkyxo8fz3XXXcdJJ53Erl27OP3000utk4eg7v60006jTZs29OvXj7Fjx5Y67+GHH87kyZO56KKL4k98Gz16NMcffzxPP/00119/PQUFBWRnZ/PY40/ws0suYfQdo2jbti116tRh8uTJRc7Ai8vPz+eyyy6LlwLGjBkDBA/Uueaaa8jOzua9996LvO/mm29m0KBBTJgwgbPPPjs+/oorrmD58uWcdNJJ1K1blyuvvJIBAy/g4osvpm/fvjRu3Dh+kRygY8eOXHrppXTp0iX+/g4dOtSqKqSSlNpld3wGs3+7+yk1FE+lqMtuUZfdFVMbu8ZOpXSNqyKqssvumPvM7DaCC9E7YiPdPW9vAhWp7Wpbl90iFZFMcmgL/BQ4k++qlTwcFhGRfVAyyeFC4PvuvrO6gxERkfSQzB3Si4B99x5xkQoq7zqdSLqpzHc2meSQA3xsZjNqsimrmfU1s2VmttLMRlT3+kSSUa9ePb744gslCKk13J0vvviixHtYypJMtdJtlQup8swsC/gL0AtYC8wxsxfcfUnZ7xSpXk2bNmXt2rVs3Lgx1aHslc2bvwbgm6/Tq1dRxVU96tWrR9OmTSv0nnKbsqaCmXUFbnf3PuHwLQDuPqak+SvblHV+u/bsv3Mn++2XXs88irXXTre40pm2WcWk6/ZSXBWXddBBHP9e5Z7cXFZT1lI/qZm9Hf7fYmbfJPxtMbNvKhVJ8poAiT3Brg3HJcZ3lZnNNbO5lT2La1C/flru7P322y8t44LgR5KqLpjLkq7bTNurYhRXxezZs4dvt5XSweNeKqtaqQGAuzesljXvJXefAEyAoORQmWVUNttmMt2gVzHaXlKdYt+v5O+FT15ZqTCV9U35wDEJw03DcSIiUgPKKjkcYWa/Km2iu99dDfHEzAFamFlzgqQwBBhajesTEZEEZSWHLOBAwGooljh332VmvwBmhHFMcvfFNR2HiEimKis5rHf3UTUWSTHu/jLwcqrWLyKSycq65lDjJQYREUkPZSWHnjUWhYiIpJVSk4O7f1mTgYiISPpIv7s6REQk5ZQcREQkQslBREQilBxERCRCyUFERCKUHEREJELJQUREIpQcREQkQslBREQilBxERCRCyUFERCKUHEREJELJQUREIpQcREQkQslBREQilBxERCRCyUFERCKUHEREJELJQUREIpQcREQkQslBREQilBxERCRCyUFERCKUHEREJELJQUREIpQcREQkQslBREQilBxERCRCyUFERCKUHEREJELJQUREIpQcREQkQslBREQilBxERCRCyUFERCJSkhzM7HYzyzezBeHfWQnTbjGzlWa2zMz6pCI+EZFMVyeF677H3ccljjCzVsAQoDXQGJhlZse7++5UBCgikqnSrVrpfOApd9/h7v8FVgJdUhyTiEjGSWVy+IWZfWRmk8ysUTiuCfBpwjxrw3ERZnaVmc01s7kbN26s7lhFRDJKtSUHM5tlZotK+DsfeAA4FmgPrAf+r6LLd/cJ7t7J3TsdfvjhVRy9iEhmq7ZrDu7+o2TmM7OHgJfCwXzgmITJTcNxIiJSg1LVWunohMEBwKLw9QvAEDM7wMyaAy2AD2o6PhGRTJeq1kp/MrP2gAOrgasB3H2xmU0FlgC7gOvUUklEpOalJDm4+0/LmHYncGcNhiMiIsWkW1NWERFJA0oOIiISoeQgIiIRSg4iIhKh5CAiIhFKDiIiEqHkICIiEUoOIiISoeQgIiIRSg4iIhKh5CAiIhFKDiIiEqHkICIiEUoOIiISoeQgIiIRqXrYj4iI7KWu+79P78K3IK8hdLyhSpet5CAiUhvljafvjjcxN3hxZDCuChOEqpVERGqbvPHw4sggMQDEEkTe+CpbhZKDiEhtEiYGYokhpooThJKDiEht8sqt0cQQ4xZMrwJKDiIitUm/UWBe8jTzYHoV0AVpqZDqbB0hIkmI/e6KVy2Zw7mjq+x3qZKDJG3hC6Pou+NNsnaDvziShS9UzRnKvmr6/HyeLWjFY9vacdpdrzN9fn6qQ5J9RccbWNjhZjwsQbg5CzvcrNZKUvMWvjCKNvPHxVtHmBtt5o9TgijF9Pn53PLcQoZkz2Blg4vpu3Mqtzy3UAlCqsT0+fkMmtOF0TaUXVkw2oYyaE6XKv1+qVpJypc3vkhiiIklCJrmqIqpmLEzljG07nRG+pPYHmOkPQl1YeyM/enfoUmqw5NabuyMZRQU7mZi4blM5Nxw7G7GzlhWZd8vlRykfK/cGkkMMVaFrSP2JX13Tg0SQ0JJa6Q/Sd+dU1McmewL1m0uqND4ylBykPL1GxWv2yzOq7B1xD4jb3yRxBATSxBVeaOSZKbGOdkVGl8ZSg5Svo43sCjh4leMm7Ooii+C7RNU0pJqNrxPS7LrZhUZl103i+F9WlbZOpQcJCltz7u1SIKIJYa25+lAF1FD7dAlc/Xv0IQxA9vSJCcbA5rkZDNmYNsqvZ5l7qV8iWuRTp06+dy5c1MdRmbIGx+c+fYbpRJDWUrq4qCK26GL7C0zm+funUqaptZKUjEdb9DBLRnFb1RSYpBaRslBpLrEEsErt0K/O5QYpFZRchCpTippSS2lC9IiIhKh5CAiIhFKDiIiEqHkICIiEfvEfQ5mthH4pJJvPwzYVIXhVJV0jQvSNzbFVTGKq2L2xbiaufvhJU3YJ5LD3jCzuaXdBJJK6RoXpG9siqtiFFfFZFpcqlYSEZEIJQcREYlQcoAJqQ6gFOkaF6RvbIqrYhRXxWRUXBl/zUFERKJUchARkQglBxERicjo5GBmfc1smZmtNLMRqY4HwMwmmdkGM1uU6lgSmdkxZjbbzJaY2WIzuzHVMQGYWT0z+8DMPgzj+n2qY0pkZllmNt/MXkp1LDFmttrMFprZAjNLmwehmFmOmU0zs4/NbKmZdU2DmFqG2yn2942Z/TLVcQGY2U3hd36RmU0xs3pVuvxMveZgZlnAcqAXsBaYA1zk7ktSHNfpwFbgMXdvk8pYEpnZ0cDR7p5nZg2BeUD/NNheBjRw961mVhd4G7jR3d9PZVwxZvYroBNwkLufk+p4IEgOQCd3T6sbuszsUeBf7v6wme0P1Hf3zamOKyY8ZuQDp7h7ZW+6rapYmhB811u5e4GZTQVedvfJVbWOTC45dAFWuvt/3H0n8BRwfopjwt3fAr5MdRzFuft6d88LX28BlgJV90zCSvLA1nCwbviXFmc8ZtYUOBt4ONWxpDszOxg4HZgI4O470ykxhHoCq1KdGBLUAbLNrA5QH1hXlQvP5OTQBPg0YXgtaXCwqw3MLBfoAPw7tZEEwqqbBcAG4J/unhZxAfcCvwH2pDqQYhyYaWbzzOyqVAcTag5sBB4Jq+EeNrMGqQ6qmCHAlFQHAeDu+cA4YA2wHvja3WdW5ToyOTlIJZjZgcCzwC/d/ZtUxwPg7rvdvT3QFOhiZimvjjOzc4AN7j4v1bGUoJu7dwT6AdeFVZmpVgfoCDzg7h2Ab4G0uA4IEFZznQc8k+pYAMysEUFNR3OgMdDAzH5SlevI5OSQDxyTMNw0HCelCOv0nwX+7u7PpTqe4sJqiNlA31THApwGnBfW7z8FnGlmT6Q2pEB41om7bwCeJ6hiTbW1wNqEUt80gmSRLvoBee7+eaoDCf0I+K+7b3T3QuA54AdVuYJMTg5zgBZm1jw8KxgCvJDimNJWeOF3IrDU3e9OdTwxZna4meWEr7MJGhh8nNqowN1vcfem7p5L8N163d2r9MyuMsysQdiggLDapjeQ8pZx7v4Z8KmZtQxH9QRS2tihmItIkyql0BrgVDOrH/42exJcB6wyGfsMaXffZWa/AGYAWcAkd1+c4rAwsylAD+AwM1sL3ObuE1MbFRCcCf8UWBjW7wP8j7u/nMKYAI4GHg1bkuwHTHX3tGk2moaOBJ4PjifUAZ5091dTG1Lc9cDfw5O1/wCXpTgeIJ5EewFXpzqWGHf/t5lNA/KAXcB8qrgbjYxtyioiIqXL5GolEREphZKDiIhEKDmIiEiEkoOIiEQoOYiISISSg2Q8M+tvZm5mJ1TR8nrEemE1s/NiPf6G62lVieW9YWZp92B72bcpOYgENzi9Hf6vUu7+grvfFQ72ByqcHERSQclBMlrYV1Q34HKCO5ljZ/5vmtk/zOw/ZnaXmV0cPjdioZkdG8432cweNLO5ZrY87E+p+PIvNbM/m9kPCPrmGRs+F+DYxBKBmR0WdrWBmWWb2VPhMw2eB7ITltfbzN4zszwzeyaMX6TKKTlIpjsfeNXdlwNfmNnJ4fh2wDXAiQR3hh/v7l0Iut++PuH9uQR9E50NPFjaA1fc/V2C7lmGu3t7d19VRkzDgG3ufiJwG3AyBAkEGAn8KOw4by7wq4p/ZJHyKTlIpruIoGM8wv+xqqU54TMsdgCrgFh3yAsJEkLMVHff4+4rCLp8qIrrFqcDTwC4+0fAR+H4Uwmqpd4JuzC5BGhWBesTicjYvpVEzOwQ4EygrZk5QR9bDvw/YEfCrHsShvdQ9HdTvP+ZivRHs4vvTtCSecSjETyvosqvjYgUp5KDZLIfA4+7ezN3z3X3Y4D/At0rsIwLzWy/8DrE94FlZcy7BWiYMLyasMoojCXmLWAoQPhsipPC8e8Dp5nZceG0BmZ2fAViFUmakoNksosInmeQ6Fkq1mppDfAB8ApwjbtvL2Pep4Dh4ZPOjiV4ktcwM5sPHJYw3wPAgWa2FBhF8Lxu3H0jcCkwxcw+At6jaqqxRCLUK6tIJZnZZOAld5+W6lhEqppKDiIiEqGSg4iIRKjkICIiEUoOIiISoeQgIiIRSg4iIhKh5CAiIhH/H24UzscL2yvfAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "if ((np.linalg.norm(err) > 0.1) and counter < n):\n", " counter += 1\n", " print(\"***Iteration count: \", counter, \"***\")\n", " corrs = correlations(err, codes, counter, shifting_on)\n", " max_val, code_num, index = process_corrs(corrs) \n", "# print(\"info: \", max_val, code_num, index)\n", " code_order.append(code_num)\n", " shifts[code_num-1] = index\n", " weights, current_guess, A_mat = lst_sq_processing(A_mat, y, max_val, codes, code_num, index, weights, counter)\n", "\n", " err = y - current_guess\n", "\n", " if counter == 1:\n", " scale_max = np.amax(np.abs(err)+2)\n", "\n", " plt.figure()\n", " plt.stem(np.arange(0, l), err, linefmt='grey', markerfmt='D', use_line_collection=True)\n", " plt.xlim([-0.5, l-0.5])\n", " plt.ylim([-scale_max-1, scale_max])\n", " plt.xlabel(\"Amplitude\")\n", " plt.ylabel(\"Time Step\")\n", " plt.title(\"err vec at iterations = {}\".format(counter))\n", "\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "***Iteration count: 3 ***\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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TDKzfwA1zOw6YDrwVBFqFNkvKBikrCnKezaRA9IjgcnAywTHHQa7+6hCr0mkHJoyZzWnDX+PegP/j9OGv8eUOav3eZmrVq3i/PPPp379+hx//PHceuut7Ny5M9d516xZw8UXX1zgMs8++2w2bdpUpHruueceRo4cmev42rVr07x5cxo1asSECROKtPz87Evd8fJ6DIsXL6Zjx4506XwWHX97OtdfH/zszKxZsxgwYMA+rzfROgAeeughxo8fn+/9+/Tpw9KlS4ullgLDwcz+7u7/cvc73P12d/+Xmf29WNYush+bMmc1d70yj9WbtuHA6k3buOuVefsUEO7OhRdeyAUXXMDSpUtZsmQJW7Zs4S9/+Utk3t27d3P00UczefLkApf75ptvUqNGjSLXlZfbbruNuXPn8tprr3HDDTewa9euYl1+SdWdZcCAAdx2221M+9d03v/gQ/r37w9A69atGTWq9L4j7969m7Fjx3LZZZflO1+/fv24//77i2WdiTQrdc5lXPdiWbvIfmzEO4vZtmtPtnHbdu1hxDuLi7zM9957j0qVKnH11VcDkJaWxoMPPsjYsWPZunUr48aNo0ePHpx55pl06tSJFStW0KRJEwC2bt1Kr169aNSoEddc83vOPfccZs0KOjvIyMhgw4YNrFixgoYNG3LdddfRuHFjunTpwrZt2wB48sknadOmDc2aNeOiiy5i69atCdddv359qlSpwo8//gjA8uXL6datG61ataJDhw58/XXwO1/r16/nmmt+T7NmzWjWrBmffPIJAM8//zynnHIKzZs354YbbmDPnj3Z6h44cCCPPvpobH3x38BHjBhBmzZtOPnkk7n77rtj89x3332ceOKJtG/fnsWLc39N1q5dS506dWLDTZs2BeD999/n3HPPjdXcuXNnGjduzLXXXkvdunWL/bl87733aNmyJenp6SxfvpyWLVvGpi1dujQ23KFDB6ZPn87u3bvzXV4i8gwHM+sXXgXdwMy+Cv/mmdl/ga/2ec0i+7k1m7YVanwiFixYQKtWrbKNq169OsceeyzLli0DIDMzk8mTJ/PBBx9km++xxx6jZs2aLFy4kDvuuJN5X+X+MV66dCk333wzCxYsoEaNGrz88ssAXHjhhXzxxRd8+eWXNGzYkKeffjrhujMzM6lfvz6HH344ANdffz2jR49m9uzZjBw5kptu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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "if ((np.linalg.norm(err) > 0.1) and counter < n):\n", " counter += 1\n", " print(\"***Iteration count: \", counter, \"***\")\n", " corrs = correlations(err, codes, counter, shifting_on)\n", " max_val, code_num, index = process_corrs(corrs) \n", "# print(\"info: \", max_val, code_num, index)\n", " code_order.append(code_num)\n", " shifts[code_num-1] = index\n", " weights, current_guess, A_mat = lst_sq_processing(A_mat, y, max_val, codes, code_num, index, weights, counter)\n", "\n", " err = y - current_guess\n", "\n", " if counter == 1:\n", " scale_max = np.amax(np.abs(err)+2)\n", "\n", " plt.figure()\n", " plt.stem(np.arange(0, l), err, linefmt='grey', markerfmt='D', use_line_collection=True)\n", " plt.xlim([-0.5, l-0.5])\n", " plt.ylim([-scale_max-1, scale_max])\n", " plt.xlabel(\"Amplitude\")\n", " plt.ylabel(\"Time Step\")\n", " plt.title(\"err vec at iterations = {}\".format(counter))\n", "\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "***Iteration count: 4 ***\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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SJMSTUWmkoOIiEQoOYiISISSg4iIRCg5iIhIhJKDiIhElHhyMLOxZrbJzBYljDvSzP5uZivC/3XC8WZmj5nZSjP73MzalnR8IiISVRolh/FA7xzj7gDec/fGwHvhMEAfoHH4dx3wZCnEJyIiOZR4cnD3D4Fvcow+H3gufP0ccEHC+Oc98ClQ28zqlXSMIiKSXaquORzr7hvC118Dx4av6wNfJcy3NhwXYWbXmdlsM5u9efPmkotURKQCSvkFaXd3IPcuGfN/3xh3b+/u7evWrVsCkYmIVFypSg4bY9VF4f9N4fh1wAkJ8zUIx4mISClKVXKYCgwKXw8CXk8Y/4uw1VIn4LuE6icRESklJd7xnplNALoCR5vZWmA4cD8wycyuBr4E+oezvwWcA6wEdgFXlXR8IiISVeLJwd0vzWNS91zmdeCmko1IREQKkvIL0iIikn6UHEREJELJQUREIpQcREQkQslBRKQgcx+De2sH/ysIJQcRkXwsnDoCf+Mu2Of4G3excOqIVIdUKpQcRETysHDqCFrMG4W5AWButJg3qkIkCCUHEZHczH0sW2KIiSWI8l7FpOQgIpKbt4dFEkOMucHbw0o5oNKl5CAikps+I3DLvcNoN4c+5btqSclBRCQ3bW9hUZuhkQTh5ixqMxTa3pKiwEqHkoOISB5a9h2WLUHEEkPLvuW7SgmUHERE8tWy7zDeqfITDmSA/WxkhUgMUAq9soqIlHUzf+jETDoxopxXJSVSyUFERCKUHEREJELJQUREIpQcREQkQslBREQilBxERCRCyUFERCKUHEREJELJQUREIpQcREQkQslBREQilBxERCRCyUFERCKUHEREJELJQUREIpQcREQkQslBREQilBxERCRCyUFERCKUHEREJELJQUREIpQcREQkQslBREQilBxERCQiM5UrN7PVwA7gALDf3dub2ZHARCALWA30d/dvUxWjiEhFlA4lh7PdvbW7tw+H7wDec/fGwHvhsIiIlKJ0SA45nQ88F75+DrgghbGIiFRIqU4ODkwzszlmdl047lh33xC+/ho4Nrc3mtl1ZjbbzGZv3ry5NGIVEakwUnrNATjT3deZ2THA383si8SJ7u5m5rm90d3HAGMA2rdvn+s8IiJSNCktObj7uvD/JmAK0BHYaGb1AML/m1IXoYhIxZSy5GBmNcysZuw10BNYBEwFBoWzDQJeT02EIiIVVyqrlY4FpphZLI6/uvs7ZjYLmGRmVwNfAv1TGKOISIVUYHIws6rAjcCZBBeQPwKedPc9h7Jid/830CqX8VuB7oeybBEROTTJlByeJ7hR7fFw+DLgBeCSkgpKRERSK5nk0MLdmyUMzzCzJSUVkIiIpF4yF6Tnmlmn2ICZnQ7MLrmQREQk1ZIpObQDPjGzNeHwj4BlZraQ4FaE00osOhERSYlkkkPvEo9CRETSSoHVSu7+JXAC0C18/T1Qyd2/DIdFRKScSaYp63CgPdAEGAccBrwInFGyoYmkn3379rF27Vr27Dmkltwp16dH0Fp86dKlKY4kO8VVMqpWrUqDBg2oXLly0u9JplqpH9AGmAvg7utjdzaLVDRr166lZs2aZGVlEd7AWSatWx/0bVn/+HopjiQ7xVX83J2tW7eydu1aGjVqlPT7kmmt9IO7O8ENcLGuLkQqpD179nDUUUeV6cQgFYuZcdRRRxW6tJtMcphkZn8BapvZtcB04JkixChSLigxSFlTlO9sMhekRwGTgVcJrjsMc/fHCr0mkQrotXnrOOP+92l0x/9xxv3v89q8dYe8zLVr13L++efTuHFjTjrpJG699VZ++OGHXOddv349F198cYHLPOecc9i2bVuR4rn77rsZNWpUruPr169P69atadasGRMmTCjS8vNzKHEnyuszLFu2jK5du9Kzx0/p+pOzuO664LEzs2fP5pZbbjnk9SYbB8AjjzzC888/n+/7Bw4cyIoVK4ollgKTg5k94O5/d/fb3H2ou//dzB4olrWLlGOvzVvHnX9byLptu3Fg3bbd3Pm3hYeUINydCy+8kAsuuIAVK1awfPlydu7cyf/8z/9E5t2/fz/HH388kydPLnC5b731FrVr1y5yXHkZMmQI8+fP5/XXX+f6669n3759xbr8koo75pZbbmHIkCFM+/t0PvjHh9x8880AtG/fnsceK71z5P379zN27Fguu+yyfOcbPHgwDz74YLGsM5lqpR65jOtTLGsXKcceencZu/cdyDZu974DPPTusiIv8/3336dq1apcddVVAGRkZDB69GjGjh3Lrl27GD9+PH379qVbt250796d1atX06JFCwB27dpF//79adasGVdf/UvOO+9cZs8OOjvIyspiy5YtrF69mqZNm3LttdfSvHlzevbsye7duwF4+umn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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "if ((np.linalg.norm(err) > 0.1) and counter < n):\n", " counter += 1\n", " print(\"***Iteration count: \", counter, \"***\")\n", " corrs = correlations(err, codes, counter, shifting_on)\n", " max_val, code_num, index = process_corrs(corrs) \n", "# print(\"info: \", max_val, code_num, index)\n", " code_order.append(code_num)\n", " shifts[code_num-1] = index\n", " weights, current_guess, A_mat = lst_sq_processing(A_mat, y, max_val, codes, code_num, index, weights, counter)\n", "\n", " err = y - current_guess\n", "\n", " if counter == 1:\n", " scale_max = np.amax(np.abs(err)+2)\n", "\n", " plt.figure()\n", " plt.stem(np.arange(0, l), err, linefmt='grey', markerfmt='D', use_line_collection=True)\n", " plt.xlim([-0.5, l-0.5])\n", " plt.ylim([-scale_max-1, scale_max])\n", " plt.xlabel(\"Amplitude\")\n", " plt.ylabel(\"Time Step\")\n", " plt.title(\"err vec at iterations = {}\".format(counter))\n", "\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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7NmTioqKj5RLejoihta3zM7bHqq1ZXka4v44eWRrhlTWGqqVATtM4qiqqqJLly706tVr8+u08hMRrFq1iqqqKnr37p17OV+esm1Sioa47VUpbo8shffee4+99trLCaPMSWKvvfZqdo3QScO2SSka4rZXpbg9slScMLYPW/M+OWnYNmvthrjtlWtl9bv/z9UcO/URek/+X46d+gj3/7m61CFZI5w0rEVMOvUQZlw8jB5dOzDj4mFOGPVwrWxL9/+5mivue57q1esJoHr1eq647/ltThxVVVWceeaZ9O3blz59+vDlL3+ZDz74YIv5Xn31Vc4555wm13f66aezevXqrYplypQpXHPNNVu1bDly0rAWM7xPN/44eWSb/PLLy7Wyj5r20Iusr9n4kbL1NRuZ9tCLW73OiODss89mzJgxLFmyhL/85S+sXbuWK6+88iPzbdiwgf3224+ZM2c2uc4HH3yQrl27bnVMOxInDbNW5lrZh15dvb5Z5Xk88sgjtG/fngsvvBCAdu3a8cMf/pCbb76Z6dOnM3r0aEaOHMmJJ57IsmXLGDhwIADr1q3js5/9LAMGDOCss85i2LBh1N6y36tXL1auXMmyZcvo378/F198MYceeiinnHIK69dnsd54440cddRRDB48mL/7u79j3bp1W/0aypmThlkJuFaW2a9rh2aV57Fw4UKOPPLIj5TttttuHHDAAWzYsIFnnnmGmTNn8vvf//4j80yfPp099tiDF154ge985zs8/fTT9a5/yZIlTJw4kYULF9K1a1d+9rOfAXD22Wfz1FNP8eyzz9K/f39uuummrX4N5cxJw8xKZtKofnSo80O0DhXtmDSqX9G2efLJJ7PnnntuUf7YY49x7rnnAjBw4EAGDar/xoTevXszZMgQAI488kiWLVsGwIIFCzj++OM57LDDmDFjBgsXLizOCygxJw0zK5kxh/fg+2cfxi7tsq+iHl078P2zD2PM4T22ep0DBgzYopbwzjvv8Morr7DzzjvTqVOnbYp511133Tzcrl07NmzYAMCECRO49tpref7557nqqqt22F/E+xfhZlY0r3/ve7y/qPE+yA4HfvTaOwAM2Hc3WAgvNzL/rv0P4WPf+EaD00888UQmT57M7bffzvnnn8/GjRv56le/yoQJE+jYsWODyx177LHcc889fOpTn+KFF17g+eefbzTuutasWcO+++5LTU0NM2bMoEePrU985cw1DTMruQH77pYljBYgiVmzZnHvvffSt29fDj74YNq3b8/3vve9Rpe79NJLWbFiBQMGDOCb3/wmhx56KLvvvnvu7X7nO99h2LBhHHvssRxyyI57c0NJOiyUNBaYAvQHPhER8wqmXQFcBGwELouIh1L5qcCPgHbATyJialPbcYeFZq1v0aJF9O/fv9RhNNvGjRupqamhffv2VFZWctJJJ/Hiiy+yyy67lDq0oqrv/SrHDgsXAGcD/11YKGkAcC5wKLAf8BtJB6fJ1wEnA1XAU5IeiIgXWi9kM9uRrVu3jk996lPU1NQQEUyfPn2HTxhboyRJIyIWQb39npwJ3B0R7wMvSVoKfCJNWxoRf03L3Z3mddIwsxbRpUsXfGWiaeXWptEDWF4wXpXKGirfgqRLJM2TNG/FihVFC9TMrC0qWk1D0m+Aj9Uz6cqI+HmxthsRNwA3QNamUaztmJm1RUVLGhFx0lYsVg3sXzDeM5XRSLmZbefmVq5k0r3PMW3soDb/K/lyV26Xpx4AzpW0q6TeQF/gSeApoK+k3pJ2IWssf6CEcZpZC5lbuZKLbp1H9er1XHTrvB3mYVQ7qpIkDUlnSaoCjgH+V9JDABGxELiHrIF7NjAxIjZGxAbgi8BDwCLgnjSvmW3HahNGbU+362s2tkjiaNeuHUOGDGHgwIF85jOf2epuzVtKU78RaY7Vq1czffr0Zi/XUl20lyRpRMSsiOgZEbtGxD4RMapg2tUR0Sci+kXErwrKH4yIg9O0q0sRt5m1nLoJo1ZLJI4OHTowf/58FixYwJ577sl11123reFuk4aSRkSwadOmZq1ra5NGSym3y1Nm1kZMuve5LRJGrfU1G1vs8bfHHHMM1dUfNoFOmzaNo446ikGDBnHVVVdtLr/99tsZNGgQgwcPZvz48QAsW7aMkSNHMmjQIE488UReeeUVIOtn6rLLLmP48OEcdNBBm5/J8dprr3HCCSdsruX84Q9/YPLkyaxfv54hQ4Ywbtw4li1bRr9+/Tj//PMZOHAgy5cvp3PnzpvjmDlzJhMmTADgjTfe4KyzzmLw4MEMHjyYuXPnMnnyZCorKxkyZAiTJk1q9DVdffXVHHzwwRx33HG8+OLWP6OkkPueMrOSmDZ2UL01Dch6um2Jx99u3LiR3/72t1x00UUAPPzwwyxZsoQnn3ySiGD06NE8+uij7LXXXnz3u99l7ty5dOvWjbfeeguAL33pS1xwwQVccMEF3HzzzVx22WXcf//9QJYgHnvsMRYvXszo0aM555xzuPPOOxk1ahRXXnklGzduZN26dRx//PFce+21zJ8/H8gS0ZIlS7jttts4+uijG43/sssu45Of/CSzZs1i48aNrF27lqlTp7JgwYLN62voNXXq1Im7776b+fPns2HDBo444ogtuozfGk4aZlYSw/t046YJQ7dIHB0q2nHThKHbdBdV7Zl9dXU1/fv35+STTwayL9iHH36Yww8/HIC1a2NZ/5AAAAlbSURBVNeyZMkSnn32WcaOHUu3btk2a7tOf/zxx7nvvvsAGD9+PF/72tc2b2PMmDHstNNODBgwgDfeeAOAo446in/8x3+kpqaGMWPGbO5Cva4DDzywyYQB2QOlbr/9diBrp9l99915++23PzJPQ69pzZo1nHXWWZs7aRw9enSOPdc0X54ys5KpTRzaWAO0TMKAD9s0Xn75ZSJic5tGRHDFFVcwf/585s+fz9KlSzfXQpqrsIv02j78TjjhBB599FF69OjBhAkTNn/h11W3e/bC3jGa26V6S76mPFzTMLOiydM1eg9g4vJ3mDHoHL717nx6TLlzm7pGL9SxY0d+/OMfM2bMGC699FJGjRrFv/7rvzJu3Dg6d+5MdXU1FRUVjBw5krPOOovLL7+cvfbai7feeos999yT4cOHc/fddzN+/HhmzJjB8ccf3+j2Xn75ZXr27MnFF1/M+++/zzPPPMP5559PRUUFNTU1VFRU1LvcPvvsw6JFi+jXrx+zZs2iS5cuQNbN+/XXX89XvvKVzZenunTpwpo1azYv29BrOuGEE5gwYQJXXHEFGzZs4Be/+AWf//znc+23xjhpmFnJjd1/N8a+/XBR1n344YczaNAg7rrrLsaPH8+iRYs45phjAOjcuTN33HEHhx56KFdeeSWf/OQnadeuHYcffji33nor//mf/8mFF17ItGnT6N69O7fcckuj25ozZw7Tpk2joqKCzp07b65pXHLJJQwaNIgjjjiCq6/e8ubPqVOncsYZZ9C9e3eGDh3K2rVrAfjRj37EJZdcwk033US7du24/vrrOeaYYzj22GMZOHAgp512GtOmTav3NR1xxBF87nOfY/Dgwey9994cddRRLbI/S9I1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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "code weights: [100, 20, -4, 1]\n", "weights: [100. 20. -4. 1.]\n" ] } ], "source": [ "#plot reconstructed signal alongside y\n", "result_mine = np.zeros(l)\n", "for i in range(n):\n", " if not isinstance(weights, type(0.4)) and len(weights) > i:\n", " val = np.multiply(weights[i], np.roll(codes[code_order[i]-1], int(shifts[code_order[i]-1])))\n", " result_mine += val\n", "\n", "plt.figure()\n", "\n", "plt.stem(np.arange(0, l), y, use_line_collection=True)\n", "\n", "plt.stem(np.arange(0, l), result_mine, linefmt='black', markerfmt='D', use_line_collection=True)\n", "\n", "plt.xlim([-0.5, l-0.5])\n", "plt.ylim([-np.abs(max(np.amax(y), np.amax(result_mine))), np.abs(max(np.amax(y), np.amax(result_mine)))])\n", "plt.xlabel(\"Amplitude\")\n", "plt.ylabel(\"Time Step\")\n", "plt.legend((\"Original\", \"Reconstructed\"))\n", "plt.title(\"Comparison: These plots should be overlapping!\")\n", "\n", "if not np.allclose(result_mine, y, atol = 0.05):\n", " error_count += 1\n", "\n", "plt.show()\n", "\n", "print(\"code weights: \", code_weights)\n", "print(\"weights: \", weights)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.5" } }, "nbformat": 4, "nbformat_minor": 1 }