{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Solving the RC-Lowpass using Fourier-Transforms and the full differential Equation.\n", "\n", "## Circuit\n", "\n", "For the RC-Lowpass we have a Resistor $R$ in series with a Capacitor $C$. The input Voltage $x(t)$ is across both $R$ and $C$, the output voltage $y(t)$ is the voltage across the capacitor. \n", "In order to establish the differential equation for the system we need to specify the relations between voltages over the components and currents through the components. \n", "1. Resistor\n", "$v_R (t) = R \\cdot i(t)$\n", "2. Capacitor\n", "$i(t) = C \\frac{d}{dt}v_c (t)$\n", "3. and\n", "x(t) = v_c (t) + v_r (t)\n", "$y(t) = v_C (t)$\n", "\n", "Elimination of $i(t)$ yields the Differential Equation: \n", "$x(t) = RC \\frac{d y(t)}{dt}+ y(t)$\n", "\n", "Now we will solve this using the fourier transform, and especially the differentiation rule for the fourier transform (where FT means fourier transform and IFT means inverse fourier transform): \n", "\n", "If $x(t) = \\frac{1}{2 \\pi} \\int_{-\\infty}^{\\infty} \\! X(j \\omega) \\mathrm{e}^{\\ j \\omega t} \\, \\mathrm{d}\\omega$\n", "\n", "when we differentiate with respect to t we get: \n", "\n", "$\\frac{d x(t)}{dt}= \\frac{d}{dt}\\frac{1}{2 \\pi} \\int_{-\\infty}^{\\infty} \\! X(j \\omega) \\mathrm{e}^{\\ j \\omega t} \\, \\mathrm{d}\\omega$\n", "\n", "$\\frac{d x(t)}{dt}= \\frac{d}{dt}\\frac{1}{2 \\pi} \\int_{-\\infty}^{\\infty} \\! X(j \\omega) \\frac{d}{dt} \\mathrm{e}^{\\ j \\omega t} \\, \\mathrm{d}\\omega$\n", "\n", "$\\frac{d x(t)}{dt}= \\frac{d}{dt}\\frac{1}{2 \\pi} \\int_{-\\infty}^{\\infty} \\! \\big[ (j \\omega) X(j \\omega) \\mathrm{e}^{\\ j \\omega t} \\big] \\, \\mathrm{d}\\omega = IFT \\big[ j \\omega X(j\\omega) \\big]$\n", "\n", "And consequently\n", "\n", "$FT \\big[ \\frac{d}{dt} x(t) \\big] = j \\omega X(j\\omega)$. \n", "\n", "This we can now use in our differential equation. \n", "$x(t) = RC \\frac{d y(t)}{dt}+ y(t)$ will now transform to (using FT)\n", "\n", "$X(j \\omega) = RC j\\omega Y(j \\omega) + Y(j \\omega)$ using the differential rule from above. \n", "\n", "$X(j \\omega) = (1+ j\\omega RC) Y(j \\omega) $\n", "\n", "$Y(j \\omega) = \\frac{1}{1+ j\\omega RC} X(j \\omega)$\n", "\n", "Now we recall that the inverse fourier transform of a fraction with a linear function of $j \\omega$ in the denominator has is known. \n", "\n", "$IFT \\big[ \\frac{1}{a + j\\omega} \\big] = \\mathrm{e}^{-at} \\epsilon(t) $ where $\\epsilon(t)$ is the step function. \n", "\n", "We reorganize our FT by expanding with $1/RC$ to get\n", "\n", "$Y(j \\omega) = \\frac{1/RC}{1/RC+ j\\omega} X(j \\omega) = \\frac{1}{RC} \\frac{1}{1/RC+ j\\omega} X(j \\omega) $\n", "\n", "Now we can identify $a = 1/RC$ and solve the inverse FT: \n", "\n", "$y(t) = \\frac{1}{RC} \\big[\\mathrm{e}^{-\\frac{t}{RC}} \\epsilon (t) \\big] \\ast x(t)$\n", "\n", "Up to here we have already achieved several things. first, in the frequency domain we can identify the function relating $X(j\\omega)$ and $Y(j\\omega$ as $H(\\omega)$, the transfer function. By doing the IFT as just shown, we now have also calculated the impulse response $h(t)$ as the IFT of $H(\\omega)$. Now we actually need to define an input and convolute it with the impulse response to get our output to that input. We do this for the example of a complex exponential input, i.e. a sine/cosine type input function. \n", "\n", "$x(t) = v_0 \\mathrm{e}^{\\ j\\omega_0 t}$\n", "\n", "We then have\n", "\n", "$y(t) = \\frac{1}{RC} \\big[\\mathrm{e}^{\\ -\\frac{t}{RC}} \\epsilon (t) \\big] \\ast v_0 \\mathrm{e}^{\\ j \\omega t}$\n", "\n", "$y(t) = \\frac{v_0}{RC} \\int_{-\\infty}^{\\infty} \\mathrm{e}^{\\ -\\frac{\\tau}{RC}} \\epsilon (\\tau) \\mathrm{e}^{\\ j \\omega (t-\\tau)} \\ \\mathrm{d}\\tau$\n", "\n", "$y(t) = \\frac{v_0}{RC} \\mathrm{e}^{\\ j \\omega t} \\int_{-\\infty}^{\\infty} \\mathrm{e}^{\\ -\\frac{\\tau}{RC}} \\epsilon (\\tau) \\mathrm{e}^{\\ j \\omega (-\\tau)} \\ \\mathrm{d}\\tau$\n", "\n", "$y(t) = \\frac{v_0}{RC} \\mathrm{e}^{\\ j \\omega t} \\int_{0}^{\\infty} \\mathrm{e}^{\\ -\\frac{\\tau}{RC}} \\mathrm{e}^{\\ j \\omega (-\\tau)} \\ \\mathrm{d}\\tau$\n", "\n", "$y(t) = \\frac{v_0}{RC} \\mathrm{e}^{\\ j \\omega t} \\int_{0}^{\\infty} \\mathrm{e}^{\\ - \\tau (j \\omega + \\frac{\\tau}{RC})} \\ \\mathrm{d}\\tau$\n", "\n", "$y(t) = \\frac{v_0}{RC} \\frac{1}{-j \\omega - 1/RC} \\mathrm{e}^{\\ j \\omega t} \\big[ \\mathrm{e}^{\\ - \\tau (j \\omega + \\frac{\\tau}{RC})} \\big]_0^{\\infty}$\n", "\n", "Here for $\\tau = \\infty$ the exponential has a limit of zero due to the $-\\tau/RC$ part and for $\\tau = 0$ the exponential assumes a value of 1, giving $-1$ due to the fact that we subtract the value at 0 from the rest. So we get overall: +\n", "\n", "$y(t) = \\frac{v_0}{RC} \\frac{1}{-j \\omega - 1/RC} \\mathrm{e}^{\\ j \\omega t} \\big[-1 \\big]$\n", "\n", "$y(t) = \\frac{v_0}{RC} \\frac{1}{j \\omega + 1/RC} \\mathrm{e}^{\\ j \\omega t} $\n", "\n", "$y(t) = v_0 \\frac{1}{j \\omega RC + 1} \\mathrm{e}^{\\ j \\omega t} $ q.e.d." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "import matplotlib\n", "import matplotlib.pyplot as plt\n", "\n", "import numpy as np\n", "import pandas as pd\n", "import scipy\n", "from scipy.signal import butter, lfilter, freqz\n", "\n", "%matplotlib inline \n", "matplotlib.rcParams['figure.figsize'] = (16.0,9.0)" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA6UAAAIaCAYAAADYyutSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xd0VVXChvHn0EV6FUWKSu9FpCiEQQWxY8WOvY8N0NFRwM8CY3dURkfEsSHIiI4iKGoAQbpUAUWRYmMUcERFSs73xwaCihIgyUlunt9aZ4Xce7h5417O8p29z95RHMdIkiRJkpSEQkkHkCRJkiQVXJZSSZIkSVJiLKWSJEmSpMRYSiVJkiRJibGUSpIkSZISYymVJEmSJCXGUipJkiRJSoylVJIkSZKUGEupJEmSJCkxllJJkiRJUmKKJPWDy5UrFx900EFJ/XjloB9++IG999476RjKAY5t6nJsU5djm7oc29Tl2Kaugja2M2fO/CaO48o7uy+xUlq1alVmzJiR1I9XDkpPTyctLS3pGMoBjm3qcmxTl2Obuhzb1OXYpq6CNrZRFC3Lyn0u35UkSZIkJcZSKkmSJElKjKVUkiRJkpSYxJ4plSRJklRwbNy4kZUrV7J+/fqkoySmbNmyLFy4MOkY2a5EiRJUr16dokWL7tbft5RKkiRJynErV66kdOnS1KpViyiKko6TiO+//57SpUsnHSNbxXHMt99+y8qVK6ldu/ZufYbLdyVJkiTluPXr11OxYsUCW0hTVRRFVKxYcY9mwC2lkiRJknKFhTQ17em4WkolSZIkpby1a9fy6KOP5srP6tmzJ02bNuX+++9P9DN+LT09ncmTJ2/7fvDgwfzrX//Kts/fXT5TKkmSJCnlbS2ll19++W/e27x5M4ULF86Wn/PVV18xefJkli1bluW/s2nTJooUyaxmu/MZWZGenk6pUqVo3749AJdeemm2fv7ucqZUkiRJUsq78cYb+eSTT2jevDm9e/cmPT2dzp07c8YZZ9CkSRMATjjhBFq1akWjRo14/PHHt/3dUqVKcfPNN9OsWTPatm3L119/DcCIESNo3LgxzZo1o2PHjgAceeSRrFq1iubNmzNx4kQ++eQTunXrRqtWrejatSuLFi0C4LzzzuO6666jc+fO9O3b9xdZf/0ZaWlpzJgxA4BvvvmGWrVqATB06FB69OhBt27dqFOnDn369Nn2GWPGjKFly5Y0a9aMLl268NlnnzF48GDuv//+bZ/br18/7rnnHgBmz55N27Ztadq0KSeeeCJr1qwBIC0tjb59+9KmTRvq1q3LxIkTs3tonCmVJEmSlLuuuQZmz87ez2zeHB544Pffv/vuu5k/fz6zt/zg9PR0pk2bxvz587ftGjtkyBAqVKjATz/9xMEHH8xJJ51ExYoV+eGHH2jbti133HEHffr04YknnuCWW25hwIABjB07lv3224+1a9cC8Oqrr3LMMcds+zldunRh8ODB1KlTh3feeYfLL7+cd955B4CPPvqIcePG/WaW9tef8Udmz57NBx98QPHixalXrx5XXXUVJUqU4KKLLmLChAnUrl2b1atXU6FCBS699FJKlSrFDTfcAMDbb7+97XPOOeccHn74YTp16sStt95K//79eWDLP9BNmzYxbdo0Ro8eTf/+/Rk3blxWhiTLLKWSJEmSCqQ2bdr84hiThx56iJdffhmAFStW8PHHH1OxYkWKFSvGMcccA0CrVq146623AOjQoQPnnXcep556Kj169PjN569bt47JkydzyimnAJCRkcHGjRu3vX/KKafs8bLhLl26ULZsWQAaNmzIsmXLWLNmDR07dtz2u1WoUOEPP+O7775j7dq1dOrUCYBzzz13W2Zg2+/WqlUrPvvssz3KuyOWUkmSJEm56o9mNHPT3nvvve3P6enpjBs3jvfff5+SJUuSlpa27ZiTokWLbtthtnDhwmzatAkIGwVNnTqV119/nebNm/9mZjMjI4Ny5cpte/3X55Ru//P/SJEiRcjIyAD4zdErxYsX3/bnrdniOM7WnY63/oztf/fs5DOlkiRJklJe6dKl+f7773/3/e+++47y5ctTsmRJFi1axJQpU3b6mZ988gmHHHIIAwYMoFKlSqxYseIX75cpU4batWszYsQIAOI4Zs6cObucvVatWsycOROAl156aaf3t2vXjvHjx7N06VIAVq9eDfz+P4OyZctSvnz5bc+LPvPMM9tmTXODpVSSJElSyqtYsSIdOnSgcePG9O7d+zfvd+vWjU2bNtG0aVP++te/0rZt251+Zu/evWnSpAmNGzemY8eONGvW7Df3PPfcczz55JM0a9aMNm3a8Morr+xy9htuuIHHHnuM9u3b88033+z0/sqV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kqRUZymVtE2xYuE80wkTICMDDjsMbr4ZNmxIOpkkSZJSlaVU0m8ceijMmQPnnhtKart2sHBh0qkkSZKUiiylknaoTJmwjHfkSFi2DFq2hJde2o+MjKSTSZIkKZVYSiX9oR49YP586NIFHnmkDn/6EyxdmnQqSZIkpQpLqaSd2mcf+M9/oHfvRcyaBU2awODBEMdJJ5MkSVJ+ZymVlCVRBN27f8X8+eEZ08sug65dYcWKpJNJkiQpP7OUStolNWrAm2/Co4+GI2MaN4annnLWVJIkSbvHUippl0VRmCmdOzecZ3r++XDccfDll0knkyRJUn5jKZW02w44AN59Fx54AMaNg0aN4PnnnTWVJElS1llKJe2RQoXgz38O55rWqwdnngknnwyrViWdTJIkSfmBpVRStqhbF957DwYOhNdeC7OmI0YknUqSJEl5naVUUrYpXBj69IFZs6BmTTj1VDjpJPjqq6STSZIkKa+ylErKdo0awZQpcPfd8Prr0LAhPP20z5pKkiTptyylknJEkSLQt2941rRhQzjvPOjeHZYvTzqZJEmS8hJLqaQcVa8eTJgADz0EEyeGWdTHHoOMjKSTSZIkKS+wlErKcYUKwVVXwfz50LYtXH45dO4MH3+cdDJJkiQlzVIqKdfUqgVvvgn//GdY1tu0KdxzD2zenHQySZIkJcVSKilXRRFccAF8+CEceST07g3t2oVZVEmSJBU8llJJidh3Xxg1Cl54AZYuhZYtoV8/+PnnpJNJkiQpN1lKJSUmiuD008Os6SmnQP/+0Lx52BhJkiRJBYOlVFLiKleG556DN96A9euhUye46CJYsybpZJIkScppllJJeUa3buHZ0t694amnoH59GDYM4jjpZJIkScopllJJecree8OgQTBjBtSoAT17wtFHw2efJZ1MkiRJOcFSKilPat4cpkyBBx+EiROhUaNwfMymTUknkyRJUnaylErKswoXhquvDhshHX54WNbbpk2YRZUkSVJqsJRKyvP23z8cHzNyJHz1FRxyCFx7LXz/fdLJJEmStKcspZLyhSiCHj1g4UK49NKwrLdBAxgxwo2QJEmS8jNLqaR8pWxZeOQRmDw5HCVz6qlh196PP046mSRJknaHpVRSvtS2LUyfDg89FDZEatwYbrsNfvop6WSSJEnaFZZSSflWkSJw1VWwaBGcfDIMGBDK6ejR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ab5nnkl27JgNqzOB9XOfS775zbltTzxxNqDOPM7sr1njGtbDkVAKAAB0tWJFcs45wzbfU08NI6w7diRf+9qw7diR/M3fDEvajE8JXrlyblgdD63r1w8juRx6hFIAAOCQtWrV7gPr888n998/G1RnQuuddw6jrOM3XTr66GFa8UIjrJs3D3cRpg+hFAAAOCwtWzZ7s6T5XnopefjhXUdYv/a15K//Ovnud2fbViWnnTaE09NPn70udub4tNOsxXogCaUAAMDUOeqoYcru+vXJhRfOPdda8q1vzQ2r9903bDfemFxxxdBmxrJlycaNCwfWzZuTl7/ctaz7QygFAACOKFXJyScP2+tfv+v5554blraZCar33ju7f8stybe/Pbf96tW7H2XdtClZvvygfKzDllAKAAAw5phjZpekWciTT86G1PHQun178vnPJ9/73tz2p5wyhNSVK8/K9dcP+xs3Dtv69a5nFUoBAAD2wurVyWteM2zztTYsY7PQKOsddxyXG26Ye8fgqmFd1pmQumnT7P7MtnLlQftoXQilAAAAE1I1jIyeckryhjfMPXfTTV/M+edfkJ07kwceGO4c/MADs/t///fJZz6TfP/7c7/upJN2H1o3bUqOP/7gfLYDRSgFAAA4SGaWptm8eeHzL76YPPLIbFgdD6933plcc03y7LNzv2b16t0H1o0bh2tnD+UbMQmlAAAAh4glS5J164bt/PN3Pd9a8thju460zhz/xV8M17yOW7482bBh2Nav3/Vx/fpkxYqD8ekWJpQCAAAcJqqSNWuG7Ud/dOE2jz++cGB96KHkjjuSb3xj16858cQfHFpPOy1ZeoDSo1AKAAAwRY4/Pnnta4dtIc89lzz88BBSH3xw7uN99w2jrU88MfdrjjpqCKa7C64bNgzBdl+mCQulAAAAR5BjjhnWUD399N23efLJIaSOB9aZ/VtvTf7sz4ZwO2758tmR1Q0bFl+PUAoAAMAcq1cnr3rVsC1k5trW+YF15vHaaxf/XkIpAAAAe2X82tZzz919m8U4anJlAQAAwN4RSgEAAOhGKAUAAKAboRQAAIBuhFIAAAC6EUoBAADoRigFAACgG6EUAACAboRSAAAAuhFKAQAA6EYoBQAAoJtFhdKquqiqtlfVjqr64ALn/21V3VlVX66q66tq4+RLBQAAYNrsMZRW1ZIkH03yjiRn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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cutoff = 3.667 # desired cutoff frequency of the filter, Hz\n", "\n", "Fn = 1000\n", "RC = 1/(2*np.pi*cutoff)\n", "\n", "t = np.arange(0, 15, 1/Fn)\n", "\n", "x = lambda t: (1/(np.sqrt(1+(t*RC*2*np.pi)**2)).astype(float))\n", "\n", "plt.plot(t, x(t), 'b-', label='transfer function')\n", "plt.xlabel('Freq [Hz]')\n", "plt.grid()\n", "plt.legend()\n", "plt.xlim(0, 0.5*fs)\n", "plt.ylim(0, 1.1)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "image/png": "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t912m0aOHKkxY8bozDPPlOTfn+9b3/qWJkyYoHHjxumxxx5rd61btmzRySefrDFjxmjy5Ml64403JEnXXHONbrrppsbzRo8erQ0bNmjDhg0aMWKELr74Yo0fP14bN27U4MGDtXnzZknSn/70J02cOFHFxcW66KKLVFdXJ8nvCl511VWaNGmSXn755aTH9LzzztP3vvc9HXXUUfrRj37U6rk333yzRo8erdGjR+vWW2+VJH3nO9/RunXrdOKJJ+qWW25J+NqG7tv7778vSbrxxhv1k5/8RMOHD5ckhcNhXXzxxe2ue9q0afrxj3+sI488Ur/5zW/06aef6tRTT9WECRM0YcIELV68WJJUVlamY489VuPGjdNFF12k/fbbT5s3b9aGDRs0evToxuvddNNNuuaaayRJa9eu1cyZM3XwwQfr8MMP1zvvvNM4Vv/1X/+lww47TPvvv/8Xuog33nijDjroII0dO1Zz5szRunXrNH78+Mbn16xZo4MPPrjVz3TooYc2jo8kLV++XEceeaQOPvhgzZgxQx9++KEktfhn9ZprrtE3v/lNTZ8+XUOHDtXvf/97SX6Q/8EPfqDRo0froIMO0ty5cyUl/ndJkubMmdN4/YZuZKLxzZSuG60BoIOu/ftKvfXBZ1863pHO0cgBPXX1CaPaff6//vUvrVy5UgMGDNCUKVO0ePFiHXPMMbrooosab2Y8d+5cnXHGGdq8ebN+/vOf65lnnlEsFtMNN9ygm2++WVdddZUkf2+iRYsWSZIGDBig9evXq6CgoHGq7/rrr9f06dN17733atu2bZo4caK+8pWvfOmGyWvXrlVxcbHq6+t1+OGH64477tDVV1+tcePG6dFHH9Vzzz2nc845p83u06pVq3Tffffpzjvv/MLxt99+W3PnztXixYuVn5+viy++WA8++KDOOeccVVRUaPTo0bruuuvaPYbNrV69Ws8880yrv4fLly/Xfffdp1deeUXOOU2aNElHHnmk7rrrLj355JN6/vnnVVhYmPD1W7du1Zo1a3TEEUdIkt588039z//8T7vqmzt3buPv02WXXabzzz9fkrRt2za98MILkqSvf/3ruvzyyzV16lS99957mjFjht5++21de+21mjp1qq666io9/vjjCbtrTV144YW66667NHToUL3yyiu6+OKL9dxzz0mSPvzwQy1atEjvvPOOTjzxRM2ePVsLFizQo48+qldeeUXRaFRbtmxRfn6+evXqpRUrVqi4uFj33XefzjvvvFbf98knn9TJJ58syd9f7z//8z/12GOPqW/fvpo7d65+8pOf6N5779WvfvWrL/1ZlaQ33nhDS5YsUUVFhcaNG6fjjz9eL7/8slasWKHXX39dmzdv1oQJExp/D1r6d2nkyJF65JFH9M4778jMGq9/2WWXtTi+mUL4AoAsmjhxogYOHChJKi4u1oYNGzR16lTNnDlTf//73zV79mw9/vjjuvHGG/XCCy/orbfe0pQpUyRJu3bt0qGHHtp4rTPOOKPx8ZgxY3T22Wfr5JNPbvwP4NNPP6358+c3dqp27typ9957TyNGjPhCTS1NOy5atEh//etfJUnTp09XWVmZtm/f3upn22+//TR58uQvHX/22We1fPlyTZgwQZJUVVWlfv36SZJCoZBOPfXUdo5ey0477bQ2w/OiRYt0yimnNAbPr33ta3rxxRc1bty4Vl/34osvasyYMVq1apXmzJmjvfbaK+n6Ek07Nv39e+aZZ/TWW281/vzZZ59px44dWrhwof72t79Jko4//njtsccerb5XeXm5XnrpJZ122mmNx6qrqxsfn3zyycrLy9PIkSP18ccfN773+eefr2g0Kknac889tWPHDl1wwQW67777dPPNN2vu3LlaunRpi+/5gx/8QD/84Q/1ySefaMmSJZL8IP7mm2/qmGOOkeT/D87ee+8tqeU/q5J00kknKRKJKBKJ6KijjtLSpUu1aNEinXXWWQqFQurfv7+OPPJIvfrqq+rZs2eL/y5NnjxZ3bp10wUXXKDjjz9es2bNanV8M7WXGeELQM5K1KHK5F/CBQUFjY9DoZBqa2sl+f8hvuOOO7TnnntqwoQJ6tGjh5xzOuaYY/TnP/+5xWs17WA9/vjjWrhwoebPn6+f/exnWrlypZxz+utf/6phw4YlXWfDFE5TZqZwOKz6+vrGY033RmreUWt6rXPPPVe//OUvv/Rct27dOrRerbX3bV5DKhrWfK1evVpTp07VKaecouLiYo0aNUrLly/X2LFjU7qu9MW66+vr9fLLLysSiXzpvJa2QUj0+1BfX6/evXsn7FI2/fPXMCbOuRbf49RTT9W1116r6dOn6+CDD1afPn1avOavf/1rfe1rX9Ntt92mc889V8uXL5dzTqNGjWpxKrmlP6stfU4za/X3raV/l8LhsJYuXapnn31WDz30kG6//XY999xzrY5vJrDmCwA6oWnTpum1117T73//+8aOyOTJk7V48WKVlpZKkiorK7V69eovvba+vl4bN27UUUcdpRtvvFHbtm1TeXm5ZsyYod/+9reN/wH717/+1e56jjjiCD344IOS/PU1hYWF6tmzpwYPHqzXXntNkvTaa69p/fr1bV7r6KOP1rx58/TJJ59I8teTvfvuu+2uJR2OOOIIPfroo6qsrFRFRYUeeeQRHX744e1+/YEHHqgrrrhCN9xwgyS/2/OLX/yi8fejvr5eN998c8r1HXvssV/ojjWEp6a/DwsWLNDWrVslSf3799cnn3yisrIyVVdX6x//+IckqWfPnhoyZIj+8pe/SPKD1euvv97me997772qrKyU5P/+SH4wnjFjhr773e82TpUmkpeXp8suu0z19fV66qmnNGzYMH366aeN4aumpkYrV65M+GdVkh577DHt3LlTZWVlKikpaZxinDt3rurq6vTpp59q4cKFmjhxYsI6ysvLtX37dh133HG69dZbG8cx0fhmCuELADqhUCikWbNmacGCBY1TJX379tX999+vs846q3Hhe8Pi6abq6ur0jW98QwcddJDGjRunyy+/XL1799aVV16pmpoajRkzRqNHj9aVV17Z7nquueYaLVu2TGPGjNGcOXP0wAMPSPK7IVu2bFFxcbF+97vf6cADD2zzWiNHjtTPf/5zHXvssRozZoyOOeaYxsXX6bZs2TJdcMEFXzo+fvx4nXfeeZo4caImTZqkCy64oM0px+a+853vaOHChVq/fr3GjBmjW2+9VWeddZZGjBih0aNHd+gz3XbbbY3jPXLkSN11112SpKuvvloLFy7U+PHj9fTTT2vfffeVJOXn5zd+UWHWrFmNC/8l6cEHH9Q999yjsWPHatSoUW1+0WLmzJk68cQTdcghh6i4uPgLX6g4++yzZWY69thj2/wMZqaf/vSnuvHGG+V5nubNm6cf/ehHGjt2rIqLi/XSSy8l/LMq+VPyxx9/vCZPnqwrr7xSAwYM0CmnnKIxY8Zo7Nixmj59um688cZWp3537NihWbNmacyYMTryyCMbv0SRaHwzxVJtve4Ohg0b5latWpXtMrKu4VsiuYwx8OXCOLz99ttfWuPUXC7dx641jIOvM4/D4MGD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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f = np.linspace(0, Fs, len(t), endpoint=False)\n", "X = np.fft.ifft(x(t))/Fs\n", "plt.subplot(122)\n", "plt.plot(f, abs(X), label='Inverse Fourier T r. of RC Frequency Response')\n", "plt.xlim((0, 2))\n", "plt.xlabel('$t$'); plt.ylabel('X(f)$'); plt.grid(True); plt.title('Time domain'); plt.legend(fontsize=10);\n", " \n", "plt.tight_layout()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }