{"nbformat_minor": 0, "worksheets": [{"cells": [{"source": ["Wavelet Compression of Integral Operators\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 explores approximation of integral operators\n", "over wavelets bases."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 2, "cell_type": "code", "language": "python", "metadata": {}, "input": ["addpath('toolbox_signal')\n", "addpath('toolbox_general')\n", "addpath('solutions/pde_4_wavelet_compression')"]}, {"source": ["Representation of Operators in Bases\n", "------------------------------------\n", "We consider 1-D signals $f \\in \\Hh=L^2([0,1])$ (we assume periodic boundary\n", "conditions).\n", "We consider an orthogonal basis $\\Bb = (\\psi_m)_{m \\in \\Om}$ of $\\Hh$.\n", "The forward (decomposition) operator is\n", "$$\\Psi : f \\in \\Hh \\rightarrow (\\dotp{f}{\\psi_m})_{m \\in \\Om} \\in\n", " \\Vv = \\RR^\\Om.$$\n", "The backaward (recomposition) operator is\n", "$$\\Psi^* : c \\in \\Vv \\rightarrow \\sum_{m \\in \\Om} c_m \\psi_m \\in \\Hh.$$\n", "\n", "\n", "Note that $\\Bb$ being orthonormal is equivalent to\n", "$$\\Psi^* \\circ \\Psi = \\text{Id}_\\Hh \\qandq \\Psi \\circ \\Psi^* = \\text{Id}_\\Vv.$$\n", "\n", "\n", "A linear operator $T : \\Hh \\rightarrow \\Hh$\n", "can be represented as\n", "$$T f(x) = \\int_0^1 K(x,y) f(y) d y.$$\n", "\n", "\n", "Here $K : [0,1]^2 \\rightarrow \\RR$ is a kernel function, that is\n", "sometimes assumed to be a distribution (for instance to define\n", "differential operators).\n", "\n", "\n", "$K$ is in some sense the representation of $T$ in the Dirac basis of $\\Hh$.\n", "One can represent the operator $T$ in the basis $\\Bb$\n", "as follow\n", "$$T = \\Psi^* S \\Psi\n", " \\qwhereq S = \\Psi T \\Psi^* \\in \\ell^2(\\Vv).$$\n", "Here the operator $S : \\Vv \\rightarrow \\Vv$ can be understood as an\n", "(possibly infinite) matrix whose entries can be computed as\n", "$$\\forall (m,m') \\in \\Omega^2, \\quad\n", " S_{m,m'} = \\dotp{T \\psi_m}{\\psi_{m'}}.$$\n", "\n", "\n", "In the following, in order to be able to perform\n", "numerical computations,\n", "we consider discretized signals $f \\in \\Hh = \\RR^N$\n", "and thus assume $\\Psi$ defines an orthonormal basis of $\\RR^N$.\n", "In this case $\\Vv = \\RR^N$, and both $K, S \\in \\RR^{N \\times N}$.\n", "\n", "\n", "The switch of representations\n", "$$\\Theta : T \\in \\RR^{N \\times N}\n", " \\longmapsto S = \\Psi T \\Psi^* \\in \\RR^{N \\times N}$$\n", "is called the tensorial transform assiociated to $\\Psi$\n", "(also called the anisotropic transform in the case of Wavelet bases).\n", "\n", "\n", "It can be computed numerically by first applying $\\Psi$ to the rows\n", "of $T$ and then to its columns.\n", "\n", "Foveation Operator\n", "------------------\n", "We consider here a special case of integral operator, the so-called\n", "Foveation operator. It corresponds to a spacially varying convolution.\n", "\n", "\n", "Size $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 can compute a signal and the action of the kernel on the signal."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 4, "cell_type": "code", "language": "python", "metadata": {}, "input": ["f = load_signal('piece-polynomial', N);"]}, {"source": ["Display it."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [{"metadata": {}, "png": "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\n/Q8cAN5suhCMPwAAAABJRU5ErkJggg==\n", "output_type": "display_data"}], "prompt_number": 5, "cell_type": "code", "language": "python", "metadata": {}, "input": ["clf; \n", "plot(f); axis tight;"]}, {"source": ["A spacially varying convolution is a blurring operator that is not\n", "translation invariant. For a Foveation operator, the blur has a spatially varying bandwidth\n", "parameterized by a scale $\\si(x)$, that dillates a\n", "given convolution profile $\\phi(x)$. It thus corresponds to\n", "$$K(x,y) = \\frac{1}{\\si(x)} \\phi\\pa{ \\frac{x-y}{\\si(x)} }.$$\n", "\n", "\n", "We choose here a Gaussian kernel."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 6, "cell_type": "code", "language": "python", "metadata": {}, "input": ["phi = @(x)exp( -abs(x).^2 / 2 );"]}, {"source": ["One usually chose a foveation scale that increases linearly with the\n", "distance to some center point $c$ of Foveation. This reproduces the effect of\n", "human vision, that has a finer resolution in the center of the field of\n", "view. We thus choose\n", "$$\\si(x) = \\al \\abs{x-c} + \\be$$\n", "for some constants $\\al,\\be > 0$.\n", "\n", "\n", "Center point $c$ of foveation"], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 7, "cell_type": "code", "language": "python", "metadata": {}, "input": ["c = 1/2;"]}, {"source": ["Rate of foveation and offset."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 8, "cell_type": "code", "language": "python", "metadata": {}, "input": ["alpha = .05; \n", "beta = 1e-3;"]}, {"source": ["Definition of $\\sigma$"], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 9, "cell_type": "code", "language": "python", "metadata": {}, "input": ["sigma = @(x)alpha*abs(x-c)+beta;"]}, {"source": ["Normalization operator (this is needed for the discrete kernel) the rows."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 10, "cell_type": "code", "language": "python", "metadata": {}, "input": ["normalize = @(K)K ./ repmat( sum(K,2), [1 N] );"]}, {"source": ["Definition of the kernel."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 11, "cell_type": "code", "language": "python", "metadata": {}, "input": ["t = (0:N-1)/N;\n", "[Y,X] = meshgrid(t,t);\n", "K = normalize( phi( (X-Y) ./ sigma(X) ) );"]}, {"source": ["Display a few lines of the kernel."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [{"metadata": {}, "png": "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\nRU5ErkJggg==\n", "output_type": "display_data"}], "prompt_number": 12, "cell_type": "code", "language": "python", "metadata": {}, "input": ["I = round( linspace(1,N,17) );\n", "clf;\n", "plot(K(:,I)); axis tight;\n", "axis([1 N -.005 .1]);"]}, {"source": ["Display the kernel as an image (using a change of contrast to better view\n", "the rows)."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [{"metadata": {}, "png": "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\nK1BghLwRq9VqNpupqKbT6dXV1dXV1Ww2+9rXvvb1r3/9F37hF1JKs9lMn9dEIntzEHIrUGCEvCkp\nJdWSJgwvLy8vLy9/+tOfajrxvffe09bA+rymGbm0mZA3hwIj5HZYLpeTyWS5XKqrPv30U92Q5dd+\n7dfef/99fdUcpiX1FBghbwIFRsitodlCLes4OzvTXS7n8/lv/MZvfP3rX18ul5eXl+fn5yo26xp8\n36MmpKtQYITcMsvl8uLiQosSz8/Pz8/Pp9Ppb/3Wb3300Ufz+Vx3cL66urI10fc9XkK6CgVGyO2j\nBYovX76cTqcXFxevXr26urr6vd/7vW984xuz2ez8/Pz169ciYgUd9z1eQjoJBUbIXbFara6urj75\n5JOLi4uXL19eXl5+61vf+uY3vzmdTl++fNnv96+urpbLJYMwQm4GBUbIHaIFimdnZz/60Y8ePHjw\nzjvv/P7v//43vvGNf/u3f7u4uPjss8/UYfc9TEI6CQVGyJ0zm81++tOf/s3f/M3Z2dn5+fm3v/3t\nb3/722+//bYWemhV/X2PkZDuQYERsg20t+8Pf/jDs7Ozly9ffve73/3Od77z8uXLs7OzH//4x5PJ\n5L4HSEj3oMAI2R6TyeQf//Ef//zP//yLL774oz/6o+9+97tffPHFl19++emnnzKRSMh1qVgBtU2q\nqrrvIZD7ZzAYfPDBB7/927/9Z3/2Z++9995f/MVffO973/v4448Xi8V9D43cJ/w1vi4U2FahwIiI\nVFV1cnLy7rvvfuc73/nTP/3TZ8+e/dVf/dX3vve9H/3oR5eXl/xP8mDhP/11YQqRkG2TUppMJp9/\n/vnf/u3fPnny5E/+5E/++I//+MGDB3/5l3/593//92dnZ0wnErIJFBgh98BqtZpMJp988sn3v//9\nR48e/eEf/uG3vvWt09PTv/7rv/7hD3/42WefTadT/v84Ie1QYITcA7ol5uvXr//93//9+9///unp\n6R/8wR/87u/+7tHR0aNHj37wgx/813/919XV1WKxoMYIKUGBEXI/6Brn58+f/+u//uvDhw+Pj49/\n53d+55vf/OZoNHrw4MEPfvCDTz/99PPPP59Op1wlRkgWCoyQe0O717948eKTTz758Y9//N577/3y\nL//yhx9++Ju/+ZuvXr06OjpaLBZffvmlbph534MlZOegwAi5N7Tn76tXrz755JN/+Id/OD09HQwG\n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\n", "output_type": "display_data"}], "prompt_number": 13, "cell_type": "code", "language": "python", "metadata": {}, "input": ["clf;\n", "imageplot(K.^.1);"]}, {"source": ["Compute $f = T g$. In the discrete setting,\n", "this corresponds to the multiplication by the discretized kernel $K$\n", "(which is the representation of $T$ in the Dirac basis)."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 14, "cell_type": "code", "language": "python", "metadata": {}, "input": ["g = K*f;"]}, {"source": ["Display the action of the kernel."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [{"metadata": {}, "png": "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\nAgZApP8AXjImPwgNrugAAAAASUVORK5CYII=\n", "output_type": "display_data"}], "prompt_number": 15, "cell_type": "code", "language": "python", "metadata": {}, "input": ["clf;\n", "subplot(2,1,1);\n", "plot(f); axis('tight');\n", "title('f');\n", "subplot(2,1,2);\n", "plot(g); axis('tight');\n", "title('g');"]}, {"source": ["For later use, store the average application time."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 16, "cell_type": "code", "language": "python", "metadata": {}, "input": ["t0 = 0;\n", "ntrials = 50;\n", "for i=1:ntrials\n", " tic; g = K*f; t0 = t0 + toc();\n", "end\n", "t0 = t0 / ntrials;"]}, {"source": ["Representation of Operator in a Wavelet Basis\n", "---------------------------------------------\n", "Wavelet operator compression\n", "has been initially introduced for the compression of integral\n", "operator with a kernel $K$ that is\n", "sufficiently smooth [BeyCoifRokh91](#biblio).\n", "In this setting, this allows to reduce the storage of the discretized\n", "matrix $T \\in \\RR^{N \\times N}$ from\n", "$O(N^2)$ to $O(N\\log(N))$ by thresholding the entries of $S$.\n", "\n", "\n", "A more advanced representation, the so-called non-standard one, allows an\n", "even further compression to $O(N)$ entries. We do not detail here\n", "the non-standard representation, that is more involved.\n", "\n", "\n", "Representation of operator in wavelet bassis has also been applied to\n", "local differential operator (in which case the kernel $K$ is a\n", "distribution), see for instance [Beylkin92](#biblio). In this case, the advantage is not\n", "the storage of the matrix, but the ability to derive optimal\n", "pre-conditioner that are diagonal in the transformed domain, see for instance\n", "[DahmKun92](#biblio). This allows one to recover and extend\n", "classical multiscale preconditonners, such as for instance\n", "[BramPascXu90](#biblio). Such preconditionners are crucial to solve\n", "linear systems such as $T f = y$ (which typically\n", "corresponds to the resolution of a\n", "partial differential equation) using for instance\n", "the conjugate gradient method.\n", "\n", "\n", "An orthogonal wavelet basis of $\\Hh$ reads\n", "$$\\forall m = (j,n), \\quad \\psi_{m}(x) = \\frac{1}{2^{j/2}}\n", " \\psi\\pa{ \\frac{x-2^j n}{2^j} }$$\n", "for scales $j \\in \\ZZ$ and positions $n = 0,\\ldots,2^{-j}-1$.\n", "\n", "\n", "We use here the simplest wavelet, the Haar wavelets. Wavelet with a\n", "larger number of vanishing moments could be used as well."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 17, "cell_type": "code", "language": "python", "metadata": {}, "input": ["options.filter = 'haar';\n", "Jmin = 1;"]}, {"source": ["Define the forward transform $\\Psi$ and\n", "the backward transform $\\Psi^*$."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 18, "cell_type": "code", "language": "python", "metadata": {}, "input": ["options.separable = 0;\n", "Psi = @(f)perform_wavelet_transf(f, Jmin, +1, options);\n", "PsiS = @(f)perform_wavelet_transf(f, Jmin, -1, options);"]}, {"source": ["We define the tensor product transform\n", "$$\\Theta(T) = \\Psi T \\Psi^*$$\n", "where $T$ is represented through its kernel $K$."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 19, "cell_type": "code", "language": "python", "metadata": {}, "input": ["options.separable = 1;\n", "Theta = @(K)perform_wavelet_transf(K, Jmin, +1, options);"]}, {"source": ["Wavelet Foveation\n", "-----------------\n", "Computing foveation over wavelet bases has been initially proposed in\n", "[ChaMalYap00](#biblio). It extends an initial method proposed by [Burt88](#biblio).\n", "\n", "\n", "Display the wavelet transform $\\Psi f$ of the signal $f$."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [{"metadata": {}, "png": "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\n", "output_type": "display_data"}], "prompt_number": 20, "cell_type": "code", "language": "python", "metadata": {}, "input": ["clf;\n", "plot_wavelet(Psi(f), Jmin);"]}, {"source": ["compute $S = \\Theta(T)$."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 21, "cell_type": "code", "language": "python", "metadata": {}, "input": ["S = Theta(K);"]}, {"source": ["Display $S$."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [{"metadata": {}, "png": "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\nAMdxTqezpqYGUtdHo9Hh4eFAIAAdtvBmkLvbFp0zxGyggBlPikhQSr/1rW8de+yxOQwEaJiiKMFg\nENZGKUxptEpWX1/f09MzODg4efLkcDjc19cHKV8rOdSUTdLAWSSEHDhwANbBIoRMmDBh0qRJGzdu\nHBoaqq2thQKkuvoVU8jLZ9IOocGWRCLR39/f398P2gavBbIs22y2hoaGCRMmiKLY19fX3d0NZQRB\nEEWR5/nc/bf624YgpQXD6I3nqaeeStkyf/58v9+fe4oevHpDj19HR0eRbVAHS2prawcHB4eHhwkh\nPp9v3759JOfSUOWGpsGyLMw57e3t/eijjwghg4OD9fX1V1111RdffHH48GG1tWrY3pgi/YplhGVZ\nm81WW1vb2NjocrmCweBnn322detWeEXgeV6SpJ6enmg0Onfu3G984xsnnXSSJEmff/55V1dXMBiE\nKBLtcRUNRp07MtZAD8x4BgcHU7ZQSu+++24941uUUqfT2d7evnr16osuuqj4t2CowW6322w2n8/3\n1ltvHT58+M4778y2SHTlSWmGKIozZswIBALPP/98e3v7rl274vH4M888M3v27IULF06fPr2KHbKC\nyX0peJ6HdErwcefOnbCiGM/zU6dOHRoa2r59eyQSWbx4MXR033777evXr581a1Z7e7vNZiPonCGV\nAgXMeO699970jQ6Hw+v1+jNlR0yBUsrz/EUXXfTYY49B1r6SAEbnpptu8vl8Gzdu3LhxIyQGNKEx\nUptEKZ0zZw7kMr7yyiuTySQ4spRSSJxPTNl+E5LtKnEc19DQcPLJJxPNCju1tbWXXHIJjFY++eST\nsNwzIeSb3/zmyy+//J3vfKe9vT2lk7wS54CMAVDAjCfb8wwrgOhcGIVSeuedd7700kvf+ta3Stk4\nQiil559/vt/vlyTpoYce8vl8JjdAavNYloVrCJl5H3/88aGhIYrrgZWIlGtIKW1qavrRj35ERlZO\nOeaYY9QM1IFA4LHHHps/f/7HH38MXd9Lly7VHwyJIBlBATMF3d3dao5RFUrphRdeqL8SiP746KOP\n1EWKS4sgCH6/HwRAj2toHsBE3nnnneoLAXgPKGblRr22Ho8Hrnz6OxksL6fGCsHbBt4URA8oYKbg\nlVdeufXWW9O3L1q0yOfz5bU65YIFC5544omlS5eWrHFp+P3+WCz28MMP33rrrZZLMw9QStU1wMLh\n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\nmoemEol7AQAAAABJRU5ErkJggg==\n", "output_type": "display_data"}], "prompt_number": 22, "cell_type": "code", "language": "python", "metadata": {}, "input": ["clf;\n", "plot_wavelet(S, Jmin, options);"]}, {"source": ["The operator is compressed by computing a sparse matrix $S_\\tau$\n", "that approximate $S$. Since most of the entries of $S$ are small, one\n", "achieve this compression using a non-linear hard thresholding\n", "$$(S_\\tau)_{i,j} = \\choice{\n", " S_{i,j} \\qifq \\abs{S_{i,j}}>\\tau, \\\\\n", " 0 \\quad \\text{otherwise}.\n", " }\n", "$$\n", "One thus defined $S_\\tau = \\Gamma_\\tau(S)$ where\n", "$\\Gamma_\\tau$ is the hard thresholding operator."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 23, "cell_type": "code", "language": "python", "metadata": {}, "input": ["Gamma = @(S,tau)S .* ( abs(S)>tau );"]}, {"source": ["The threshold $\\tau$ can be adapted to ensure that\n", "$S_\\tau$ has only $m$ non-zero entries.\n", "This defines $\\tau=\\tau(m)$."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 24, "cell_type": "code", "language": "python", "metadata": {}, "input": ["subs = @(u,m)u(m);\n", "tau = @(m)subs( sort(abs(S(:)), 'descend'), m);"]}, {"source": ["Set the targeted number of coefficients."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 25, "cell_type": "code", "language": "python", "metadata": {}, "input": ["m = 4*N;"]}, {"source": ["In order to save computation time when applying $S_\\tau$, it should be\n", "stored as a sparse matrix $S_1$."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 26, "cell_type": "code", "language": "python", "metadata": {}, "input": ["S1 = sparse(Gamma(S,tau(m)));"]}, {"source": ["Display the support of the $m$ largest coefficients that are used for\n", "the approximation."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [{"metadata": {}, "png": "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\nIv0ftF/B1TFI9qMAAAAASUVORK5CYII=\n", "output_type": "display_data"}], "prompt_number": 27, "cell_type": "code", "language": "python", "metadata": {}, "input": ["clf; \n", "plot_wavelet(zeros(N), Jmin, options); hold on;\n", "spy(S1);"]}, {"source": ["One can use this compressed operator to approximate\n", "$$g = \\Psi^* S \\Psi f$$\n", "by\n", "$$g_\\tau = \\Psi^* S_\\tau \\Psi f.$$\n", "When $\\tau \\rightarrow 0$, $g_\\tau \\rightarrow g$.\n", "When $\\tau$ is large, since $S_\\tau$ is a sparse matrix, computing\n", "$g_\\gau$ is faster than computing $g$."], "metadata": {}, "cell_type": "markdown"}, {"source": ["__Exercise 1__\n", "\n", "Display the result $g_{\\tau(m)}$ for different values of $m$."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [{"metadata": {}, "png": "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\nSUVORK5CYII=\n", "output_type": "display_data"}], "prompt_number": 28, "cell_type": "code", "language": "python", "metadata": {}, "input": ["exo1()"]}, {"collapsed": false, "outputs": [], "prompt_number": 29, "cell_type": "code", "language": "python", "metadata": {}, "input": ["%% Insert your code here."]}, {"source": ["__Exercise 2__\n", "\n", "Study the speed gain as a function of $m$ of using the sparse multiplication with respect\n", "to the direct computation of $T f$.\n", "o correction for this exercise."], "metadata": {}, "cell_type": "markdown"}, {"collapsed": false, "outputs": [], "prompt_number": 30, "cell_type": "code", "language": "python", "metadata": {}, "input": ["exo2()"]}, {"collapsed": false, "outputs": [], "prompt_number": 31, "cell_type": "code", "language": "python", "metadata": {}, "input": ["%% Insert your code here."]}, {"source": ["Operator compression is not only useful to compute efficiently\n", "approximation of product $T f$. It can also be used for instance to\n", "compute approximation of the inverse $T^{-1}$, see for instance [BeyCoifRokh91](#biblio).\n", "\n", "\n", "Bibliography\n", "------------\n", "\n", "\n", "\n", "* [ChaMalYap00] E-C. Chang, S. Mallat, C. Yap, [Wavelet Foveation][1], Applied and Computational Harmonic Analysis, Volume 9, Issue 3, Pages 312?335, 2000\n", "* [Burt88] P.J. Burt, [Smart Sensing with a Pyramid Vision Machine][2], PIEEE(76), No. 8, pp. 1006-1015, 1988.\n", "* [BramPascXu90] J.H. Bramble, J. Pasciak e J. Xu, [Parallel multilevel preconditioners][3], Math. Comput., 55, 1-22, 1990.\n", "* [BeyCoifRokh91] G. Beylkin, R. Coifman, V. Rokhlin, [Fast wavelet transforms and numerical algorithms][4], Comm. Pure Appl. Math., 44, 141-183, 1991.\n", "* [Beylkin92] G. Beylkin, [On the Representation of Operators in Bases of Compactly Supported Wavelets][5] SIAM Journal on Numerical Analysis, 29:6, 1716-1, 1992.\n", "* [DahmKun92] W. Dahmen and A. Kunoth, _Multilevel preconditioning_, Numer. Math., 63, pp. 315? 344, 1992.\n", "\n", "[1]:http://dx.doi.org/10.1006/acha.2000.0324\n", "[2]:http://dx.doi.org/10.1109/5.5971\n", "[3]:http://www.jstor.org/stable/2008789\n", "[4]:http://dx.doi.org/10.1002/cpa.3160440202\n", "[5]:http://dx.doi.org/10.1137/0729097"], "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"}]}}}