Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
image-compression
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Elphel
image-compression
Commits
2022b169
Commit
2022b169
authored
Aug 05, 2022
by
Bryce Hepner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
five inner bins works
parent
9d5cbb08
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
76 additions
and
44 deletions
+76
-44
GraphMaker.ipynb
GraphMaker.ipynb
+76
-44
No files found.
GraphMaker.ipynb
View file @
2022b169
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
9
,
"execution_count":
18
,
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [],
"source": [
"source": [
...
@@ -52,7 +52,7 @@
...
@@ -52,7 +52,7 @@
" # plt.show()\n",
" # plt.show()\n",
" if difference is False:\n",
" if difference is False:\n",
" diff = np.sqrt(diff)\n",
" diff = np.sqrt(diff)\n",
" bins = [21,32,48]\n",
" bins = [21,32,48
,80
]\n",
" # get the boundary \n",
" # get the boundary \n",
" boundary = np.hstack((image_array[0,:],image_array[-1,:],image_array[1:-1,0],image_array[1:-1,-1]))\n",
" boundary = np.hstack((image_array[0,:],image_array[-1,:],image_array[1:-1,0],image_array[1:-1,-1]))\n",
" \n",
" \n",
...
@@ -162,12 +162,36 @@
...
@@ -162,12 +162,36 @@
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": 1
0
,
"execution_count": 1
9
,
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [],
"source": [
"source": [
"sftp_client = setup_remote_sftpclient()\n",
"sftp_client = setup_remote_sftpclient()\n",
"secondlist_dic, bins = remote_make_dictionary(images[10000:10200], 4, True, sftp_client)\n",
"list_dic, bins = remote_make_dictionary(images[10000:10200], 5, False, sftp_client)\n",
"sftp_client.close()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m/home/bryce/git/master/GraphMaker.ipynb Cell 4'\u001b[0m in \u001b[0;36m<cell line: 2>\u001b[0;34m()\u001b[0m\n\u001b[1;32m <a href='vscode-notebook-cell:/home/bryce/git/master/GraphMaker.ipynb#ch0000014?line=0'>1</a>\u001b[0m sftp_client \u001b[39m=\u001b[39m setup_remote_sftpclient()\n\u001b[0;32m----> <a href='vscode-notebook-cell:/home/bryce/git/master/GraphMaker.ipynb#ch0000014?line=1'>2</a>\u001b[0m secondlist_dic, bins \u001b[39m=\u001b[39m remote_make_dictionary(images[\u001b[39m10000\u001b[39;49m:\u001b[39m10200\u001b[39;49m], \u001b[39m5\u001b[39;49m, \u001b[39mTrue\u001b[39;49;00m, sftp_client)\n\u001b[1;32m <a href='vscode-notebook-cell:/home/bryce/git/master/GraphMaker.ipynb#ch0000014?line=2'>3</a>\u001b[0m sftp_client\u001b[39m.\u001b[39mclose()\n",
"\u001b[1;32m/home/bryce/git/master/GraphMaker.ipynb Cell 2'\u001b[0m in \u001b[0;36mremote_make_dictionary\u001b[0;34m(tiff_image_path_list, num_bins, difference, sftp_client)\u001b[0m\n\u001b[1;32m <a href='vscode-notebook-cell:/home/bryce/git/master/GraphMaker.ipynb#ch0000015?line=50'>51</a>\u001b[0m mask \u001b[39m=\u001b[39m diff \u001b[39m<\u001b[39m\u001b[39m=\u001b[39m bins[k]\n\u001b[1;32m <a href='vscode-notebook-cell:/home/bryce/git/master/GraphMaker.ipynb#ch0000015?line=51'>52</a>\u001b[0m \u001b[39mfor\u001b[39;00m j \u001b[39min\u001b[39;00m error[mask]\u001b[39m.\u001b[39mastype(\u001b[39mint\u001b[39m):\n\u001b[0;32m---> <a href='vscode-notebook-cell:/home/bryce/git/master/GraphMaker.ipynb#ch0000015?line=52'>53</a>\u001b[0m list_of_all_vals[k\u001b[39m+\u001b[39;49m\u001b[39m1\u001b[39;49m]\u001b[39m.\u001b[39mappend(\u001b[39mstr\u001b[39m(j))\n\u001b[1;32m <a href='vscode-notebook-cell:/home/bryce/git/master/GraphMaker.ipynb#ch0000015?line=55'>56</a>\u001b[0m \u001b[39m# the middle bins\u001b[39;00m\n\u001b[1;32m <a href='vscode-notebook-cell:/home/bryce/git/master/GraphMaker.ipynb#ch0000015?line=56'>57</a>\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m <a href='vscode-notebook-cell:/home/bryce/git/master/GraphMaker.ipynb#ch0000015?line=57'>58</a>\u001b[0m \u001b[39m# get the point within the bin and huffman huffman_encoding_dict\u001b[39;00m\n\u001b[1;32m <a href='vscode-notebook-cell:/home/bryce/git/master/GraphMaker.ipynb#ch0000015?line=58'>59</a>\u001b[0m mask \u001b[39m=\u001b[39m diff \u001b[39m>\u001b[39m bins[k\u001b[39m-\u001b[39m\u001b[39m1\u001b[39m]\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
}
],
"source": [
"sftp_client = setup_remote_sftpclient()\n",
"secondlist_dic, bins = remote_make_dictionary(images[10000:10200], 5, True, sftp_client)\n",
"sftp_client.close()"
"sftp_client.close()"
]
]
},
},
...
@@ -409,10 +433,14 @@
...
@@ -409,10 +433,14 @@
" for j in range(len(item)):\n",
" for j in range(len(item)):\n",
" if item[j] != 0:\n",
" if item[j] != 0:\n",
" eachrow = np.concatenate((eachrow,(int(item[j])*[len(secondlist_dic[3][str(int(j- 802))])])))\n",
" eachrow = np.concatenate((eachrow,(int(item[j])*[len(secondlist_dic[3][str(int(j- 802))])])))\n",
" el
se
:\n",
" el
if diffscode[i] > 48 and diffscode[i]<=80
:\n",
" for j in range(len(item)):\n",
" for j in range(len(item)):\n",
" if item[j] != 0:\n",
" if item[j] != 0:\n",
" eachrow = np.concatenate((eachrow,(int(item[j])*[len(secondlist_dic[4][str(int(j- 802))])])))\n",
" eachrow = np.concatenate((eachrow,(int(item[j])*[len(secondlist_dic[4][str(int(j- 802))])])))\n",
" else:\n",
" for j in range(len(item)):\n",
" if item[j] != 0:\n",
" eachrow = np.concatenate((eachrow,(int(item[j])*[len(secondlist_dic[5][str(int(j- 802))])])))\n",
" huffman_compression.append(np.mean(np.array(eachrow)))\n",
" huffman_compression.append(np.mean(np.array(eachrow)))\n",
" \n",
" \n",
" \n",
" \n",
...
@@ -665,7 +693,6 @@
...
@@ -665,7 +693,6 @@
"# plt.plot(np.linspace(0,125,500), np.log2(np.linspace(0,125,500)+1), label = \"7\")\n",
"# plt.plot(np.linspace(0,125,500), np.log2(np.linspace(0,125,500)+1), label = \"7\")\n",
"plt.plot(averagesarray, (countsarray/np.sum(countsarray))*np.log2(averagesarray), label = \"Average\")\n",
"plt.plot(averagesarray, (countsarray/np.sum(countsarray))*np.log2(averagesarray), label = \"Average\")\n",
"# plt.plot(np.array(averages).flatten(),np.log2(np.array(averages).flatten()))\n",
"# plt.plot(np.array(averages).flatten(),np.log2(np.array(averages).flatten()))\n",
"\n",
"plt.show()"
"plt.show()"
]
]
},
},
...
@@ -708,30 +735,26 @@
...
@@ -708,30 +735,26 @@
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": 2
4
,
"execution_count": 2
3
,
"metadata": {},
"metadata": {},
"outputs": [
"outputs": [
{
{
"data": {
"ename": "SyntaxError",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD4CAYAAAAXUaZHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAA3rUlEQVR4nO3deXhU1fnA8e+ZyWQmIRuEEHYCyCoISkAQRStqUSloK4hVQFT41dZ9QW2t2lat1bZa94Ib1gUUraBiFVFUBNkEZBVZAoQ1ZE9mnzm/P+5kg+zbzUzez/PMM/eee+/Mew2+uTn33PcorTVCCCEii8XsAIQQQjQ+Se5CCBGBJLkLIUQEkuQuhBARSJK7EEJEoCizAwBo3769TktLMzsMIYQIK+vXrz+utU6pbFuLSO5paWmsW7fO7DCEECKsKKX2VbVNumWEECICSXIXQogIJMldCCEiUIvoc6+Mz+cjMzMTt9ttdiiihXA4HHTt2hWbzWZ2KEK0eC02uWdmZhIfH09aWhpKKbPDESbTWpOdnU1mZiY9e/Y0OxwhWrwW2y3jdrtJTk6WxC4AUEqRnJwsf8kJUUstNrkDkthFBfLvQYjaa7HdMkK0Fr5AkHyXjzynjzyn13h3lS1PG9WDDgkOs8MU1dEa/B7wu8DnBp8T/G5j+aQ2V9m7zwXdz4Te5zd6SJLcq5Cdnc3YsWMBOHLkCFarlZSUFDIyMujcuTPbtm1rtlg++OAD+vbty8CBAwF44IEHGDNmDBdccEGdPicjI4Px48ezZcuWk9oHDBhAv379StvuuOMOpk2bVuuYRP2k3ftxjfs8++UuhnRLIsqijJdVYbVYsFkU1tB6lMVCVOl62bIttG/JcQpFsddPvtNHvstHgdvHxYM6cs3IHvKXUW05cyB3L2Tvge2LYfcX4C0G6jk3xtm3S3JvTsnJyWzcuBGAhx56iLi4OO66667SBNnY/H4/UVGV/zg++OADxo8fX5pI//znPzf69/fu3bv0fGvjxJjKq+5cREXTR/Vg3irjIcM4e5Txchjv8Y4oHDYrwaDGH9T4g0H8AY3HF8QXDBAIrfuDmkC57f6gxh8IlrY7vYFqY1i5O5vJw7thj7I2xymHrw9vhfWv1bxflAMciaFXEsQklS1boyHoN14dB8MZ08HSNL3j8n9gPQQCAWbOnMnKlSvp0qULixYtIiYmht27d/O73/2OrKwsYmNjmTt3Lv379ycjI4PrrruO48ePk5KSwquvvkr37t259tprcTgcbNiwgdGjR/O73/3upONzcnJYvHgxX331FQ8//DDvvfcef/nLXxg/fjxXXHEFa9eu5dZbb6W4uBi73c6yZcvIzs5m6tSpFBcXA/Dss89y1lln1etc4+LiuPXWW/noo4+IiYlh0aJF7N69+6SYrr/+eoYOHcqKFSu46qqrGDp0KHfddRd+v5/hw4fzwgsvYLfbSUtLY/LkyXzyySfExMTw1ltvkZqaymmnncbOnTux2WwUFBQwZMiQ0vVI9qeJg/jTxEGN8lnBoMYXDOILaHz+YOlygcvHxf/6psrj7rywryT22kg94edkT4SkbqCDRpdMwBt69xhX90VHa/7MrulGkm8CYZHc//ThVrYdKmjUzxzYOYEHf3FqvY796aefePvtt5k7dy6TJ0/mvffe45prrmHWrFm8+OKL9OnTh9WrV/Pb3/6WL774gptvvpnp06czffp0XnnlFW655RY++OADwBjyuXLlSqxWK2PHjq30+AkTJpQm8/K8Xi9XXnklCxYsYPjw4RQUFBATE0OHDh1YunQpDoeDn376iauuuqrG2j27d+9m6NChpevPPPMM55xzDsXFxYwcOZJHHnmE2bNnM3fuXO6///5KY/J6vaxbtw63202fPn1YtmwZffv2Zdq0abzwwgvcdtttACQmJrJ582Zef/11brvtNj766CPOO+88Pv74Yy677DLmz5/PL3/5y4hP7CXmr9nPN7uOg4ag1kZyDgTxBYwrcW9o+eT1sv18AeMqvTrRURZGpLWja9sY2sfZsUdZSE108KszujbTmYa5ETONF8CRLfDtU+B1grcQPKFXwAsBPwR9FY/tfDq06w32OIiOA3s8dBrSZIkdapHclVKvAOOBY1rrQaG2J4BfAF5gNzBDa50X2nYfcD0QAG7RWn/aNKGbp2fPnqWJcNiwYWRkZFBUVMTKlSuZNGlS6X4ejweAVatW8f777wMwdepUZs+eXbrPpEmTsFqt1R5flR9//JFOnToxfPhwABISEgAoLi7mpptuYuPGjVitVnbu3FnjOVXVLRMdHV3aDTVs2DCWLl1a5WdceeWVpXH17NmTvn37AjB9+nSee+650uR+1VVXlb7ffvvtANxwww08/vjjXHbZZbz66qvMnTu3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",
"evalue": "unmatched ']' (2204100009.py, line 108)",
"text/plain": [
"output_type": "error",
"<Figure size 432x288 with 1 Axes>"
"traceback": [
"\u001b[0;36m Input \u001b[0;32mIn [23]\u001b[0;36m\u001b[0m\n\u001b[0;31m plt.plot(np.linspace(0,10,10),[80]*10)])\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m unmatched ']'\n"
]
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
}
],
],
"source": [
"source": [
"
#
theoretical_compressions = []\n",
"theoretical_compressions = []\n",
"
#
hand_calc_hist_with_neg = np.zeros((356,802 + 659+1))\n",
"hand_calc_hist_with_neg = np.zeros((356,802 + 659+1))\n",
"
#
diffscode = np.sort(np.unique(diffs[yfilter]))\n",
"diffscode = np.sort(np.unique(diffs[yfilter]))\n",
"
#
for i in range(356):\n",
"for i in range(356):\n",
"
#
correct_diff_indices = np.where(diffs[yfilter] == diffscode[i])\n",
" correct_diff_indices = np.where(diffs[yfilter] == diffscode[i])\n",
"
#
# print(np.histogram(errors[correct_diff_indices], bins = np.linspace(0,1000,1001))[0])\n",
" # print(np.histogram(errors[correct_diff_indices], bins = np.linspace(0,1000,1001))[0])\n",
"
#
hand_calc_hist_with_neg[i] = np.histogram(errorsforent[yfilter][correct_diff_indices], range=(-802,659), bins = 802+659+1)[0]\n",
" hand_calc_hist_with_neg[i] = np.histogram(errorsforent[yfilter][correct_diff_indices], range=(-802,659), bins = 802+659+1)[0]\n",
" \n",
" \n",
"# for i in range(125):\n",
"# for i in range(125):\n",
"theoretical_compressions = []\n",
"theoretical_compressions = []\n",
...
@@ -752,18 +775,18 @@
...
@@ -752,18 +775,18 @@
" totalhist = stats.entropy(item, base=2)\n",
" totalhist = stats.entropy(item, base=2)\n",
" # totalhist = np.sum([-item[j]*np.log2(item[j]) for j in range(len(item))])\n",
" # totalhist = np.sum([-item[j]*np.log2(item[j]) for j in range(len(item))])\n",
" theoretical_compressions.append(totalhist)\n",
" theoretical_compressions.append(totalhist)\n",
"worstcasecompression = []\n",
"
#
worstcasecompression = []\n",
"for i, item in enumerate(abs(hand_calc_hist_with_neg)):\n",
"
#
for i, item in enumerate(abs(hand_calc_hist_with_neg)):\n",
" if np.sum(item) == 0:\n",
"
#
if np.sum(item) == 0:\n",
" continue\n",
"
#
continue\n",
" item = item/np.sum(item)\n",
"
#
item = item/np.sum(item)\n",
" innerpart = []\n",
"
#
innerpart = []\n",
" for j in range(len(item)):\n",
"
#
for j in range(len(item)):\n",
" if item[j] != 0:\n",
"
#
if item[j] != 0:\n",
" \n",
" \n",
" innerpart.append((item[j])*np.ceil(len(bin(j- 802)) + 2 - 2))\n",
"
#
innerpart.append((item[j])*np.ceil(len(bin(j- 802)) + 2 - 2))\n",
" totalhist = np.sum(np.concatenate((firstpart,np.array(innerpart))))\n",
"
#
totalhist = np.sum(np.concatenate((firstpart,np.array(innerpart))))\n",
" worstcasecompression.append(totalhist)\n",
"
#
worstcasecompression.append(totalhist)\n",
"\n",
"\n",
"\n",
"\n",
"huffman_compression = []\n",
"huffman_compression = []\n",
...
@@ -783,10 +806,17 @@
...
@@ -783,10 +806,17 @@
" for j in range(len(item)):\n",
" for j in range(len(item)):\n",
" if item[j] != 0:\n",
" if item[j] != 0:\n",
" eachrow = np.concatenate((eachrow,(int(item[j])*[len(list_dic[3][str(int(j- 802))])])))\n",
" eachrow = np.concatenate((eachrow,(int(item[j])*[len(list_dic[3][str(int(j- 802))])])))\n",
" elif diffscode[i] > 48 and diffscode[i]<=80:\n",
" for j in range(len(item)):\n",
" if item[j] != 0:\n",
" eachrow = np.concatenate((eachrow,(int(item[j])*[len(secondlist_dic[4][str(int(j- 802))])])))\n",
" else:\n",
" else:\n",
" for j in range(len(item)):\n",
" for j in range(len(item)):\n",
" if item[j] != 0:\n",
" if item[j] != 0:\n",
" try:\n",
" eachrow = np.concatenate((eachrow,(int(item[j])*[len(list_dic[4][str(int(j- 802))])])))\n",
" eachrow = np.concatenate((eachrow,(int(item[j])*[len(list_dic[4][str(int(j- 802))])])))\n",
" except:\n",
" continue\n",
" huffman_compression.append(np.mean(np.array(eachrow)))\n",
" huffman_compression.append(np.mean(np.array(eachrow)))\n",
" \n",
" \n",
" \n",
" \n",
...
@@ -825,18 +855,19 @@
...
@@ -825,18 +855,19 @@
"plt.plot(np.linspace(0,10,10),[np.argmin(np.abs(np.array(countsforx)-0.25))]*10)\n",
"plt.plot(np.linspace(0,10,10),[np.argmin(np.abs(np.array(countsforx)-0.25))]*10)\n",
"plt.plot(np.linspace(0,10,10),[np.argmin(np.abs(np.array(countsforx)-0.5))]*10)\n",
"plt.plot(np.linspace(0,10,10),[np.argmin(np.abs(np.array(countsforx)-0.5))]*10)\n",
"plt.plot(np.linspace(0,10,10),[np.argmin(np.abs(np.array(countsforx)-0.75))]*10)\n",
"plt.plot(np.linspace(0,10,10),[np.argmin(np.abs(np.array(countsforx)-0.75))]*10)\n",
"plt.plot(np.linspace(0,10,10),[80]*10)\n",
"plt.legend()\n",
"plt.legend()\n",
"plt.show()"
"plt.show()"
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": 2
5
,
"execution_count": 2
6
,
"metadata": {},
"metadata": {},
"outputs": [
"outputs": [
{
{
"data": {
"data": {
"image/png": "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U5vhpsIU4WNavX9/Kw/2OO+7gueeeA2D+/PmMGDGCnJwcfv7znxva4frDc889x/Tp07n88ssZNmxYK3Oxf/7zn4wZM4bRo0czZcoUAI4cOUJhYSE5OTmMHz+ebdu2AY4iI1OnTmXkyJH85Cc/wXOTmutbyPr165k0aRJXX30155xzDjfccIP7uH/84x+cc845jB07lrvuuqudd31TUxP33nsvJSUl5Obmuq0Edu7cyaRJkzjrrLNa7W594YUXGDduHLm5udx6662mwXLu3Ln85jft1+HbzryvuOIK1q9f776fuXPnMnLkSL71rW+xadMm9xhWr17tPmf//v1MmjSJYcOGcf/99/scW8+ePfnZz37G6NGjee+999r9jjsDvzNclENiGTq/nLwH1vg9wy7My+SG8UP8DvBdKufdzHrA2tdpPxAONMXrf+G3j3sghHMXqjdiI7i3sv/Up3WzMAZ4Iw4fPsyrr77Kjh072LZtGwsXLvRq0eti6dKlbknm0ksvdbdXVVW5bXJLSkrYv38/Bw8eZNasWbzyyits3brV7T1z3333kZeXx7Zt23jwwQe58cYbAbj//vu56KKL2LFjB1dddZXbO74tlZWVPPLII+zcuZO9e/fyzjvv0NjYyK233srrr7/O5s2bDYs+JyYm8sADDzBjxgyqqqrcTpC7du3ijTfeYNOmTdx///3YbDY++ugjSkpKeOedd9wOlS+++KLheC644AISExN56623/H7/T5w4weTJk9mxYwe9evVi4cKFrF27lldffZV77z2dq7xp0yZeeeUVtm3bxssvv0xFRYXXsZ04cYLzzz+frVu3cu6557b7HXcGZvYEbfGU4o+etDG3dKvfAX5R4SiWzsj161iN40Mk937/P0A6DCPrgfhEaKwP3H7A2rf9tYDylGRqOyg6Xpx1ccdcuA2xEdyNcl59eESEg9TUVJKSkrj55ptZuXIlycnJfp3nKct4BrMpU6a4rzlixAg+++wz3n//fS6++GKys7MB6Nu3LwAbN27khz/8IQCTJ0/m8OHDfP3117z99tv84Ac/AKCgoIA+ffoYjmHcuHFkZWURFxdHbm4u+/btY9euXZx11lnuvgLxeCkoKKBHjx7079+fM844gy+//JJ169axefNmvvnNb5Kbm8u6devYu3ev6TUWLlzIokWL/O4zMTGRyy+/HIBRo0Z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
AAAAAElFTkSuQmCC",
"image/png": "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
AAAAAElFTkSuQmCC",
"text/plain": [
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
"<Figure size 432x288 with 1 Axes>"
]
]
...
@@ -848,12 +879,13 @@
...
@@ -848,12 +879,13 @@
}
}
],
],
"source": [
"source": [
"plt.scatter(theoretical_compressions, np.arange(0,125,125/len(theoretical_compressions)), label = \"Theoretical Entropy\")\n",
"plt.plot(theoretical_compressions, np.arange(0,125,125/len(theoretical_compressions)), label = \"Theoretical Entropy\")\n",
"plt.scatter(worstcasecompression, np.arange(0,125,125/len(worstcasecompression)), label = \"Just Encoding the Numbers\")\n",
"# plt.plot(worstcasecompression, np.arange(0,125,125/len(worstcasecompression)), label = \"Just Encoding the Numbers\")\n",
"plt.scatter(huffman_compression, np.arange(0,125,125/len(huffman_compression)), label = \"Huffman\")\n",
"plt.plot(huffman_compression, np.arange(0,125,125/len(huffman_compression)), label = \"Huffman\")\n",
"plt.scatter(np.linspace(0,10,10),[np.argmin(np.abs(np.array(countsforx)-0.25))]*10)\n",
"plt.plot(np.linspace(0,10,10),[np.argmin(np.abs(np.array(countsforx)-0.25))]*10)\n",
"plt.scatter(np.linspace(0,10,10),[np.argmin(np.abs(np.array(countsforx)-0.5))]*10)\n",
"plt.plot(np.linspace(0,10,10),[np.argmin(np.abs(np.array(countsforx)-0.5))]*10)\n",
"plt.scatter(np.linspace(0,10,10),[np.argmin(np.abs(np.array(countsforx)-0.75))]*10)\n",
"plt.plot(np.linspace(0,10,10),[np.argmin(np.abs(np.array(countsforx)-0.75))]*10)\n",
"plt.plot(np.linspace(0,10,10),[80]*10)\n",
"plt.legend()\n",
"plt.legend()\n",
"plt.show()"
"plt.show()"
]
]
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment