{ "cells": [ { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "[![NbViewer](https://badgen.net/static/render/NbViewer/orange)](https://nbviewer.org/urls/gitlab.dsi.universite-paris-saclay.fr/bruno.denis/intro_jupyter/-/raw/main/notebooks/matlab.ipynb) \n", "\n", "\n", "# Matlab et Jupyter\n", "\n", "Ce carnet Jupyter a pour objectif de présenter l'intégration d'un noyau d'exécution Matlab avec Jupyter.\n" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "**Avertissement** - Matlab est un logiciel propriétaire et payant. Pour exécuter ce carnet, il est nécessaire de disposer une licence du logiciel. \n", "- Pour installer la license établissement de Matlab, voir [Télécharger et installer MATLAB](https://fr.mathworks.com/help/install/ug/install-products-with-internet-connection.html)\n", "- Pour installer le composant logiciel assurant l'intégration entre Matlab et Jupyter, voir [MATLAB Integration for Jupyter](https://fr.mathworks.com/products/reference-architectures/jupyter.html)" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Test de connexion au noyau\n", "\n", "Vérification du bon fonctionnement du noyau Matlab" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [], "vscode": { "languageId": "plaintext" } }, "outputs": [ { "data": { "text/html": [ "
ans = \n",
       "  matlabRelease with properties:\n",
       "\n",
       "    Release: \"R2023a\"\n",
       "      Stage: \"release\"\n",
       "     Update: 5\n",
       "       Date: 24-Jul-2023\n",
       "
" ], "text/plain": [ "ans = \n", " matlabRelease with properties:\n", "\n", " Release: \"R2023a\"\n", " Stage: \"release\"\n", " Update: 5\n", " Date: 24-Jul-2023\n" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matlabRelease" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Calcul matriciel" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
matrix = 4x4 double\n",
       "    0.9040    0.9757    0.2695    0.7098\n",
       "    0.9409    0.3172    0.5896    0.3383\n",
       "    0.8025    0.8128    0.8330    0.0466\n",
       "    0.2420    0.6974    0.3638    0.7636\n",
       "
" ], "text/plain": [ "matrix = 4x4 double\n", " 0.9040 0.9757 0.2695 0.7098\n", " 0.9409 0.3172 0.5896 0.3383\n", " 0.8025 0.8128 0.8330 0.0466\n", " 0.2420 0.6974 0.3638 0.7636\n" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matrix = rand(4)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
ans = 4x4 double\n",
       "    0.8644    0.8512   -0.3765   -1.1577\n",
       "    0.9052   -1.6168    0.9309   -0.1819\n",
       "   -1.6996    0.7089    0.7147    1.2223\n",
       "   -0.2910    0.8692   -1.0715    1.2605\n",
       "
" ], "text/plain": [ "ans = 4x4 double\n", " 0.8644 0.8512 -0.3765 -1.1577\n", " 0.9052 -1.6168 0.9309 -0.1819\n", " -1.6996 0.7089 0.7147 1.2223\n", " -0.2910 0.8692 -1.0715 1.2605\n" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "inv(matrix)" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Figure" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[x, y] = meshgrid(-2:0.0125:2);\n", "z = x.*exp(-x.^2 - y.^2);\n", "[m, c] = contour3(x, y, z, 30);\n", "c.LineWidth = 2;" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "editable": true, "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = randn(50, 3);\n", "plotmatrix(x)" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Fonction utilisateur\n", "\n", "### Fonction anonyme sans utilisation de fichier\n", "\n", "Les fonctions anonymes de Matlab sont définie sans avoir besoin de créer un fichier mais leur définition est limitée à une seule expression.\n", "\n", "Exemple :\n", "\n", "définition de la fonction anonyme dont le handler est \"distance_to_origine\"" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
distance_to_origine = function_handle with value:\n",
       "    @(vector)sum(vector.^2)\n",
       "
" ], "text/plain": [ "distance_to_origine = function_handle with value:\n", " @(vector)sum(vector.^2)\n" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "distance_to_origine = @(vector) sum(vector.^2)" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "Utilisation de la fonction anonmyme" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
ans = 13
" ], "text/plain": [ "ans = 13" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v = [2 ; 3];\n", "distance_to_origine(v)" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### Fonction \"standard\"\n", "\n", "Définissons une fonction `stat()` qui renvoie la moyenne `m` et l’écart-type `s` d’un vecteur d'entrée." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "function [m,s] = stat(x)\n", " n = length(x);\n", " m = sum(x)/n;\n", " s = sqrt(sum((x-m).^2/n));\n", "end" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "Au moment d'appeler la fonction `stat()` une erreur se produit, car Matlab s'attend à lire la définition de la fonction le fichier `stat.m`." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "editable": true, "scrolled": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Unrecognized function or variable 'stat'." ] } ], "source": [ "values = [12.7, 45.4, 98.9, 26.6, 53.1];\n", "[average, stdev] = stat(values)" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "Pour définir correctement la fonction `stat()`, il faut créer le fichier nommé `stat.m` dont le contenu est\n", "\n", "```octave\n", "function [m,s] = stat(x)\n", " n = length(x);\n", " m = sum(x)/n;\n", " s = sqrt(sum((x-m).^2/n));\n", "end\n", "```\n", "\n", "Si nécessaire il faut ajouter le chemin d'accès au fichier `stat.m` à la liste des chemins d'accès de Matlab. Exemple :" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "addpath(\"./notebooks\");" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "Cette fois-ci, l'appel à la fonction `stat()` répond correctement " ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
average = 47.3400
" ], "text/plain": [ "average = 47.3400" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/html": [ "
stdev = 29.4124
" ], "text/plain": [ "stdev = 29.4124" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[average, stdev] = stat(values)" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Affichage d'un code non exécutable\n", "\n", "Il est parfois utile d'écrire du code dans une cellule Markdown simplement pour être affiché et non pas pour être exécuté. La balise Markdown de début d'un bloc de code est le triple accent grâve éventuellement suivie d'une directive pour indiqué la syntaxe du code. `matlab` n'est pas une directive connue pour mettre en évidence la syntaxe du code, il faut utiliser à la place la directive `octave` (le clone open source de Matlab) pour obtenir le même effet.\n", "\n", "Code Markdown\n", "\n", "````\n", "``` octave\n", "disp(\"Bonjour\")\n", "for i=1:2\n", " i+1\n", "end\n", "```\n", "````\n", "\n", "Résultat\n", "\n", "``` octave\n", "disp(\"Bonjour\")\n", "for i=1:2\n", " i+1\n", "end\n", "```\n" ] } ], "metadata": { "kernelspec": { "display_name": "MATLAB Kernel", "language": "matlab", "name": "jupyter_matlab_kernel" }, "language_info": { "file_extension": ".m", "mimetype": "text/x-matlab", "name": "matlab" } }, "nbformat": 4, "nbformat_minor": 4 }