{"nbformat_minor": 0, "worksheets": [{"cells": [{"source": ["Linear Signal Denoising\n", "=======================\n", "\n*Important:* Please read the [installation page](http://gpeyre.github.io/numerical-tours/installation_matlab/) for details about how to install the toolboxes.\n", "$\\newcommand{\\dotp}[2]{\\langle #1, #2 \\rangle}$\n", "$\\newcommand{\\enscond}[2]{\\lbrace #1, #2 \\rbrace}$\n", "$\\newcommand{\\pd}[2]{ \\frac{ \\partial #1}{\\partial #2} }$\n", "$\\newcommand{\\umin}[1]{\\underset{#1}{\\min}\\;}$\n", "$\\newcommand{\\umax}[1]{\\underset{#1}{\\max}\\;}$\n", "$\\newcommand{\\umin}[1]{\\underset{#1}{\\min}\\;}$\n", "$\\newcommand{\\uargmin}[1]{\\underset{#1}{argmin}\\;}$\n", "$\\newcommand{\\norm}[1]{\\|#1\\|}$\n", "$\\newcommand{\\abs}[1]{\\left|#1\\right|}$\n", "$\\newcommand{\\choice}[1]{ \\left\\{ \\begin{array}{l} #1 \\end{array} \\right. }$\n", "$\\newcommand{\\pa}[1]{\\left(#1\\right)}$\n", "$\\newcommand{\\diag}[1]{{diag}\\left( #1 \\right)}$\n", "$\\newcommand{\\qandq}{\\quad\\text{and}\\quad}$\n", "$\\newcommand{\\qwhereq}{\\quad\\text{where}\\quad}$\n", "$\\newcommand{\\qifq}{ \\quad \\text{if} \\quad }$\n", "$\\newcommand{\\qarrq}{ \\quad \\Longrightarrow \\quad }$\n", "$\\newcommand{\\ZZ}{\\mathbb{Z}}$\n", "$\\newcommand{\\CC}{\\mathbb{C}}$\n", "$\\newcommand{\\RR}{\\mathbb{R}}$\n", "$\\newcommand{\\EE}{\\mathbb{E}}$\n", "$\\newcommand{\\Zz}{\\mathcal{Z}}$\n", "$\\newcommand{\\Ww}{\\mathcal{W}}$\n", "$\\newcommand{\\Vv}{\\mathcal{V}}$\n", "$\\newcommand{\\Nn}{\\mathcal{N}}$\n", "$\\newcommand{\\NN}{\\mathcal{N}}$\n", "$\\newcommand{\\Hh}{\\mathcal{H}}$\n", "$\\newcommand{\\Bb}{\\mathcal{B}}$\n", "$\\newcommand{\\Ee}{\\mathcal{E}}$\n", "$\\newcommand{\\Cc}{\\mathcal{C}}$\n", "$\\newcommand{\\Gg}{\\mathcal{G}}$\n", "$\\newcommand{\\Ss}{\\mathcal{S}}$\n", "$\\newcommand{\\Pp}{\\mathcal{P}}$\n", "$\\newcommand{\\Ff}{\\mathcal{F}}$\n", "$\\newcommand{\\Xx}{\\mathcal{X}}$\n", "$\\newcommand{\\Mm}{\\mathcal{M}}$\n", "$\\newcommand{\\Ii}{\\mathcal{I}}$\n", "$\\newcommand{\\Dd}{\\mathcal{D}}$\n", "$\\newcommand{\\Ll}{\\mathcal{L}}$\n", "$\\newcommand{\\Tt}{\\mathcal{T}}$\n", "$\\newcommand{\\si}{\\sigma}$\n", "$\\newcommand{\\al}{\\alpha}$\n", "$\\newcommand{\\la}{\\lambda}$\n", "$\\newcommand{\\ga}{\\gamma}$\n", "$\\newcommand{\\Ga}{\\Gamma}$\n", "$\\newcommand{\\La}{\\Lambda}$\n", "$\\newcommand{\\si}{\\sigma}$\n", "$\\newcommand{\\Si}{\\Sigma}$\n", "$\\newcommand{\\be}{\\beta}$\n", "$\\newcommand{\\de}{\\delta}$\n", "$\\newcommand{\\De}{\\Delta}$\n", "$\\newcommand{\\phi}{\\varphi}$\n", "$\\newcommand{\\th}{\\theta}$\n", "$\\newcommand{\\om}{\\omega}$\n", "$\\newcommand{\\Om}{\\Omega}$\n"], "metadata": {}, "cell_type": "markdown"}, {"source": ["This numerical tour introduces basic signal denoising methods."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 6, "cell_type": "code", "language": "python", "metadata": {}, "input": ["addpath('toolbox_signal')\n", "addpath('toolbox_general')\n", "addpath('solutions/denoisingsimp_2_linear')"]}, {"source": ["Noisy Signal Formation\n", "----------------------\n", "In these numerical tour, we simulate noisy acquisition by adding some\n", "white noise (each sample is corrupted by adding an independant Gaussian\n", "variable).\n", "\n", "\n", "This is useful to test in an oracle maner the performance of our methods.\n", "\n", "\n", "Length $N$ of the signal."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 3, "cell_type": "code", "language": "python", "metadata": {}, "input": ["N = 1024;"]}, {"source": ["We load a clean signal $x_0 \\in \\RR^N$."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 4, "cell_type": "code", "language": "python", "metadata": {}, "input": ["name = 'piece-regular';\n", "x0 = rescale( load_signal(name,N) );"]}, {"source": ["Variance of the noise."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 5, "cell_type": "code", "language": "python", "metadata": {}, "input": ["sigma = .04;"]}, {"source": ["We add some noise to it to obtain the noisy signal $y = x_0 + w$.\n", "Here $w$ is a realization of a Gaussian white noise of variance\n", "$\\si^2$."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 6, "cell_type": "code", "language": "python", "metadata": {}, "input": ["y = x0 + sigma*randn(size(x0));"]}, {"source": ["Display the clean and the noisy signals."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [{"metadata": {}, "png": "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\nAElFTkSuQmCC\n", "output_type": "display_data"}], "prompt_number": 7, "cell_type": "code", "language": "python", "metadata": {}, "input": ["clf;\n", "subplot(2,1,1);\n", "plot(x0); axis([1 N -.05 1.05]);\n", "subplot(2,1,2);\n", "plot(y); axis([1 N -.05 1.05]);"]}, {"source": ["Linear Signal Denoising\n", "-----------------------\n", "We consider a noising estimator $x \\in \\RR^N$ of $x_0$ that only\n", "depends on the observation $y$. Mathematically speaking, it is thus a\n", "random vector that depends on the noise $w$.\n", "\n", "\n", "A translation invariant linear denoising is necessarely a convolution\n", "with a kernel $h$\n", "$$ x = x_0 \\star h $$\n", "where the periodic convolution between two vector is defined as\n", "$$ (a \\star b)_i = \\sum_j a(j) b(i-j). $$\n", "\n", "\n", "It can be computed over the Fourier domain as\n", "$$ \\forall \\om, \\quad \\hat x(\\om) = \\hat x_0(\\om) \\hat h(\\om). $$"], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 8, "cell_type": "code", "language": "python", "metadata": {}, "input": ["cconv = @(a,b)real(ifft( fft(a).*fft(b) ));"]}, {"source": ["We use here a Gaussian fitler $h$ parameterized by\n", "the bandwith $\\mu$."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 9, "cell_type": "code", "language": "python", "metadata": {}, "input": ["normalize = @(h)h/sum(h(:));\n", "t = [0:N/2-1, -N/2:-1]';\n", "h = @(mu)normalize( exp( -(t.^2)/(2*mu^2) ) );"]}, {"source": ["Display the filter $h$ and its Fourier transform."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [{"metadata": {}, "png": "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\n", "output_type": "display_data"}], "prompt_number": 10, "cell_type": "code", "language": "python", "metadata": {}, "input": ["mu = 10;\n", "clf;\n", "subplot(2,1,1);\n", "plot( t, h(mu) ); axis('tight');\n", "title('h');\n", "subplot(2,1,2);\n", "plot( t, real(fft(h(mu))) ); axis('tight');\n", "title('fft(h)');"]}, {"source": ["Shortcut for the convolution with $h$."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 11, "cell_type": "code", "language": "python", "metadata": {}, "input": ["denoise = @(x,mu)cconv(h(mu), x);"]}, {"source": ["Display a denoised signal."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [{"metadata": {}, "png": "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\nwACIJGAARPo/qM6Arvz4TxUAAAAASUVORK5CYII=\n", "output_type": "display_data"}], "prompt_number": 12, "cell_type": "code", "language": "python", "metadata": {}, "input": ["clf;\n", "plot( denoise(y,mu) );\n", "axis([1 N -.05 1.05]);"]}, {"source": ["__Exercise 1__\n", "\n", "Display a denoised signal for several values of $\\mu$."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [{"metadata": {}, "png": "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\nTh+UrFM3AfZF1gMP9yofePrmQYknIgLsu9OH35pVhRyRTBIPzRwhwGiI8a4MU7faZD0iAgyAkARY\neN5s/0nWqei9FBUhCLA9J0Y6Pb8AjQy/Sjl1E2BfXB8o8xVNyp4AhCPAzpiG76/juBMFUjKDoQYC\n7GdTJo0LWXpyOI7aOVO7zf/79Y8zSfmiQvvv7R34Wf+3gobV2U0/K671bx8y1rQzLZ72qfILl/24\ntbHsW6j8ZK8x2csJFmB9309ddP7zpFhuLeogWVlQm/3Kv7fsDy6Mt5NhaeQ7gwwWYF+Ns9FiMTZK\nf8tnKnd72X96psXjU4bt/BN4TrYAG/vwYrranerbO1PLzcd3ZjcFZqlPr2Q2ONHu40xJ1mXflZrM\nmb3lE6jyU13EsdlXh2Eo+X7YwQd515G1lJKVc8WnnXy98gkqSuV3mQKskllDkONOEreX/Y3Pl+8d\nlwSSHZRgS4jDMKyvxRpXTjZ/dVqDK2bUbF3eT5T93+e55WngccECrNvqpdMjUU574YRPVx42Xvbt\nfI6lkZf5kzxLiDVLdtreZXxFQDgCjFpM93cQjWk8N9F563Tk0Vek8n8VbwmRlBZ3J9ocnqbf3jJy\ntbP0dJwGWSjQIPOq3vkcDpsEGG+a98zFnU02f4Y0NidkU2Suy/6uKM00dRNgG9Ic3Sh2Wnt+x2QH\nhTQ2S3pxEqbyvxJghYSe9Ty650duaxK03WCHyr9OgMUWNxS/KvO6Ejfgrx5aqg09dXuFtjrOVYhL\nOttx0d+dcqAXNAixCDBOMthBUGk+xynAispRNNCCT4sxaUb/BARYOUFPWayptuDREdmIz0ME2D+e\nHqwf7cmGCa4wTSEcAUbrpD4EJcAye3poTnDO57SjDGsPc5bl7yLAoHWxRv8ahIvMrATY/5gW0axY\nlV/mHrux2uRXOTJYgL2gZN1c3Fb6bkyCUWwt5YtiTYD9Uazii+VB/dlT/x42osxRKDbll17tEGD/\nE24wrSEAcixEwJySjkKAveC5Qf/eZ64hIHmUkfqTr5Vv6lYDAdZ1unHbGh+JUs5RGj+m7RBgf6Ts\nxlCVKGsPRCHAuMrYQSbtrJwn6LkC7LVDWHnp/NqNK385rAUdqevZ7QQBEJ0A67o31g+vb7GqnlPJ\ngMJxb9XP04N+4XiTYe9qPcDenc1dLP2qvqxITw4n2bRDBTao9QB70aPDh55Mta4kzdOFfW5Gq7u9\n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\n", "output_type": "display_data"}], "prompt_number": 13, "cell_type": "code", "language": "python", "metadata": {}, "input": ["exo1()"]}, {"collapsed": false, "outputs": [], "prompt_number": 14, "cell_type": "code", "language": "python", "metadata": {}, "input": ["%% Insert code here"]}, {"source": ["__Exercise 2__\n", "\n", "Display the evolution of the oracle denoising error\n", "$ \\norm{y-x_0} $ as a function of $\\mu$.\n", "Set $\\mu$ to the value of the optimal parameter.\n", "etrieve the best denoising result"], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [{"metadata": {}, "png": "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\n", "output_type": "display_data"}], "prompt_number": 15, "cell_type": "code", "language": "python", "metadata": {}, "input": ["exo2()"]}, {"collapsed": false, "outputs": [], "prompt_number": 16, "cell_type": "code", "language": "python", "metadata": {}, "input": ["%% Insert code here"]}, {"source": ["Display the results."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [{"metadata": {}, "png": "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\n", "output_type": "display_data"}], "prompt_number": 17, "cell_type": "code", "language": "python", "metadata": {}, "input": ["clf;\n", "plot( denoise(y,mu) );\n", "axis([1 N -.05 1.05]);"]}, {"source": ["Wiener Filtering\n", "----------------\n", "We suppose here that $x_0$ is a realization of a random vector $x_0$,\n", "whose distribution is Gaussian with a stationary covariance $c$,\n", "and we denote $P_{X_0}(\\om) = \\hat c(\\om)$ the power-spectrum of\n", "$x_0$.\n", "\n", "\n", "Recall that $w$ is a realization of a random vector $W$\n", "distributed according to $\\Nn(0,\\si^2 \\text{Id})$.\n", "\n", "\n", "The (oracle) optimal filter minimizes the risk\n", "$$ R(h) = \\EE_{W,X_0}( \\norm{ X_0 - h \\star (X_0 + W) }^2 ). $$\n", "\n", "\n", "One can show that the solution of this problem, the so-called Wiener filter,\n", "is defined as\n", "$$ \\forall \\om, \\quad \\hat h(\\om) = \\frac{ P_{X_0}(\\om) }{ P_{X_0}(\\om) + \\si^2 }. $$\n", "\n", "\n", "We estimate $ P_{X_0} $ using the periodogram associated to the\n", "realization $x_0$, i.e.\n", "$$ P_{X_0} \\approx \\frac{1}{N} \\abs{\\hat x_0}^2. $$"], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 18, "cell_type": "code", "language": "python", "metadata": {}, "input": ["P = 1/N * abs(fft(x0)).^2;"]}, {"source": ["Compute the approximate Wiener filter."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 19, "cell_type": "code", "language": "python", "metadata": {}, "input": ["h_w = real( ifft( P ./ ( P + sigma^2 ) ) );"]}, {"source": ["Note that this is a theoretical filter, because in practice one does not\n", "have access to $x_0$.\n", "\n", "\n", "Display it."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [{"metadata": {}, "png": "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\nNt5043Xhxpacf2u+Flk7z3v5K8Bjq8k9Ju/j8KbvnMpfbtj9J5rDjDEeTHe02Ys/+/IB/06U3cup\n8iL+tB7A19Vau392o3/3o8XJdO28ZtH+vXY8Dy7OAotPN5k9j5lMr9ujHc8R28+7Z9+ezwjzG9eW\nAsON4801mUMn5wTzOWjnaE/ZyIuT8ngwh59i7UWtmexsx177gdptZGl7j5q/wC9dMFiswtrL3/n4\n565X9s8YG8PbOKNa2yv+++D/zpYRDbv/Cqx787Rx44x78lP7d98Td/T5KdVba4v5d/dPr3uWRGXp\ntzjnHvyTmW7y7OO7Ld5zu22Lb/pbE/qwBQ6fPg/POF/E73+nxtPf2lN061tjfIaxcwHxchW1PZI9\nNy7ebTjx2tg/j+1s2+/7/s6d8uAb9xy/WfOf3dhzEgr1wn1WYONThvr+Drtzzl2coA881+F5rWu6\n220MYL4wermVXk6vw9eLq7T5LS8n7nEYdg7y3bvNH3xy7r//WSan5BNru8H2a1/bsNuBnA9scUGz\nNvi5/QfRMOxhhItnSPNV/p6HPctbpxeLP37WOe7+eWxjC5y7cb7qViuw4VOI4xvXzsiOpejciwYv\nLY5wz8n1xv63sbJcu+Wl+Xn6u6eibz3pu+ena7d86d08vCn2P8jLfeDdZ9neUItjWHucT+a+Paux\nU7bn/JYPK/LjmeGsZ998s5q+pH1uFbAltdtxXvnh7HnWkfDWaemJj/aujctK21ecDo/n3HVStzLO\nAzPvKfk//FwHLC5f3tpue8az/YCHC/SNXevzH98Y2P518+cOTGLbB3KE2wesXPadqP/9uO33erN/\nPK3GsOdJv32kHV7TtHrXrrxjn3KfK/hkQTnfo+rsE48797pG1/QCLiPePmCrrn8IXWqEzfu64Uu/\nP7iftxZbLx+Ke4h+K58bsLZOvyZ27s9+7/Gjjxa+6qxfFv7mU+973Gkxek0CdhW/2Y8dLfCWi7Sw\n1ZNenIDdk30dznLu0eTYPJGAne/iHwRw/MCcYzCRgJ0seteMHjzevpdyN1HuyL/qPv8SB9/j4CGI\n3fU5rMAAiCRgAEQSMIAwLpP2BAyASAIGQCQBAyCSgAEQScAAiCRgAEQSMAAiCdgd+EshwAMJGACR\nBAzeYLEL1yFgAEQSsE85JQd+z8zTCdgPlFIePgBjuMgAjOEiAzCGswgYAJEEDIBIAgZApFJv/avA\nG1zk3a123XNeLDT0lGPt+nW4ecAAuCuXEAGIJGAARBIwACIJGACR/rQewA2V8s9HY4bPQA6flJnf\ncvpTv3zG5mP49gDGI2n+RnTrr/r2b8TkM8C11t9vhOEpGu6NV3gj9u+EPzs8TyFgZxofscNOM3w9\nv+UbYxj21MVnbD6G7r+Hyg9mjbYbodUYxpu61Rsx2QJN3ojx3N1kI7x81V8dw7sz0m8OjRO5hHim\nWmvbt/wKO9wVxnCFY6+fsq8whitsiuZjeKbmM9K3WYHdUPP5ovnEfQXjE/+GA2g7hiuYrHLaDoNz\nCditXORYnVxw/7H+ecf//b3mb8F1NMznFS6IDb/5G/8KkLO4hHg31l71r67R1rjCRuAi+nA6ofmS\nR19b+JJWH36bf+jr92PY84yP+hRiw497XeGNmKx7HrsR2o7hxp9CFDAAIrmECEAkAQMgkoABEEnA\nAIgkYABEEjAAIgkYAJEEDIBIAgZAJAEDIJKAARBJwACIJGAARBIwACIJGACRBAyASAIGQCQBAyCS\ngAEQScAAiCRgAEQSMAAiCRgAkQQMgEgCBkAkAQMgkoABEEnAAIgkYABEEjAAIgkYAJEEDIBIAgZA\nJAEDINL/AZAa2gZZtxKnAAAAAElFTkSuQmCC\n", "output_type": "display_data"}], "prompt_number": 20, "cell_type": "code", "language": "python", "metadata": {}, "input": ["clf;\n", "plot(fftshift(h_w)); axis tight;"]}, {"source": ["Display the denoising result."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [{"metadata": {}, "png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAGwCAIAAADOgk3lAAAACXBIWXMAAAsSAAALEgHS3X78AAAA\nIXRFWHRTb2Z0d2FyZQBBcnRpZmV4IEdob3N0c2NyaXB0IDguNTRTRzzSAAAS/UlEQVR4nO3dbZOi\nuhoFULnV//8vcz8wzaEBFRVJdrJWnZryaM905CU7eYg4jON4A4A0/yvdAAB4hwADIJIAAyCSAAMg\nkgADIJIAAyCSAAMgkgADIJIAAyCSAAMgkgADIJIAAyCSAAMgkgADIJIAAyCSAAMgkgADIJIAAyCS\nAAMgkgADIJIAAyCSAAMgkgADIJIAAyCSAAMgkgADIJIAAyCSAAMgkgADIJIAAyCSAAMg0k/pBnzX\nMAylmwAQaRzH0k14ovEAu1WwD4ZhKNuG4g3QhkoaoA2VNCCiDRGjfyVEACIJMAAiCTAAIpWvw35V\nDYVmgDgRnacZGACRBBgAkQQYAJEEGACRBBgAkQQYAJEEGACRGgywiFt4AfChpm7mK7oA+tHUDGwc\nx/o/Og7AKZqage1aTcskHMCuuCJW+wEmsQCOWPaWEWHWVAkRgH4IMAAiNRhgaoYAPWgwwADogQAD\nIJIAAyCSAAMgkgADIJIAAyCSAKtUwqfgAUoSYDWSXgBPCTAAIgkwACIJsEqNo0IiwCMCDIBIAgyA\nSAIMgEgCrDrDcPOFMABPCTAAIgkwACIJMAAiCTAAIgkwACIJMAAiCTAAIgkwACIJMAAi/ZRuwMuG\n35u0j5v7VTx4CYDGhAXYMAxzOC0fP34JgPYoIQIQKWwGdsTw94sgV/9rZsbNHZNhz5D2LbrtBNg4\njtPWnx/Mz5drFECM1UWZgi05qJ0Ac90LoCthAbacXa2WbOy+BECrwgLsthdO8zNyC6AfViECEEmA\nARBJgNGdhNVV1Gh75DiWyhJgAM9JrwoJsHqNozMEquBMrJMAAyCSAAN4zod0KiTAAIgkwOriJrOQ\nxeWxggQYwAskVj0EWF+ce/C2eWHwfB6pl5QlwKAXhi80RoBVxAUwSGE0UAMBVgUnA1RrNbI0yqyH\nAAM46nF6GYleTIB1xNkFp9iNMefX9QQYwBUk3OkEWC2s4OCr9J6nu3fCDsPdrW0vnOundAMA4s0D\n0HvfumJ4+g1mYAAvmwPJ1x4VJMD64mSDK82nm/PuGwQYAJEEWHnXL98wGIQrjeO//ziXAKuFgxt6\n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\nMAAi/R9XcafyAOVlxAAAAABJRU5ErkJggg==\n", "output_type": "display_data"}], "prompt_number": 21, "cell_type": "code", "language": "python", "metadata": {}, "input": ["clf;\n", "plot(cconv(y,h_w));\n", "axis([1 N -.05 1.05]);"]}, {"source": ["Note that this denoising is not very efficient, because the hypothesis of\n", "stationarity of $X_0$ is not realistic for such piecewise-regular\n", "signal."], "metadata": {}, "cell_type": "markdown"}], "metadata": {}}], "nbformat": 3, "metadata": {"kernelspec": {"name": "matlab_kernel", "language": "matlab", "display_name": "Matlab"}, "language_info": {"mimetype": "text/x-matlab", "name": "matlab", "file_extension": ".m", "help_links": [{"url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md", "text": "MetaKernel Magics"}]}}}