{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Smoothing a noisy time series\n", "\n", "* using a low-pass filter" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "def lpfilter(input_signal, win):\n", " # Low-pass linear Filter\n", " # (2*win)+1 is the size of the window that determines the values that influence \n", " # the filtered result, centred over the current measurement\n", " from scipy import ndimage\n", " kernel = np.lib.pad(np.linspace(1,3,win), (0,win-1), 'reflect') \n", " kernel = np.divide(kernel,np.sum(kernel)) # normalise\n", " output_signal = ndimage.convolve(input_signal, kernel) \n", " return output_signal" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "((100,), (100,))\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from pylab import plt\n", "import numpy as np\n", "\n", "### make up some data\n", "t=np.linspace(-4,4,100)\n", "x=np.sin(t)\n", "unsmoothed = x+np.random.rand(len(t))*0.4\n", "\n", "### smooth data using def\n", "smoothed = lpfilter(unsmoothed,5)\n", "print(unsmoothed.shape, smoothed.shape)\n", "\n", "### plot data\n", "plt.subplot(111)\n", "plt.plot(unsmoothed, 'k', alpha=0.5)\n", "plt.plot(smoothed, 'r')\n", "plt.show()\n" ] } ], "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.8" } }, "nbformat": 4, "nbformat_minor": 2 }