Skip to content

Instantly share code, notes, and snippets.

@kylerbrown
Last active August 29, 2015 14:15
Show Gist options
  • Save kylerbrown/a612923f1cd071c9bedd to your computer and use it in GitHub Desktop.
Save kylerbrown/a612923f1cd071c9bedd to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:eac1cf963b4bd47fe6298f39eb14e8515ba06a17c63f0d0144b7c4714e14da1f"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finding the Common Mode Rejection Coefficient\n",
"============================================================\n",
"\n",
"Assume you have two channels, $A_t$ and $B_t$ where $t \\in {0, 1, 2, ... T}$. Each channel is composed of a linear sum of a unique signal and a common noise, with the noise scaled by an unknown constant. \n",
"$$ \\array{\n",
"A_t &= a_t + N_t\\\\\n",
"B_t &= b_t + \\frac{N_t}{C}\\\\\n",
"}$$\n",
"\n",
"If $C$ was known, we could remove the noise from the difference of the two channels optimally, that is:\n",
"\n",
"$$ A_t - CB_t = (a_t + N_t) - C (b_t + \\frac{N_t}{C}) = a_t - C b_t $$\n",
"\n",
"\n",
"In paired, chonically implanted electrodes, common noise and movement artifacts can be reduced (but in practice not eliminated) using this method."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Solving for $C$ analytically\n",
"----------------------------\n",
"\n",
"We'd like to minimize the **s**um **s**quared **d**ifference between $A_n$ and $CB_N$.\n",
"\n",
"$$ SSD = \\sum (A_t - C B_t)^2 $$\n",
"\n",
"Taking the derivative with respect to C and setting the derivative to zero, we find\n",
"\n",
"$$\\array{\n",
"\\frac{dSSD}{dC} &=& 2 \\sum (A_t - C B_t) B_t\\\\\n",
"0 &=& \\sum A_t B_t - C\\sum B_t^2\\\\\n",
"C &=& \\frac{\\sum A_t B_t}{\\sum B_t^2}\\\\\n",
"}$$\n",
"\n",
"\n",
"In Python, this would look something like:\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# setting up the problem\n",
"from __future__ import division\n",
"import numpy as np\n",
"T = 1000\n",
"t = np.arange(T)\n",
"common_noise = 10*np.random.randn(T)\n",
"true_C = .5\n",
"signal_1 = np.cos(2*np.pi*t/110)\n",
"signal_2 = np.cos(2*np.pi*t/300)\n",
"A = signal_1 + common_noise\n",
"B = signal_2 + common_noise / true_C\n",
"\n",
"# solving for C\n",
"C = np.dot(A, B) / np.dot(B, B)\n",
"print(\"True C: {}, computed C {}\".format(true_C, C))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"True C: 0.5, computed C 0.499955696052\n"
]
}
],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"%matplotlib inline\n",
"plt.plot(A, alpha=.5, label=\"A\")\n",
"plt.plot(B, alpha=.5, label=\"B\")\n",
"plt.plot(A-C*B, label=\"A-CB\")\n",
"plt.legend()\n",
"plt.ylim(-10,10);"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x7f73cd4e03d0>"
]
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Interestingly, this method works less well with a lower noise signals, for example:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"common_noise = 0.5*np.random.randn(T)\n",
"A = signal_1 + common_noise\n",
"B = signal_2 + common_noise / true_C\n",
"C = np.dot(A, B) / np.dot(B, B)\n",
"print(\"True C: {}, computed C {}\".format(true_C, C))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"True C: 0.5, computed C 0.350776916893\n"
]
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plt.plot(A, alpha=.5, label=\"A\")\n",
"plt.plot(B, alpha=.5, label=\"B\")\n",
"plt.plot(A-C*B, label=\"A-CB\")\n",
"plt.legend()\n",
"plt.ylim(-10,10);"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x7f73cd4e0a10>"
]
}
],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Solving for $C$ using optimization\n",
"----------------------------------\n",
"We can use optimization packages, such as scipy's `optimize` module to check our analytical solution."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from scipy.optimize import minimize\n",
"def SSD (c, a, b):\n",
" \"\"\"returns the sum squared of a - c*b\"\"\"\n",
" return np.sum( (a-c*b)**2 )\n",
"\n",
"res = minimize(SSD, 1, args=(A, B))\n",
"C = res.x[0]\n",
"print(\"True C: {}, computed C: {}\".format(true_C, C))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"True C: 0.5, computed C: 0.350776907985\n"
]
}
],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Which is the same solution found analytically."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Quality of common mode rejection over signal-to-noise ratios\n",
"------------------------------------------------------------\n",
"\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def find_c(snr, T, true_C):\n",
" signal_1 = np.random.randn(T)\n",
" signal_2 = np.random.randn(T)\n",
" common_noise = 1/snr*np.random.randn(T)\n",
" A = signal_1 + common_noise\n",
" B = signal_2 + common_noise / true_C\n",
" return np.dot(A, B) / np.dot(B, B)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"true_C = 0.5\n",
"snr = np.arange(0.05, 2, 0.05)\n",
"C = [find_c(x, 1000, true_C) for x in snr]\n",
"plt.scatter(snr, C, label=\"Measured C\", color=sns.color_palette()[0])\n",
"plt.xlabel(\"SNR\")\n",
"plt.ylabel(\"measured C\")\n",
"plt.hlines(true_C, snr[0], snr[-1], label=\"True C\", color=sns.color_palette()[1])\n",
"plt.hlines(1, snr[0], snr[-1], label=u\"Na\u00efve C\",\n",
" color=sns.color_palette()[2])\n",
"plt.legend()\n",
"plt.xlim(snr[0], snr[-1])\n",
"plt.title(\"C < 1, (coefficient fit to larger signal)\");"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nceaZvwbgb3+bxsqVKxg7dlyN5V955SXmz59Lt249WLbsRw477GeNOv7Mma9y9913sHLlStq2bcOO\nO+5SFUtzoSQgIi1WmzZteOmlGYwZcxLrrbd+HXMGweDBezJ48J5ZOfbcuXO46abruO66SWy66WaU\nl5fzxBOPZmXf2aTuIBFpsQoLW3PIIYfz4IN/W+uzV155iXHjTmLs2OP49a9/wdKl3wPw1FP/YOLE\na1m+/CeOPPLgqvIrVqzgiCNGUlZWxpdfLuTcc8/ilFPG8MtfnsYXX8xfa//33XcvJ554CptuGjyF\n3KpVKw477Mh4ftFGUEtARGK3+KEHWPb2W43aR/rrJTvtvAtFRx1T53ZHHHEUJ544muOOO6Ha+u22\n24HJk/8CwD/+8Rj33Xdvta6ajh3XpW/frXj33bfZccedee21l9l11z0oLCzk2muv4vzzL6Jnz178\n+98fccMNE5g06fZq+583by7HHlv9mM2RkoCItGgdOnRk+PCRPPTQA7Rrt2YG0W+//YbLLvst33//\nHSUlJXTv3mOtbffZZz9eeOE5dtxxZ55/fjo/+9nRFBcX8+GHH3DppRdWlSspKc3J7xIHJQERiV3R\nUcdEumrPuI9GzB101FGjOeWU4xkxYk33zsSJ1zJ69BgGDRrCrFnvrPWCGYBBg/Zk8uQ/8eOPPzJ7\n9qfstNMuFBcvp1OnTkyZsnYXU6rNN9+CTz/9mC237NOgmHNFYwIi0uJ17tyZvfcexpNPPl41OFxc\nvJwNNywC4Omnn6xxuw4dOrD11v2YNOk6Bg0aQkFBAR07rkv37t2rpoyuqKhgzpzP1tr22GNPYNq0\nKSxY8AUA5eXlPPbYI3H8eo2iloCItFipdwONHn08jz7696rlsWPHcemlF9KpU2d22mlnFi36umqb\n1O323Xc/Lrvsd9xyyx1V6y677Equv/6PTJ16D6WlpQwbtj99+vStduwtt+zDWWedyxVXXMyqVSuB\nAgYNGhLTb9pwmko6QTQVb7xUv/FS/TaOppIWEZG1KAmIiCSYkoCISIIpCYiIJJiSgIhIgikJiIgk\nmJKAiEiCKQmIiCSYkoCISIIpCYiIJJiSgIhIgikJiIgkmJKAiEiCKQmIiCSYkoCISIIpCYiIJJiS\ngIhIgikJiIgkmJKAiEiCKQmIiCSYkoCISIIpCYiIJFjrOHduZsOBm4BC4C53n5D2+YbAX4FNwliu\nd/e/xBmTiIisEVtLwMwKgVuB4UA/YLSZbZNW7ExglrtvDwwFbjCzWBOTiIisEWd30EBgjrvPd/cS\n4AHg0LQyXwOdw587A9+5e2mMMYmISIo4r7p7AAtSlhcCu6aVuRN4wcy+AjoBR8cYj4iIpIkzCVRE\nKHMR8J67DzWzLYHnzGw7d19W2wZdunSgdevCrAWZNEVFnZo6hBZN9Rsv1W/2xZkEvgR6pSz3ImgN\npNoDuArA3f9jZvMAA96ubadLlxZnOczkKCrqxOLFteZXaSTVb7xUv41TWwKNMwm8DfQ1s97AV8Ao\nYHRamU+BYcCrZrYxQQKYG2NMIiKSIraB4XCA90zgWeBj4EF3/8TMTjez08NiVwM7m9n7wPPABe7+\nfVwxiYhIdQUVFVG67puPxYuX5VfAzYia0/FS/cZL9ds4RUWdCmparyeGRUQSrNYkYGanmtm4Gtaf\nZmYnxxuWiIjkQqaWwGkED3ile5Cgr19ERPJcpiTQ2t1/TF8ZrmsTX0giIpIrmZLA+hk+WzfbgYiI\nSO5lSgKvmtmF6SvN7Dzg1fhCEhGRXMn0sNgFwItmdgjwBlBAMClcEbBXDmITEZGY1doScPdFwA7A\nFKA90Ba4B9je3b/OTXgiIhKnjNNGuHsxcFeOYhERkRzTw2IiIgmmJCAikmBKAiIiCVbrmICZjSTD\ni2Hc/alYIhIRkZzJNDB8PkESaA/sAnwYru8PvAkoCYiI5LlMt4gOdfe9gfnAIHffwd13IHgb2Pzc\nhCciInGKMibQ393fqFxw9zcJWgMiIpLnoiSB5WY2pnLBzI4DlscXkoiI5EqUdwyfDEwzszvD5Q+B\nE+ILSUREcqXOJODuHwM7mVnncHmt6aVFRCQ/1ZkEzKwVMBbo6+4XmllvoLu7vxZ3cCIiEq8oYwI3\nAvsCh4XLPwGTYotIRERyJkoS2Bs4DigGcPclQLs4gxIRkdyIkgRWunt55ULYPVQQX0giIpIrUZLA\nh2Z2PNAqHA+4HXg51qhERCQnoiSB3wBDgW4E00UUErx1TERE8lzGu4PMrBA4z91PzVE8IiKSQxlb\nAu5eBhyYo1hERCTHojwx/E8zOx+YSnB7KFD16kkREcljUZLA5eH/J6SsqyAYGxARkTwWZdoIvX1M\nRKSFijJtRIea1qs7SEQk/0XpDvqphnXqDhIRaQHq1R1kZu2BY4EN4wxKRERyo179/e6+0t3vAY6O\nKR4REcmh+o4JtAIGAuvFFpGIiORMfccEyoA5wFnxhCMiIrmkW0RFRBIsSnfQVsACd19hZsOB7YE7\n3H1p7NGJiEisolzlPwSUmtnmwJ+BLQimkBARkTwXJQmUu3sJMBK43d3HAZvGG5aIiORClIHhdma2\nMXAwcEm4LtI4Qdh9dBPBg2V3ufuEGsoMBSYCbYAl7j40yr5FRKTxopzMbwIcWO7ub5nZlsAPdW0U\nvovgVmA40A8YbWbbpJVZH7gNONjdtwWOrGf8IiLSCFHuDpoMTE5ZNR8YFmHfA4E57j4fwMweAA4F\nPkkpcyzwiLsvDI+1JFLUIiKSFVG6gzAzA7YD2qesvreOzXoAC1KWFwK7ppXpC7QxsxlAJ2CSu0+L\nEpOIiDRelFtEzwbGAd0J3jE8BHiRupNARYTjtwF2BPYFOgAzzex1d/8swrYiItJIUVoC4wiu4F9x\n9wPMbFvWvGgmky+BXinLvQhaA6kWEAwGrwBWmNlLBC2OWpNAly4daN1aE5g2VFFRp6YOoUVT/cZL\n9Zt9UZLASnf/ycxamVkrd/8ofICsLm8Dfc2sN/AVMAoYnVbmceDWcBC5HUGyuTHTTpcu1WsMGqqo\nqBOLFy9r6jBaLNVvvFS/jVNbAo1yd9ByM2sLfAD80czOirKdu5cCZwLPAh8DD7r7J2Z2upmdHpb5\nFHgm3PcbwJ3u/nGEmEREJAsKKioyd92bWX9gHtARuJpgBtEr3f29+MNb2+LFy6KMNUgNdCUVL9Vv\nvFS/jVNU1KmgpvVRbhH9MPzxJ+CUbAYlIiJNq85uHTPbysxeMbP54fKOZnZFzHGJiEgORBkTuB24\nijVPCb+P3iwmItIiREkC67n704T3/bt7GbA61qhERCQnoiSB0vDuIADMrAfBG8ZERCTPRe0OehTY\n0MzGA68AN8QalYiI5ESUu4Ommtlcgqmk1wFOcPeXY49MRERiF2kCufCkrxO/iEgLE2UCua2Bi4E+\nKeUr3H1gnIGJiEj8orQEHiKYMfQvrBkQ1lO7IiItQJQkUOru18UeiYiI5FyUu4OeM7MRsUciIiI5\nF6UlMB143MzKgFXhugp33yi+sEREJBeiJIHJwInALPSQmIhIixIlCSxx94djj0RERHIuShJ4zMzO\nAB4EVlaudHe94ktEJM9FSQJXhv+/LWVdBaAX/YqI5Lko00ZEuYMoZ2a8u5DBA7rRpoEvmy8pLeOV\nD74GaNR+RERagkjTRjQn06bP5s1PvuWcUdutdQKv6wRfUlrGjQ++jy8IXo1Q036UJEQkSep8x3Bz\nc+S9v6kAWLd9G9q3W5PDKioq+HH5akrKygFoU9iKzh3bUlCw5rWaK1eV8tPKkmr7S91PlH1EVVFR\nwarVwc1U7doWNmgf2VbYqoCy8vz6984nqt94qX4b58+HXl3jSahZdfU0xqrVZVUnb4CSsvKqk3C2\n91FRUcHKVaWsXFVKTUm0Mpn8tLKEn1aW8OPy1TWWExFpannXHbTq/aFYr/XX6saZ8e5Cpr0xu1rZ\no/ffir137Fm1nN4dlL6f+uzjq1r2UbWfl9fsZxVweNp+ospm91RRUScWL17W4O0lM9VvvFS/8ci7\nJDBm/61qPBkOHtCNNz/5ttoJfvCAbtXKtGldyDmjtqv1pBplH6988HXV5wC+4Ade+eDrWE7wUcYw\nREQaI++SQG0n27pO8KnlGruPukRJJlFO8FESjgayRaQx8i4JZJLpBJ+tfWSjxQHZaVFEbSlUJop1\nO7Vn+8271JgolExEkqlFJYFcyEaLI6q6Ek7UlkKmcZCayqjbSSQ5lAQaIBcn+MrjNLZ7KkqiyOU4\nh4g0L0oCTSQbLYooiSSX1KIQyT9KAk2osS2KKIkkSqLIVjLJZotCRHJDSSDP1ZVIUhNFbQPD2bor\nKpfU7SSSHUoCCVCZKDI9bJOrcY5sULeTSPYoCUhkdV1956pFoW4nkexREpBIol59Z6NFISK502Im\nkJN41Xb13RQGD+iG9Vq/armp74oSyWdqCUhORRnQbS7dTiJJoCQgkWRj0DfqS33U7SSSO0oCEkk+\nPr0chW41laRTEpDIWtrVt241FdHAsORQlAHdbA76lpSWMePdhcx4dyElpWu/Ia45DXaLNBW1BCRn\nonQpZWvQN5tX+eoykpZMSUByKkqXUja6naKMLWTr5T8i+SzWJGBmw4GbgELgLnefUEu5XYCZwNHu\n/micMYlUytXLf0Sas9jGBMysELgVGA70A0ab2Ta1lJsAPAMUxBWPJEvUsYXKVsfeO/bU1b0kUpwt\ngYHAHHefD2BmDwCHAp+klfsV8DCwS4yxSMLk+n3Rdb2+U6S5ijMJ9AAWpCwvBHZNLWBmPQgSwz4E\nSaAixngkYbL1zulMySTK6zsryzX2SWmROMSZBKKc0G8CfuvuFWZWQITuoC5dOtBafxwNVlTUqalD\nyEtHd1u/xvVPvTZvrTGD9+YtZcQem1etW11SxuV3zuSj/3wHwKz/fMf403anbZvCepURfX/jEGcS\n+BLolbKqacSeAAAHoklEQVTci6A1kGon4AEzA9gQONDMStz9idp2unRpcbbjTIxM7xOQhvlp2coa\n16XW84x3F1ad3AE++s93PPbC7GqtlChlkk7f38apLYHGmQTeBvqaWW/gK2AUMDq1gLtvUfmzmU0B\n/pEpAYg0N7l+z7O6jCTbYksC7l5qZmcCzxLcInq3u39iZqeHn98R17FFciXK6zuz9Z5nPbMgcSio\nqMivsdjFi5flV8DNiJrT8cpUv9kYGJ7x7kKmTZ9dbd2Y/bdKTJeRvr+NU1TUqcYxVz0xLJIDuXpS\nWqS+NIGcSJ7QG9UkDmoJiOSJbE6up8FlqaQkIJJHGttlpMFlSafuIJEEifoOhbrexRC1jDR/agmI\nSDXZfBe0NH9qCYgkSJTB5SitBb2VreVQS0Ckhck08JutwWVpOZQERFqQKN00dQ0uZ+sJ52zRVN3x\n0hPDCaInLuPVHOo3W08VN5epr6NO1S110xPDIhJZc3nCWa/3jJ8GhkVaED1VLPWlloBIC9LSBn5z\nPVV3EmlMIEGaQ591S6b6XVs2xg2yNTDcXMY5morGBEQkp7L1QFnl2ENjkqwegKudxgREJBbN6YEy\nPQBXO7UERKRJteQumHygloCIxCLKnUqVXTDTps9m2vTZ3Pjg+7FMRhcllqTeWaWB4QTRwGW8VL9r\ny+YrMxtbvxoY1sCwiORYrl6ZGeXkna0H4JpToshGLEoCItJksvEcQC7v6mlOdxBlKxaNCYhIk6l8\nuG3M/lsxZv+tGnQSy+VdPc3pDqJsxaIkICJNqrILZu8de7aoPvjmovINcAef+/jpNX2uJCAieS2X\nd/Xk8lh1vb6zvndfAX+u6TgaExCRvJbL+ZJydayo74WoK5b0LqOaKAmISN7L1V1IuTpW1Cm0sxGL\nuoNERLKsrq6cuj7PlvQuo5qoJSAikkV1deVE6erJ1hTaqV1G06bP/nlNZfTEcILoidZ4qX7jlS/1\nW9dT0FGfks72Q2l6YlhEJI/kapxDYwIiIllU162bzW2iOnUHJUi+NKfzleo3XvlUv3V15TTF/EPq\nDhIRyZG6unJyeUtrXdQdJCKSYEoCIiIJpiQgIpJgSgIiIgmmJCAikmBKAiIiCaYkICKSYLE/J2Bm\nw4GbgELgLnefkPb5ccAFQAGwDDjD3T+IOy4REYm5JWBmhcCtwHCgHzDazLZJKzYX2NPdBwB/ACbH\nGZOIiKwRd0tgIDDH3ecDmNkDwKHAJ5UF3H1mSvk3gObxGJ2ISALEPSbQA1iQsrwwXFebU4CnYo1I\nRESqxN0SiDzZm5ntDYwFBsUXjoiIpIo7CXwJ9EpZ7kXQGqjGzAYAdwLD3X1pph3WNhOeRFNU1Kmp\nQ2jRVL/xUv1mX9xJ4G2gr5n1Br4CRgGjUwuY2abAo8Dx7j4n5nhERCRF7O8TMLMDWXOL6N3ufo2Z\nnQ7g7neY2V3A4cAX4SYl7j4w1qBERATIw5fKiIhI9uiJYRGRBFMSEBFJMCUBEZEE0zuGW6AI8zUN\nBR4nmLID4BF3vzKnQeYpM7sHGAl86+79aylzM3AgUAyc5O6zchhiXqurfvXdzT4lgRYmZb6mYQTP\nabxlZk+4+ydpRV9090NyHmD+mwLcAtxb04dmNgLo4+59zWxX4HZgtxzGl+8y1m9I390sUndQy1M1\nX5O7lwCV8zWl00N3DeDuLwOZHmg8BJgaln0DWN/MNs5FbC1BhPoFfXezSi2Blqem+Zp2TStTAexh\nZu8TtBbOc/ePcxRfS1dT/fcEvmmacFocfXezTC2BlifKgx/vAr3cfTuCpvdj8YaUOOlXqnoYJ3v0\n3c0yJYGWp875mtx9mbsXhz8/DbQxs665C7FFS6//nuE6yQJ9d7NPSaDlqZqvyczaEszX9ERqATPb\n2MwKwp8HAgXu/n3uQ22RngBOADCz3YAf3F1dQVmi7272aUyghXH3UjM7E3iWNfM1fZI6XxNwJHCG\nmZUS3MZ4TJMFnGfM7H5gL2BDM1sAXA60gaBu3f0pMxthZnOA5cDJTRdt/qmrftF3N+s0d5CISIKp\nO0hEJMGUBEREEkxJQEQkwZQEREQSTElARCTBlARERBJMzwmI1MHMjgJ+RzAdRHvgHXc/3szmA8uA\nAe5eEZadD4xw94/N7C/AvsCScLsn3P3CXMcvkolaAiIZmFk34DbgYHffwd23Aa5LKdIRGJOyXJH2\n8zXuvgOwC3CEmR0cd8wi9aEkIJLZJkAJUDU1gbu/H/5YAYwHLjez2lrVBeE2PwHvAFvHF6pI/SkJ\niGT2HvAm8IWZPWRmZ6dNWPY2wcn9F5l2YmYbAXuE+xNpNjRthEgEZvY/BHPaHAb0A/oTTGs8EigF\nZgBbAR8BI9PGBJYCBkx291/lPnqR2qklIBKBu//b3f/k7vsD/wWGpnw2G3gKODdts8oxgQEESeMI\nM6vxvcQiTUVJQCQDM+tuZrunLPcEioB5aUWvAH4JdEpbXzkmMBu4CpgYW7AiDaAkIJJZa+AKM/vU\nzGYB/wQudvdqffvu/iXBy9G7pG2f2t96B9DTzIbHGbBIfWhMQEQkwdQSEBFJMCUBEZEEUxIQEUkw\nJQERkQRTEhARSTAlARGRBFMSEBFJMCUBEZEE+38hXmfvxnHgPQAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x7f73ae7ede90>"
]
}
],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"true_C = 2\n",
"snr = np.arange(0.05, 2, 0.05)\n",
"C = [find_c(x, 1000, true_C) for x in snr]\n",
"plt.scatter(snr, C, label=\"Measured C\", color=sns.color_palette()[0])\n",
"plt.xlabel(\"SNR\")\n",
"plt.ylabel(\"measured C\")\n",
"plt.hlines(true_C, snr[0], snr[-1], label=\"True C\", color=sns.color_palette()[1])\n",
"plt.hlines(1, snr[0], snr[-1], label=u\"Na\u00efve C\",\n",
" color=sns.color_palette()[2])\n",
"plt.legend()\n",
"plt.xlim(snr[0], snr[-1])\n",
"plt.title(\"C > 1, (coefficient fit to smaller signal)\");"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nBQCA+fOXFL6yCVFR0Z65c/NN/pSG0PmNl85vw1RUZM8AEudksb0Jnv9938xqcoFcTjgT0N1HEExR\nPzecKLWE1fONiIhIzIoyMFxIc+cubF4VbkJ0JxUvnd946fw2TEVF+6zdQZoxLCKSYAoCIiIJpiAg\nIpJgCgIiIgmmICAikmAKAiLSYu2zz+78/vdX1n6urKzkiCP6c+mlv2zEWtXtoIP2ybr822+/4aqr\nfs2JJx7DmWcO5JJLLmDGjC8adCy9VEZEWqw2bdZl2rSpLF++nHXWWYd33nmbiopNKGmEtJVVVVWU\nlUXNdrBmBVOpFJdffgmHH34k11xzAwBTpnzKvHnz6No180Vs0SkIiEiTkEql+L+PvmbBouXsahVs\nsmHbguy3T5+9eeut1+nX70BefvkF+vc/hEmTgjdHLl26lGHD/si0aVOpqqpk8OAh9O27H1999SXX\nXnsVS5cuBeCiiy5l++135JtvgjvxJUsWU1VVxcUX/5odd9yZgw7ah5deeg2AsWNf5q233uDyy6/i\nuuuupry8nE8//YQdd9yZY489nltv/SMLFsynTZs2XHbZFXTr1p0vv5zFNdf8hmXLlrL33vtm/R4T\nJrxL69atOfro42qX9ejRs8HnR0FARJqE0c/9j9fe/4oUMHbiLM4/dge22Cx7qoP6OPDAg7n//nvY\na699mDp1CkcccXRtEHjwwVHstltvLr/8KhYuXMiQIWew22570LFjR4YNG055eTkzZnzBNdf8hnvv\nfZCXXnqePfbYk9NPH0x1dTXLli0Lj7Lqzr0ko5nxzTdzGTHifkpKSrjggnO55JLL6dKlKx999CG3\n3HIjt99+N7fffjPHHXcChxxyOH//+xNZv8fUqZ9htnWDz0cmBQERaXSLlq7kHZ9T+47Hb75bxn/e\nm8UZhzb8orfllj2YPfsrXn75Bfbcs+9q68aP/z/eeONVHn30IQBWrlzJnDmz6dhxY4YNu5EpUz6l\ntLSUmTNnALDttttxww2/o7Kykn326UfPnlvlPXZJSQn779+fkpISlixZwocfvs+VV656dfjKlZUA\nfPjh+1x//c0AHHLIYdx9951Z9rX25yAfBQERaXQlJWveQRdS3777Mnz4bdx550gWLJi/2rrrrrtp\njT71++4bwUYbbcyVV/6eqqoqDjhgLwB22mkXhg+/hzfffJ3rr7+aE088lUMPHbBa3ZcvX77avtq0\n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\nQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x7f73ae509150>"
]
}
],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Conclusion\n",
"----------\n",
"It seems that optimizing $C$ only provides a better solution than the na\u00efve assumption of equal noise ($C=1$) when coefficient is fit to channel with greater noise, unless the SNR is very low.\n",
"\n",
"In general, the advantage of common mode rejection by finding the optimal coefficient $C$ is only superior to the na\u00efve difference of the channels if the common noise is large relative to the independent signals, and the coefficent should be fit to the noiser of the two channels."
]
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment