pico-tracker/sim/si_fir_filter/si_fir_filter.ipynb

888 wiersze
444 KiB
Plaintext

2015-04-02 18:50:42 +00:00
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Let's plot some filters "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 453
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Reflects an array of coefficients about the last element \n",
"def sym_fir_coeff(coeff):\n",
" for i in range(len(coeff)-2, -1, -1):\n",
" coeff.append(coeff[i])\n",
"\n",
" return coeff\n",
"\n",
"# Normalises the si's 8-bit coefficients to 0 - 1 \n",
"def si_normalise_coeff(coeff):\n",
" coeff = [x-0x100 if x > 0x7f else x for x in coeff]\n",
" return [x/0x300 for x in coeff] # 0x300 seems to be the value required to get 0 gain at dc.. Not sure about this: Test!\n",
"\n",
"def si_coeff(coeff):\n",
" norm = [int(x*0x300) for x in coeff]\n",
" return [x+0x100 if x < 0 else x for x in norm]"
2015-04-02 18:50:42 +00:00
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 454
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"These are the default si coefficients"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Default si coefficients \n",
"si_default_fir_coeff = [0x1, 0x3, 0x8, 0x11, 0x21, 0x36, 0x4d, 0x60, 0x67]\n",
"si_fir_coeff = si_normalise_coeff(sym_fir_coeff(si_default_fir_coeff))\n",
"print si_fir_coeff"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[0.0013020833333333333, 0.00390625, 0.010416666666666666, 0.022135416666666668, 0.04296875, 0.0703125, 0.10026041666666667, 0.125, 0.13411458333333334, 0.125, 0.10026041666666667, 0.0703125, 0.04296875, 0.022135416666666668, 0.010416666666666666, 0.00390625, 0.0013020833333333333]\n"
]
}
],
"prompt_number": 455
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Setup graph"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%matplotlib inline"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 456
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from scipy import signal\n",
"from pylab import *\n",
"from __future__ import division\n",
"import matplotlib.pyplot as plt"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 457
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"w,h=signal.freqz(si_fir_coeff,1) # Compute impulse response \n",
"\n",
"plt.plot(w/pi,20*log10(abs(h)))\n",
"plt.grid()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAEACAYAAABVtcpZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtcVHX6B/APN2+VkrfSGRMFDFEES0HLDBMENG1bVxPb\nlHTNn1ZeWiuztqRSrN1aM5fSVqVcNTNTysREBa28oJiaoomCBWOkJqh5AYTv749vcCBB53bmnJn5\nvF8vXnXOzJx5eBjPM+d7Ox5CCAEiInJLnloHQERE2mERICJyYywCRERujEWAiMiNsQgQEbkxFgEi\nIjemSRHYsGEDgoKCEBgYiDfeeEOLEIiICICHo+cJVFRU4M4778SmTZtgMBjQs2dPrFixAp07d3Zk\nGEREBA2uBLKyshAQEAA/Pz/4+PhgxIgRSE1NdXQYREQEDYqAyWRCu3btqreNRiNMJpOjwyAiImhQ\nBDw8PBz9lkREVA9vR7+hwWBAQUFB9XZBQQGMRmOt57BQEBFZx9JuXocXgR49eiA3NxcnTpxA27Zt\nsXLlSqxYseKa57VoIeDjAzRoADRsCPj6ArfeCjRvLv/bujXQrp38MRqBO+4Abr7Z0b+N+mbOnImZ\nM2dqHYYuMBcK5kLBXCis+QLt8CLg7e2N+fPnIyYmBhUVFRg7dmydI4OOHAHKyuTPlStASQlQXKz8\nFBUB33wDFBQoP76+QFAQ0Lmz/G+XLsBdd8n9zurEiRNah6AbzIWCuVAwF7ZxeBEAgLi4OMTFxV33\nOS1bWnbMykqgsFAWj8OHgZwc4OOPgf37gbZtgR495E+fPrIweGvymxMR6YvLnAo9PWWT0B13AAMG\nKPuvXpWFYc8eYPduICUF+PFH4J57gPvvB/r1k8XBy0uz0K8rISFB6xB0g7lQMBcK5sI2Dp8sZg4P\nDw+LOzcsceYM8PXXwNatwKZNwKlTQFwcMGiQLCDO3HxERO7LmnOnW64d1LIl8PDDwNy5wMGD8goh\nIgL48EPlSmLRIuDsWa0jBTIzM7UOQTeYCwVzoWAubOOWReCP2rcHJk4EvvwS+PlnYNw4IC0N6NBB\nXh0sXQpcvKh1lERE9ueWzUHmunAB+OILYNkyYPt2YNgwYOxYIDwc4FQGItIba86dLAJmMplkc9Hi\nxUCjRsD48UBCAnDLLVpHRkQksU9ARQYDMGMGcPQoMH++7Fj28wOmTgXy8tR7X7Z3KpgLBXOhYC5s\nwyJgIU9PIDIS+OQT4Lvv5IzmiAjgoYdkkxERkTNhc5AdXLwIfPQR8OabspP5xReBqCj2GxCRY7FP\nQGPl5XKWclKSXMfoH/8AHnyQxYCIHIN9Ahrz8QEee0zOPXj+edmHcO+9wLZt1h+T7Z0K5kLBXCiY\nC9uwCKjA0xMYOhTYt0/OPxg9Ghg4UG4TEekJm4McoKwMWLgQmDVLrlU0Z46cmUxEZE9sDtKpBg2A\np54CcnOBTp3kKqavvgpcvqx1ZETk7lgEHOjmm4GZM4HsbOD774HgYGD1auB6hZvtnQrmQsFcKJgL\n27AIaKB9e2DVKjn7ODFRDic9ckTrqIjIHbFPQGNXrwLJycBrrwGTJslRRQ0aaB0VETkj9gk4IW9v\nefLfu1cuaX3XXcCOHVpHRUTugkVAJ9q1A1JTgVdekcNLn3oKOH+e7Z01MRcK5kLBXNiGRUBHPDzk\nctWHDsmRQ6GhnFtAROpin4COffkl8MQTQHw88PrrcglrIqL6sE/AxQwaBOzfD/z4I3D33bLfgIjI\nnlgEdO7gwUx88olcmTQ2Fpg9G6io0DoqbbDtV8FcKJgL27AIOAEPD2DkSDnJ7KuvgJgYoKhI66iI\nyBWwT8DJXL0q5xR88AGQkgIMGKB1RESkF7yfgBvJyJDLVj/2mFyHyMdH64iISGvsGHZB9bV39usn\nO4r37ZO3uzSZHBqWJtj2q2AuFMyFbVgEnFjr1nIY6cCBQHi4bTevISL3pEpz0LPPPot169ahQYMG\n8Pf3x5IlS9CsWTMAQFJSEhYvXgwvLy/MmzcPA+po1GZzkOW++goYNUrezWzSJN7Sksgd6aZPID09\nHf3794enpyemT58OAJgzZw5ycnIwcuRI7N69GyaTCVFRUTh69Cg8PWtfkLAIWCc/H/jzn+US1QsX\nAjfdpHVERORIuukTiI6Orj6xR0REoLCwEACQmpqK+Ph4+Pj4wM/PDwEBAcjKylIjBJdhSXtnhw7A\nt98CXl5A797A8ePqxaUFtv0qmAsFc2Eb1fsEFi9ejIEDBwIATp48CaPRWP2Y0WiEyR16NB2oSRPg\nww+B8eOBe+6Ro4iIiOrjbe0Lo6OjUVTHjKXZs2dj8ODBAIBZs2ahQYMGGDlyZL3H8WDj9XVFRkZa\n/BoPD+DJJ2WzUHy8vHHN+PH2j83RrMmFq2IuFMyFbawuAunp6dd9PCUlBevXr8fmzZur9xkMBhQU\nFFRvFxYWwmAw1Pn6hIQE+Pn5AQB8fX0RFhZW/ceuuvzj9vW3+/WLxNdfA/37ZyI9Hfj440h4e+sn\nPm5zm9u2bWdmZiIlJQUAqs+XFhMqSEtLE8HBweL06dO19h86dEiEhoaK0tJSkZeXJzp27CgqKyuv\neb1KYTmljIwMm49RXCxEdLQQsbFClJTYHpNW7JELV8FcKJgLhTXnTlX6BJ5++mn89ttviI6ORvfu\n3TFx4kQAQHBwMIYPH47g4GDExcUhOTmZzUEO4OsLrF8P+Pu7ZocxEVmPy0a4mar7Ga9dC0REaB0N\nEdmTbuYJ2IpFQF3r1gGPPw4sWgQMGaJ1NERkL7qZJ0D2U9UJZE8PPiiXmxg/Hnj/fbsfXjVq5MJZ\nMRcK5sI2Vo8OIucWHg588w0QFwf89BMwaxaXmiByR2wOcnOnT8smoYAA2TzUoIHWERGRtdgcRBZr\n1QrYvBm4cEFeFZw/r3VERORILAI654j2ziZNgNWrgU6d5H0KTp1S/S2twrZfBXOhYC5swyJAAOSi\nc8nJ8t4E990n+wmIyPWxT4CuMXcu8PbbwMaNQFCQ1tEQkbmsOXdydBBdY8oU4NZbZdPQF18APXpo\nHRERqYXNQTqnVXvn6NHAggWyeUgvy1Gz7VfBXCiYC9uwCFC9hgwBPvkEeOQRucwEEbke9gnQDWVn\nA4MGyb6CESO0joaI6sM+AVLF3XcD6elATAxQWiqbiojINbA5SOf00t4ZEgJs2QK89JK8ib0W9JIL\nPWAuFMyFbXglQGYLCpKdxP37yyuCp5/WOiIishX7BMhiJ07IQjBhAjBtmtbREFEV9gmQQ/j5AVu3\nAg88AFy5IpuIiMg5sU9A5/Ta3mk0ykKwYoUsAo64cNNrLrTAXCiYC9vwSoCs1qYNkJkpm4Y8PYFX\nX9U6IiKyFPsEyGanTsklJkaMAP7xD62jIXJf7BMgTbRuLe9JEBkJ+PgA06drHRERmYt9AjrnLO2d\nt98u5xEsWgS89ZY67+EsuXAE5kLBXNiGVwJkN23bykIQGQl4ewOTJ2sdERHdCPsEyO5+/FEWgmef\nBSZO1DoaIvfBPgHShfbtZR9Bv35Aw4bA2LFaR0RE9WGfgM45a3tnx47Apk1ytNDq1fY5prPmQg3M\nhYK5sA2vBEg1gYHA+vXAgAFA06ZAdLTWERHRH7FPgFT39dfAn/8sb1XZq5fW0RC5LmvOnWwOItXd\ndx+QkgI89BBw8KDW0RBRTaoWgbfeeguenp44e/Zs9b6kpCQEBgYiKCgIGzduVPPtXYKrtHdW3Zks\nNhbIy7PuGK6SC3tgLhTMhW1U6xMoKChAeno62rdvX70vJycHK1euRE5ODkwmE6KionD06FF4evKC\nxB3ExwPFxfIOZTt2AC1bah0REal29n3mmWfw5ptv1tqXmpqK+Ph4+Pj4wM/PDwEBAcjKylIrBJcQ\nGRmpdQh2NXEi8Je/yJvYX75s2WtdLRe2YC4UzIVtVCkCqampMBqN6NatW639J0+ehNForN42Go0w\nmUxqhEA6NmsW0KED8Ne/AhUV
"text": [
"<matplotlib.figure.Figure at 0x7fbcc03f6cd0>"
2015-04-02 18:50:42 +00:00
]
}
],
"prompt_number": 458
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So this a Gaussian Filter with B\\*T=0.5. Nice\n",
2015-04-02 18:50:42 +00:00
"\n",
"Let's generate some more filter coefficients. I got these from [\"Free online FIR filter design\"](http://t-filter.appspot.com/fir/index.html). Happy days"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"t_fir_coeff = [0.01665389596732681,\n",
" 0.07353658710395161,\n",
" 0.10040345335534452,\n",
" 0.04751332314075821,\n",
" -0.06317967799551721,\n",
" -0.09143711477971043,\n",
" 0.06319322564548596,\n",
" 0.31257963657965065,\n",
" 0.43524399610103215,\n",
" 0.31257963657965065,\n",
" 0.06319322564548596,\n",
" -0.09143711477971043,\n",
" -0.06317967799551721,\n",
" 0.04751332314075821,\n",
" 0.10040345335534452,\n",
" 0.07353658710395161,\n",
" 0.01665389596732681]\n",
"t2_fir_coeff = [\n",
" 0.005896897045205714,\n",
"0.010704119037845003,\n",
"-0.00007850080590466364,\n",
"-0.03065101327252804,\n",
"-0.04934969829168403,\n",
"-0.0032240578718828747,\n",
"0.12395841691052671,\n",
"0.27093078431580997,\n",
"0.33655204899827573,\n",
"0.27093078431580997,\n",
"0.12395841691052671,\n",
"-0.0032240578718828747,\n",
"-0.04934969829168403,\n",
"-0.03065101327252804,\n",
"-0.00007850080590466364,\n",
"0.010704119037845003,\n",
"0.005896897045205714\n",
"]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 459
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"w,h=signal.freqz(t_fir_coeff,1) # Compute impulse response \n",
"\n",
"plt.plot(w/pi,20*log10(abs(h)))\n",
"plt.grid()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nWzk/QOSPDCkCqampCAiQLz10
"text": [
"<matplotlib.figure.Figure at 0x7fbcc0323250>"
2015-04-02 18:50:42 +00:00
]
}
],
"prompt_number": 460
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"This has a different response. Much sharper. Interesting. Lot more passband ripple too though"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"w,h=signal.freqz(t2_fir_coeff,1) # Compute impulse response \n",
"\n",
"plt.plot(w/pi,20*log10(abs(h)))\n",
"plt.grid()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\noEcPo6Mh0h9HAkR2QkKAt9+W
"text": [
"<matplotlib.figure.Figure at 0x7fbcbfe0cc90>"
2015-04-02 18:50:42 +00:00
]
}
],
"prompt_number": 461
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Much less passband ripple"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's try a filter with a passband"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"\"\"\"\n",
"sampling frequency: 16000 Hz\n",
"\n",
"* 0 Hz - 500 Hz\n",
" gain = 0\n",
" desired attenuation = -40 dB\n",
" actual attenuation = -33.20090552393641 dB\n",
"\n",
"* 1200 Hz - 2500 Hz\n",
" gain = 1\n",
" desired ripple = 5 dB\n",
" actual ripple = 7.628523622719886 dB\n",
"\n",
"* 3500 Hz - 8000 Hz\n",
" gain = 0\n",
" desired attenuation = -40 dB\n",
" actual attenuation = -33.20090552393641 dB\n",
"\"\"\"\n",
"\n",
"p_fir_coeff = [\n",
"0.03315273058205705,\n",
"0.04369271452900486,\n",
"0.010060937885865288,\n",
"-0.07363298137328711,\n",
"-0.14853046126761885,\n",
"-0.13375882936132458,\n",
"-0.007516054328839414,\n",
"0.15276142842227725,\n",
"0.2256656942570718,\n",
"0.15276142842227725,\n",
"-0.007516054328839414,\n",
"-0.13375882936132458,\n",
"-0.14853046126761885,\n",
"-0.07363298137328711,\n",
"0.010060937885865288,\n",
"0.04369271452900486,\n",
"0.03315273058205705,\n",
"]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 462
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"w,h=signal.freqz([x/2 for x in p_fir_coeff],1) # Compute impulse response \n",
"\n",
"plt.plot(w/pi,20*log10(abs(h)))\n",
"plt.grid()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nFSoXIuQL+QR0sN++Hdi/H/DQ
"text": [
"<matplotlib.figure.Figure at 0x7fbcc053d110>"
]
}
],
"prompt_number": 463
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"p_si_coeff_values = si_coeff([x/4 for x in p_fir_coeff])[0:9]\n",
"\n",
"print p_si_coeff_values\n",
"print \", \".join(hex(n) for n in p_si_coeff_values)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[6, 8, 1, 242, 228, 231, 255, 29, 43]\n",
"0x6, 0x8, 0x1, 0xf2, 0xe4, 0xe7, 0xff, 0x1d, 0x2b\n"
]
}
],
"prompt_number": 464
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"p_si_fir_coeff = si_normalise_coeff(sym_fir_coeff(p_si_coeff_values))\n",
"print p_si_fir_coeff"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[0.0078125, 0.010416666666666666, 0.0013020833333333333, -0.018229166666666668, -0.036458333333333336, -0.032552083333333336, -0.0013020833333333333, 0.037760416666666664, 0.055989583333333336, 0.037760416666666664, -0.0013020833333333333, -0.032552083333333336, -0.036458333333333336, -0.018229166666666668, 0.0013020833333333333, 0.010416666666666666, 0.0078125]\n"
]
}
],
"prompt_number": 465
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"w,h=signal.freqz(p_si_fir_coeff,1) # Compute impulse response \n",
"\n",
"plt.plot(w/pi,20*log10(abs(h)))\n",
"plt.grid()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nMmAymWA2mxEdHY38/Hy5p/EK
"text": [
"<matplotlib.figure.Figure at 0x7fbcc01995d0>"
]
}
],
"prompt_number": 466
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some more resources, have sections on normalisation\n",
"\n",
"[here](http://www.mikroe.com/chapters/view/72/chapter-2-fir-filters/)\n",
"[here](http://dsp.stackexchange.com/questions/4693/fir-filter-gain)"
]
},
2015-04-02 18:50:42 +00:00
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Generate some test aprs data"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 466
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"samp_rate = 60*1000"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 467
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def create_sine(frequency, amplitude=1.0, bits=1, bitrate=1200, sr=samp_rate):\n",
" global phase\n",
" \n",
" w = 2.0 * pi * frequency\n",
" t = arange(0, (bits / bitrate), bits / sr)\n",
" \n",
" wave = sin(w * t + phase)\n",
" phase += (w * bits / bitrate)\n",
" \n",
" return wave\n",
" \n",
"def random_data(length=200):\n",
" return [0 if x < 0.5 else 1 for x in rand(length)]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 468
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def get_afsk(len_afsk=25, sq=False, sr=samp_rate, dl=1, dh=1):\n",
" global phase\n",
" phase = pi/2\n",
" \n",
" if sq: # Square Wave\n",
" afsk = concatenate([[-dl if x < 0 else dl for x in create_sine(1200, sr=sr)] if x \n",
" else [-dh if x < 0 else dh for x in create_sine(2200, sr=sr)]\n",
" for x in random_data(len_afsk)])\n",
" \n",
" else: \n",
" afsk = concatenate([create_sine(1200, sr=sr) * dl if x \n",
" else create_sine(2200, sr=sr) * dh for x in random_data(len_afsk)])\n",
" \n",
" \n",
" \n",
" return afsk"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 469
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Let's see what it looks like in the time domain"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plt.plot(get_afsk(len_afsk=12))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 470,
2015-04-02 18:50:42 +00:00
"text": [
"[<matplotlib.lines.Line2D at 0x7fbcc001de50>]"
2015-04-02 18:50:42 +00:00
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\npwZfAC+w4OgeJ/gKkwFgloGb
2015-04-02 18:50:42 +00:00
"text": [
"<matplotlib.figure.Figure at 0x7fbcbfea9f10>"
2015-04-02 18:50:42 +00:00
]
}
],
"prompt_number": 470
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Yay, it's phase continous. Sorry about the global\n",
"\n",
"And as a square wave"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plt.plot(get_afsk(len_afsk=10, sq=True, dh=3/1.6)) # test out the different deviations for high/low tone"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 471,
2015-04-02 18:50:42 +00:00
"text": [
"[<matplotlib.lines.Line2D at 0x7fbcc04a3750>]"
2015-04-02 18:50:42 +00:00
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nwoX6ttSC3u0EsGYNsH8/cPPN
2015-04-02 18:50:42 +00:00
"text": [
"<matplotlib.figure.Figure at 0x7fbcbfd5bcd0>"
2015-04-02 18:50:42 +00:00
]
}
],
"prompt_number": 471
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Plots a set of afsk spectrums\n",
"\n",
"def plot_afsk_spectrum(afsks, num=\"\", sr=samp_rate, p_avg=True, p_max=True):\n",
" S = sr/(1200*15)\n",
" len_afsk = 25\n",
"\n",
" n_afsk = (len_afsk/1200)*samp_rate # Total number of samples\n",
" \n",
" win = blackman(len(afsks[0]))\n",
" \n",
" ffts = [fft(afsk*win) for afsk in afsks]\n",
"\n",
" yf_average = average(ffts, axis=0)\n",
" yf_maximum = amax(ffts, axis=0)\n",
"\n",
" xf = np.linspace(0.0, 0.5*sr/S, n_afsk/(2*S))\n",
" \n",
" if p_avg:\n",
" avg, = plt.semilogy(xf, 2* 2.0 * np.abs(yf_average[0:n_afsk/(2*S)]), label='Avg'+num)\n",
" if p_max:\n",
" maxi, = plt.semilogy(xf, 2.0 * np.abs(yf_maximum[0:n_afsk/(2*S)]), label='Max'+num)\n",
" \n",
" if p_avg and p_max:\n",
" plt.legend(handles=[avg,maxi])\n",
" \n",
" plt.grid()\n",
" \n",
"def plot_afsk_spectrum2(afsks1, afsks2, p_avg=True, p_max=True):\n",
" plot_afsk_spectrum(afsks1, \"1\", p_avg=p_avg, p_max=p_max)\n",
" plot_afsk_spectrum(afsks2, \"2\", p_avg=p_avg, p_max=p_max)\n",
" plt.grid()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 472
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that while on average the energy is at 1.2kHz and 2.2kHz there's actually things going to up to 3kHz or so"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"afsks = [get_afsk() for x in range(100)]\n",
2015-04-02 18:50:42 +00:00
"\n",
"plot_afsk_spectrum(afsks)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nVHwJWkVwt3BHwYsClFWWqWR8
2015-04-02 18:50:42 +00:00
"text": [
"<matplotlib.figure.Figure at 0x7fbcc00c5e50>"
2015-04-02 18:50:42 +00:00
]
}
],
"prompt_number": 473
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Let's compare that with the squarewave"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"afsks = [get_afsk(sq = False) for x in range(100)]\n",
"afsks_sq = [get_afsk(sq = True) for x in range(100)]\n",
2015-04-02 18:50:42 +00:00
"\n",
"plot_afsk_spectrum2(afsks, afsks_sq)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nkVJdbeEVkZGxHNb+/bcG2lsj
2015-04-02 18:50:42 +00:00
"text": [
"<matplotlib.figure.Figure at 0x7fbcc00ddf50>"
2015-04-02 18:50:42 +00:00
]
}
],
"prompt_number": 474
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Hmm the square wave is less that 10dB down at ~4kHz. Not great"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# What happens when we add a filter?\n",
"Let's tune the deviation ratios too"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Start by defining the tx data rate `DATA_RATE` and oversampling ratio `TXOSR` "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"tx_data_rate = 1600\n",
2015-04-02 18:50:42 +00:00
"tx_osr = 10\n",
"\n",
"# Our filter samples at the product of these two values\n",
"filter_samp_rate = tx_data_rate * tx_osr"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 475
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Deviation for high tone\n",
"devl = devh = 1800 # Not sure how this works"
2015-04-02 18:50:42 +00:00
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 476
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "code",
"collapsed": true,
"input": [
"# Which fir filter to use\n",
"fir = p_si_fir_coeff"
2015-04-02 18:50:42 +00:00
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 477
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"afsks = [get_afsk(sq = False, sr=filter_samp_rate, dl=devl, dh=devh) for x in range(100)]\n",
2015-04-02 18:50:42 +00:00
"afsks_filtered = [convolve(afsk, fir, mode='valid') for afsk in afsks] \n",
"\n",
"afsk_time = get_afsk(len_afsk=12, sq = False, sr=filter_samp_rate, dl=devl, dh=devh)\n",
"plt.plot(convolve(afsk_time, fir, mode='valid'))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 478,
2015-04-02 18:50:42 +00:00
"text": [
"[<matplotlib.lines.Line2D at 0x7fbcc0c93550>]"
2015-04-02 18:50:42 +00:00
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\ndwYkBkQssRMMmYoicgbykBhI
2015-04-02 18:50:42 +00:00
"text": [
"<matplotlib.figure.Figure at 0x7fbcc164e810>"
2015-04-02 18:50:42 +00:00
]
}
],
"prompt_number": 478
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plot_afsk_spectrum2(afsks, afsks_filtered, p_max=False) # Average"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEDCAYAAAA4FgP0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd8FGX+xz+b3nvPpkASCCH0jgRWUTnkRPSU4u9UQES5\ni2ev50mw3aHn2VDsqKgIAgpYgrSlk0AgJJAekrDpIZ0kpD6/Px5m62x2NjuzO4R5v168yNT9ZGYz\n3/mW5/vICCEEEhISEhLXLXa2FiAhISEhYVskQyAhISFxnSMZAgkJCYnrHMkQSEhISFznSIZAQkJC\n4jpHMgQSEhIS1zmSIZCQkJC4zpEMgYSEhMR1jqCGQKlUIikpCatWrcLBgweF/CgJCQkJiQEiqCGw\ns7ODp6cnOjs7IZfLhfwoCQkJCYkBYrYhWL58OYKDgzFq1Cid9ampqYiPj0dcXBzWrl0LAEhKSsJv\nv/2G//znP1i9ejU/iiUkJCQkeMVsQ7Bs2TKkpqbqrOvt7UVycjJSU1ORk5ODTZs2ITc3FzKZDADg\n4+ODzs5OfhRLSEhISPCKg7kHJCUlobS0VGddeno6YmNjER0dDQBYvHgxduzYgby8POzevRtNTU14\n9NFH+dArISEhIcEzZhsCNioqKhAREaFelsvlSEtLw/PPP48777yTj4+QkJCQkBAIXgwBEwKy9rES\nEhIS1zN8zSLAS9VQeHg4VCqVelmlUplVJbR69WocOHAAhBBR/Fu9erXNNVwruiRNkqbrQZeYNB04\ncID34hteDMHEiRNRWFiI0tJSdHV1YfPmzZg/fz7n41NSUqBQKPiQwgv6ORCxIEZdkiZuSJq4I0Zd\nYtKkUCiQkpLC6znNNgRLlizB9OnTUVBQgIiICGzYsAEODg5Yt24d5syZg4SEBCxatAgjRozgfM6U\nlBQolUpzpUhISEhcdyiVSt4NAYiNEYEEAw4cOGBrCayIUZekiRuSJu6IUZcYNfH57JRdPaHNkMlk\nWL16NRQKhajCQ9qoVIBWUZTo6e0F5s0DPv8ckAZ0S0gMLpRKJZRKJdasWQO+Ht+iaDonthyBdphK\npQKGDQPOnbOdHgau4bPffgN27wZOnBBWD8BdkzWRNHFDjJoAceoSkyZR5AiEQMw5gpdeAq5cAS5e\ntLUS7nzwATVeZ8/aWomEhATfCJEjEEVoyMYSjJKZCcydC8ycCcyeDaxcaWtFpsnLAxQK4O23gS1b\ngB07bK1IQkJCCPh8dkoeQT+88w7wzDNAQgINEV0LfPIJsGIFMHmy5BFISAxGhPAIRGMIxJgjUKmA\nMWNowrW83LaaAG5xytOngRtvBIYOBS5dApqabK/J2kiauCFGTYA4dYlJ06DNEYiV2logMFA8hoAL\nJSXAkCGAvT2QmAhkZ9takYSEhNgRRY5ArOWjwcE0vNLQAPzlL0Burq0V9U9XF+DhAbS1AY6OwMMP\nA6NGAcnJtlYmISHBF0KUj4rCEIgxWdzXBzg5AR0d9F9YGNDaCoi5R15REXDzzQAzGv6jj4AzZ4DP\nPrOpLAkJCQEYdMlisaFUKtHQAHh70zdrLy/Azg5obra9rv5gwkIMY8YAWVm21WQLJE3cEKMmQJy6\nxKiJTyRDYAQmP8BwLeQJ9A1BQoL4w1kSEhK2RxSGQGzlowqFAnV1QFCQZp0YDIGpHIq+IfD2pvmC\nnh7babIFkiZuiFETIE5dYtIklY9aETaPQOxjCfQNgZ0d4OkJtLTYTpOEhAS/SOWjVkKpVBp4BBER\ntvcIzM0RANQrEDK3ISZPjkHSxA0xagLEqUuMmvhEMgRGMJYj6O2lA7XECJsh8PGxfZJbQkJC3Ejl\no0b4+9+BESM0Nfi//w68+y4QHw/88gtQWEhDL2KhrQ0ICKD/a+uaORN49VVg1izbaZOQkOAfqXzU\nCrB5BIcO0RbPzs7AgQO208ZGaSkQFWVonIQODUlISFz7iMIQiK1qiC1HEBUF+PsD27cDq1bRSV9s\nocsYbGEhQMoRiAVJE3fEqEtMmoSoGnLg9WwDhPf5N3lA3yPw8qJVQzIZ9Q7+9S+gvp4aBzFw4YJt\nDIGEhIR1YdrxrFmzhrdzSjkCIwQGAufP63oF2vz1r8D48cCTT1pXFxt9pA+jHn8RE4YOwTePPayz\n7cUXAXd34J//tJE4CQkJQZByBALT2ws0Nvb/tv/kk3Tyl/Z26+lio6u3C4u3Lkae6wbUeOwx2C55\nBBISEqYQ3BC0tbVh0qRJ+PXXX4X+KN7YuVMJX1/aytkY48cDU6fSxm4DoauLehzmwBan3FO8B3m1\nF+Dxy0+o6S4y2C7lCMSBpIk7YtQlRk18IrghePPNN7Fo0SKhP4ZXmpp08wPGeOUV4K23BjZy98cf\ngWnTgKoq84/VpqC+AOG903HDsAQUNxYbuIqSRyAhIWEKsw3B8uXLERwcjFGjRumsT01NRXx8POLi\n4rB27VoAwJ49e5CQkIBALk9VEREdrTCaG9Bm5EjgT3+idfrmcvgwHez1/PPcj2HacBw6RGP/jz0G\n5F8qQnt5HG6c5gNne2fUttXqHCO0IRBbaxBA0sQVMWoCxKlLjJr4xGxDsGzZMqSmpuqs6+3tRXJy\nMlJTU5GTk4NNmzYhNzcXBw8exIkTJ/D999/js88+E2VSmA39iqH+eOst4Jtv6BSR5nDoEPDtt8C+\nfYDe5ewXQoA77gAcHIBz54A9GUUoz4rFDTcAMX4xKG4s1tlf8ggkJCRMYbYhSEpKgq+vr8669PR0\nxMbGIjo6Go6Ojli8eDF27NiB1157De+88w7uvfderFy5EjIxz+qixdGjSs6GICgIePNNOmE81y6f\nly4BFRXADTfQSWNWrgTGjaOjlftDqVSiuJg2knvlFWDjRqC0pRCV52IxYQIQ6xeLogbdPIGUIxAH\nkibuiFGXGDXxCS/jCCoqKhAREaFelsvlSEtLUy8/8MAD/R6/dOlSREdHAwB8fHwwduxYtSvG3ABr\nLhcUZGLiRO77R0YCzc0K5OcDdXVKFBUB776rQHIyEB2thIuL7v5HjgDTpilgbw+4uirx1VfA558r\nsHcvUFHR/+d9840SUVEAoEBAcBdkjeWYMKQMzs5xiPGNwb79+xDZGKnePydHidpaur8Q1yszM5PX\n8/GxnJmZKSo92ohFj5iXpfvHvqxUKvHVV18BgPp5yRtkAJSUlJDExET18tatW8mKFSvUyxs3biTJ\nycmczjVACYLy5JOEvPmmecfccAMhhw7Rn7dtI2T8eEJuu40QZ2dCYmMJ2b5ds+8TTxDy+uu6x69e\nTci//mX6c55+mpDXXqM/59XlkZj3YtTbvs78mty77V6d/ZubCfHwMO93kZCQED98Pjt5qRoKDw+H\nSqtZv0qlglwu53w802KitJQ2TbM1zc00pGIOvr507AFAJ7sfOxb49Vc6z/Fnn9GJ5NPT6fbDh4Gk\nJN3jQ0O5VRBlZAATJ9KfixqKEOsXq94W4xuD4gbdHIGHBx3r0Ntr3u8jISEhTpRinZhm4sSJKCws\nRGlpKbq6urB582bMnz+f8/HMxDSPP05j37amsFBpkSFobAT8/OjPjo6AQgF88QVw++20G2hhITBp\nku7xoaFAZWX/n7F/vxIZGcCECXS5qKEIcX5x6u1sOQI7gSen0XedxYCkiRti1ASIU5eYNCnEMDHN\nkiVLMH36dBQUFCAiIgIbNmyAg4MD1q1bhzlz5iAhIQGLFi3CiBEjOJ+T8QjKyoCPP7Z9lUtbm/ke\ngZ8f9QQA+r9ePh23307bV7/yCh1I5uKiu52LR1BZSc8bEECXCxsKdTyCIPcgdPZ2oulKk85xUuWQ\nhMTgQQiPwOxk8aZNm1jXz507F3PnzrVIzMWLdLTuJ58Azz5r0akswsFBYXFoiCZ0ddH3ArThYgjs\n7RVqbwCgHsHcWM01l8lk6vDQhDDNjkIaAiapJSYkTdwQoyZAnLrEqIlPRNFrKCUlBRMnKtDRQUsx\n330X6Oy0nR5LcwSNjYYegSmC
2015-04-02 18:50:42 +00:00
"text": [
"<matplotlib.figure.Figure at 0x7fbcc00dd450>"
2015-04-02 18:50:42 +00:00
]
}
],
"prompt_number": 479
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plot_afsk_spectrum2(afsks, afsks_filtered, p_avg=False) # Maximum"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n4AWGdBhScq67RXc8zXmK6MfR
2015-04-02 18:50:42 +00:00
"text": [
"<matplotlib.figure.Figure at 0x7fbcc0716810>"
2015-04-02 18:50:42 +00:00
]
}
],
"prompt_number": 480
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### And for a squarewave input"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"afsks = [get_afsk(sq = True, sr=filter_samp_rate, dl=devl, dh=devh) for x in range(100)]\n",
2015-04-02 18:50:42 +00:00
"afsks_filtered = [convolve(afsk, fir, mode='valid') for afsk in afsks] \n",
"\n",
"afsk_time = get_afsk(len_afsk=12, sq = True, sr=filter_samp_rate, dl=devl, dh=devh)\n",
"plt.plot(convolve(afsk_time, fir, mode='valid'))\n",
"plt.grid()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nKy9y35S6AWtDWwM9A8V+3pBH
2015-04-02 18:50:42 +00:00
"text": [
"<matplotlib.figure.Figure at 0x7fbcc039c390>"
2015-04-02 18:50:42 +00:00
]
}
],
"prompt_number": 484
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plot_afsk_spectrum2(afsks, afsks_filtered, p_max=False) # Average"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEDCAYAAAA4FgP0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXl8FOX9xz+b+75DEpJAIAmBcAkCAnIEFQNoRa0KeBVQ\naVGsWnvYwxr7q1S0VVSq9b6qoKKWS4MXC8oVznAkIQkkEAgJue9kk838/vgyuzOzM7Ozu7PZIcz7\n9eJFZnZm9ruzs8/n+R7P8xgYhmGgo6Ojo3PZ4uVpA3R0dHR0PIsuBDo6OjqXOboQ6Ojo6Fzm6EKg\no6Ojc5mjC4GOjo7OZY4uBDo6OjqXOboQ6Ojo6Fzm6EKgo6Ojc5njViEwGo2YPn06li9fju3bt7vz\nrXR0dHR0nMStQuDl5YXQ0FB0dXUhKSnJnW+lo6Ojo+MkDgvB0qVLERcXh9GjR/P25+bmYvjw4UhP\nT8eqVasAANOnT8dXX32FZ599Fk899ZQ6Fuvo6OjoqIrDQrBkyRLk5uby9pnNZqxYsQK5ubkoKCjA\n2rVrUVhYCIPBAACIiIhAV1eXOhbr6Ojo6KiKj6MnTJ8+HeXl5bx9eXl5SEtLQ0pKCgBg4cKF2LBh\nA4qKirB161Y0Njbi4YcfVsNeHR0dHR2VcVgIxDh37hySk5Mt20lJSdi7dy+eeOIJ3HLLLWq8hY6O\njo6Om1BFCNgQUF+fq6Ojo3M5o9YqAqpUDSUmJqKiosKyXVFR4VCV0FNPPYVt27aBYRhN/Hvqqac8\nbsOlYpduk27T5WCXlmzatm2b6sU3qgjBhAkTUFJSgvLycphMJnzyySe46aabFJ+fk5ODrKwsNUxR\nBWEORCto0S7dJmXoNilHi3ZpyaasrCzk5OSoek2HhWDRokWYOnUqiouLkZycjHfffRc+Pj5Ys2YN\nsrOzkZmZiQULFmDEiBGKr5mTkwOj0eioKX3GgQNAb6+nrdDR0dGhgbpqCwEYD6MBE2zYtm2b5e+G\nBoYJCGCYAwc8Zw8L1y57rFvHMB0d7rOFxRGb+grdJmVo0SaG0aZdWrRJzbbTcPGCHsNgMOCpp55C\nVlaWpsJDLK++Cjz0EPD558Ctt3raGmUUFgKZmcCPPwLTpnnaGh0dHTUxGo0wGo14+umnoVbzrYlJ\n57SWI+CGqd5+Gxg5Eigr85w9LErDZy++CPj5AUVF7rUHUG5TX6LbpAwt2gRo0y4t2aSJHMHlxOHD\nQG0tsHQpoKFckSw1NcBnnwEPP9w3QqCjo3Ppo4eGZHjsMSA8HLjiCvIMNm3ytEX2+b//AyoqgBtu\nAN58E9i82dMW6ejoqIk7QkOaEAIPmyDJvHmUH0hKAu66Czh2zNMW2WfePGD5cmDYMBKD0lJPW6Sj\no+MO1Gw79dCQCGw8sLYWiI4GBg+m0JCn9UpJnPL8eWDgQGDoUODsWaCz0/M29TW6TcrQok2ANu3S\nok1qogkh0Oo4gro6ICYGiIgAfH1pW+ucPw8kJJC9Q4boHoGOTn/DHeMI9NCQDOHhwOnTJATjxwOv\nvw5MnOhpq6Tp6QECA4GODsDHB7jlFgpp3Xabpy3T0dFRGz001AeYTEB7O4kBAKSkaL9y6MIF8mB8\nLk4lOHy4Xjmko6NjH00IgdZCQ0ajEfX1QFQUwE6OqgUhsHeP2LAQS18IgZa+NxbdJmVo0SZAm3Zp\nySZ3hIY0IwRaKx1lE8UsQ4ZoY1CZHEIhyMjQPQIdnf6GOwaU6TkCCbZvB558Etixg7Y3bQJeew34\n6ivP2iXHG28AeXnAW2/Rdl0dkJoKNDZ61i4dHR310XMEfYDQI/BUaMhkIgFav97+sUKPICICaGnR\nZ07V0dGRRxcCEYxGo6V0lCU5mery+5JTpyjO/+WXwIMPAv/5j1H2eKEQeHtTFVFbm/ts1FLslEW3\nSRlatAnQpl1atElNNCEEWksWA7YeQXAwVRH1Jf/+N814+s03wH/+A+TkyI9lEAoBAISGklego6PT\nP9DHEfQhv/kNjdD97W+t+3x8aKSujyorPctjMpEXsnMnkJZG+379a6C7m0JFYkyaBLz8MjB5snVf\nRgawYQN5Fjo6Ov0HPUfQBwhDQ4B1sFZfsGULNd6sCADkEaxfD5w4IX6O7hHo6Og4gy4EIhiNRpvQ\nEAAEBPSdELzzDk1/zeXIESN+/3vgj3+0Pb63F6iuBuLj+fvdLQRaC+kBuk1K0aJNgDbt0qJNaqIL\ngQRSHoG7J3EDgPp6KlsVmxri4YdpDeWdO/n7a2up0ff35+8PCwOam91nq46OzqWPniOQIC2NxgwM\nG2bdl5EBbNxI/7uTTZso1v/tt+Kvf/ABJY937rSOfM7PF58q++67gexs4J573Guzjo5O36LnCPoA\nT+YIfvwRmD5d+vW77qKS0P/9z7pPLD8A6DkCHR0d+2hCCLRWPvrdd0a0tNCALC5iOYLjx10bufvT\nT8C+ffx9UkLA3iNvb+C554A//cm6RkJFpQkDBtrGrdwdGtLS98ai26QMLdoEaNMuLdnU7+caqqzs\nu2SsHM3NQGQk4CW4O2I5gvvuo+UhHaWzE/jVr4D58ykpzDbo7e3AkSPAVVfJn3/99XSvCguBLcVb\n8LvTGSgb8heb43SPQEenf9HvF6//5S9pzn9PM3x4lk3FEGAbGmpooEb7gw+oYTebpeP6QjZuBA4f\nBk6epHEJ7BxGeXnA6NFAUJDtOdyJ+QwGEoPXt+zG/Zvuh3fpfPjEldic424h0NpkgUDf2lRfr+y4\ny/0+OYIW7dKiTWqiKSE4fhzIzfW0FVSBI8wPALahIaMRmDGDFrf/8ktg1SpqnJVMRZGXB9x0E4Wf\nfv97CvUA9vMDXLKzgR+OFmHKgOuB/HvQYjhjc4xeNeQejh4lby4mhrwyHZ1LGc0IQVsbUFkJ7Nrl\n+fDQ9u1GUSEQegTffgtcdx2wbBkN9nrpJWD2bOrt22PvXhoJDAC33w6cOUOloZ99Ji0EwjjlNdcA\nxVVn0HR6EOZMGYzTTadtztHHEbiHxx4Dxo4Frr0WKC7Whk2OokWbAG3apUWb1MTtQtDW1oaJEydi\ny5YtssedOEGlmmPHWqd+9hRNTbaDyQDbHMF331HDP38+7f/3vym8tWGD/PV7eoBDh4AJE2jbx4fO\nSUykxn3WLGV2RkYC4YPPYM/WQbhtXjS6zF1o6eK3+nqOQH16e4H9+0m4MzNpckAd99Ld7WkL+jdu\nF4LnnnsOCxYssHtcYSH9qObM8Xx4KCbGfo7g9GmqFho9GvDzo1j/bbdRuGb3bhITKY4fp3mEuFVJ\nY8YATzwBrF5NjbcYYnHK0MQKdNclY/ZsAwaH23oF7g4NaTF26m6bSkvpu4uNBYYOpe/e0zY5gxZt\nAvh2mUzAM8/Q/S4t1YZNSvnuO+r0iXHgAC0tqxUcFoKlS5ciLi4Oo0eP5u3Pzc3F8OHDkZ6ejlWr\nVgEAvv32W2RmZiI2NtbudQsKSAiys4GtWx21Sl3YZSqFcHMEP/xAYQG2soidiC4khEI7X38tff28\nPGtYyFWYsDO468ZBCAkBBoUPwulGvhDoHoH67NsHTJxIfw8dqnsE7mTZMsqbjRljO1hSy5w8SW3Z\n/v3ir//xj1T+rRUcFoIlS5YgV9BlN5vNWLFiBXJzc1FQUIC1a9eisLAQ27dvx549e/Dxxx/jzTff\nlB0FxwrB+PGklJWVjn8YtTh+3IjISNv9XI/g7Fn+hHBcbr6ZP9hLiLNCIIxTMgyD6s4KvPx/yQAg\n6hHoOQL14QpBaqoyj+ByvE/OwtrFMNShev11YMoUoMS2KK7PbVLKCy/Q/1LPxsmTwMcfe7ad4+Kw\nEEyfPh2RglYyLy8PaWlpSElJga+vLxYuXIgNGzbg73//O1588UXceeedWLZsGQzsfAgiFBQAI0ZQ\nDzslpe8XgeHS2gpJIWBzBC0t1PsXY/58Cm9JJb3V8gjqO+rh5+2HUH+KJQ2OGGzjEdgLDX3xBTB1\nqrQL2xd8951n3X5H4QrBkCEU
2015-04-02 18:50:42 +00:00
"text": [
"<matplotlib.figure.Figure at 0x7fbcc06da650>"
2015-04-02 18:50:42 +00:00
]
}
],
"prompt_number": 482
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plot_afsk_spectrum2(afsks, afsks_filtered, p_avg=False) # Maximum"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n3t6K1yo4fZoOROMyU6kquvgg
2015-04-02 18:50:42 +00:00
"text": [
"<matplotlib.figure.Figure at 0x7fbcc1943790>"
2015-04-02 18:50:42 +00:00
]
}
],
"prompt_number": 483
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 483
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 483
2015-04-02 18:50:42 +00:00
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 483
2015-04-02 18:50:42 +00:00
}
],
"metadata": {}
}
]
}