From 8ffe7887b459dc6be401b2d8c29187faeeae3f20 Mon Sep 17 00:00:00 2001 From: Alberto Ruiz Date: Fri, 2 Oct 2015 08:54:10 +0200 Subject: test --- examples/repmat.ipynb | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 examples/repmat.ipynb (limited to 'examples') diff --git a/examples/repmat.ipynb b/examples/repmat.ipynb new file mode 100644 index 0000000..afa9706 --- /dev/null +++ b/examples/repmat.ipynb @@ -0,0 +1,138 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# repmat" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An alternative implementation of `repmat` using the new in-place tools." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + ":ext FlexibleContexts\n", + "\n", + "import Numeric.LinearAlgebra\n", + "import Numeric.LinearAlgebra.Devel" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "m = (3><4)[1..] :: Matrix Z" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(3><4)\n", + " [ 1, 2, 3, 4\n", + " , 5, 6, 7, 8\n", + " , 9, 10, 11, 12 ]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "m" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import Control.Monad.ST" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "rpmt m i j = runST $ do\n", + " x <- newUndefinedMatrix RowMajor dr dc\n", + " sequence_ [ setMatrix x a b m | a <- [0,r..dr], b <-[0,c..dc] ]\n", + " unsafeFreezeMatrix x\n", + " where\n", + " (r,c) = size m\n", + " dr = i*r\n", + " dc = j*c" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(6><12)\n", + " [ 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4\n", + " , 5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8\n", + " , 9, 10, 11, 12, 9, 10, 11, 12, 9, 10, 11, 12\n", + " , 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4\n", + " , 5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8\n", + " , 9, 10, 11, 12, 9, 10, 11, 12, 9, 10, 11, 12 ]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "rpmt m 2 3" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Haskell", + "language": "haskell", + "name": "haskell" + }, + "language_info": { + "codemirror_mode": "ihaskell", + "file_extension": ".hs", + "name": "haskell", + "version": "7.10.1" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} -- cgit v1.2.3