{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 5. Introduction to MATLAB/octave" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "MATLAB is a powerful, widely used, \"desktop environment tuned for iterative analysis and design processes\" and \"a programming language that expresses matrix and array mathematics directly.\" It is a commercial product and requires an [expensive] license to run, although student discounts do exist.\n", "\n", "GNU Octave (in short, octave), is a free-software alternative to MATLAB. Its interpreter is mostly compatible with MATLAB and reproduces a large part of the numerical facilities of MATLAB. It is available as both a command-line interpreter and as a GUI-driven programming environment. As free software it has acquired a broad distribution in the scientific community. In particular, it is available on vastly parallel computing farms dedicated to scientific computing (such as SHARCNET), which makes it the environment of choice for many physicists. It is also available both as a standalone kernel and as a loadable extension within jupyter notebooks; these are installed on our cluster.\n", "\n", "This notebook is, in fact, running under an octave kernel (see in the upper right corner).\n", "\n", "As the two environments are almost 100% syntax-compatible, we will always refer to the code as octave, but almost everything will also be applicable to MATLAB environments." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Matrices and vectors\n", "\n", "One of the important quirks of octave syntax is that its elementary object is a matrix. If in eXtrema, separate types exist for vectors and matrices, octave takes the view of vectors being a particular kind of a matrix, with one of the dimensions being of size 1. Thus it distinguishes between column and row vectors and many errors you encounter will likely have to do with failures to keep track and convert between the two types of vectors as appropriate.\n", "\n", "Here are a few different ways of creating and manipulating matrices and vectors." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A =\n", "\n", " 1 2 3\n", " 4 5 6\n", "\n", "B =\n", "\n", " 0.576952 0.226006 0.473877\n", " 0.305551 0.433975 0.420620\n", " 0.234508 0.694907 0.164800\n", " 0.823089 0.834511 0.029354\n", "\n", "I =\n", "\n", "Diagonal Matrix\n", "\n", " 1 0 0\n", " 0 1 0\n", " 0 0 1\n", "\n", "Z =\n", "\n", " 0 0\n", " 0 0\n", "\n" ] } ], "source": [ "A = [ 1 2 3; 4 5 6]\n", "B = rand(4,3)\n", "I = eye(3)\n", "Z = zeros(2,2)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "v =\n", "\n", " 1 2 3\n", "\n", "ans =\n", "\n", " 1\n", " 2\n", " 3\n", "\n", "w =\n", "\n", " 4\n", " 5\n", " 6\n", "\n", "ans =\n", "\n", " 4 5 6\n", "\n", "t =\n", "\n", " 0\n", " 0\n", " 0\n", "\n", "s =\n", "\n", " 0 0 0 0 0 0 0 0\n", "\n" ] } ], "source": [ "v = [1 2 3]\n", "v'\n", "w = [4;5;6]\n", "w'\n", "t = zeros(3,1)\n", "s = zeros(1,8)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ans = 32\n", "ans = 32\n", "ans =\n", "\n", " 4 10 18\n", "\n", "ans =\n", "\n", " 4 10 18\n", "\n", "ans =\n", "\n", " 4 8 12\n", " 5 10 15\n", " 6 12 18\n", "\n", "ans =\n", "\n", " 4 8 12\n", " 5 10 15\n", " 6 12 18\n", "\n", "ans =\n", "\n", " -3 6 -3\n", "\n", "ans =\n", "\n", " 3\n", " -6\n", " 3\n", "\n", "warning: cross: taking cross product of column by row\n", "warning: called from\n", " cross at line 58 column 7\n", "ans =\n", "\n", " 3\n", " -6\n", " 3\n", "\n" ] } ], "source": [ "v*w\n", "1*4 + 2*5 + 3*6\n", "v.*w'\n", "[1*4 2*5 3*6]\n", "v.*w\n", "[1*4 2*4 3*4; 1*5 2*5 3*5; 1*6 2*6 3*6]\n", "cross(v,w')\n", "cross(w,v')\n", "cross(w,v)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "system('cp -r /work/5P10/Lectures/octave-tutorial ./');\n", "\n", "### if you are NOT on one of our workstations, use the following:\n", "### -r = --recursive\n", "### -nH = --no-host-directories\n", "### -np = --no-parent\n", "### -R = --reject\n", "#system('wget -r -nH -np --cut-dirs=3 -R \"index.html*\" http://www.physics.brocku.ca/Courses/5P10/Lectures/octave-tutorial/');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Elementary operations and interactions with octave\n", "\n", "There is no need to reproduce the essential introduction, as it exists:\n", "\n", " * a simple tutorial; and\n", " * a comprehensive Reference Manual.\n", "\n", "Students are expected to work through the tutorial on their own, and learn how to use and search the online documentation. octaveBasic must be completed now, other parts of the tutorial will be reviewed later as needed, and completed as homework.\n", "\n", "A crucial part for us is the ability to read in, analyze and plot experimentala data. The rest of this notebook is dedicated to learning how to do this." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/home/esternin/5P10\n" ] } ], "source": [ "%cd ~/5P10" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Created file '/home/esternin/5P10/VI.dat'.\n" ] } ], "source": [ "%%file VI.dat\n", "# V I,mA\n", " 0 0.468\n", " 1 0.405\n", " 2 0.342\n", " 3 0.279\n", " 4 0.216\n", " 5 0.153\n", " 6 0.090\n", " 6.4 0.064" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The basic operation for this simple file is trivial: we know it's a text file, with one header line and two columns of floating-point data:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "V =\r\n", "\r\n", " 0.00000\r\n", " 1.00000\r\n", " 2.00000\r\n", " 3.00000\r\n", " 4.00000\r\n", " 5.00000\r\n", " 6.00000\r\n", " 6.40000\r\n", "\r\n", "I =\r\n", "\r\n", " 0.468000\r\n", " 0.405000\r\n", " 0.342000\r\n", " 0.279000\r\n", " 0.216000\r\n", " 0.153000\r\n", " 0.090000\r\n", " 0.064000\r\n", "\r\n" ] } ], "source": [ "[V,I] = textread('VI.dat',\"%f %f\",'headerlines',1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In general, though, octave has multiple ways of bringing in data, and can deal with a variety of file formats, some highly structured (like spreadheet files, for example). When little is known about the format of the data file, importdata() is a useful tool. After a little digging through the file structure, the same result can be obtained: two column vectors, V and I." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Variables in the current scope:\n", "\n", " Attr Name Size Bytes Class\n", " ==== ==== ==== ===== ===== \n", " D 9x1 99 cell\n", "\n", "Total is 9 elements using 99 bytes\n", "\n", "error: fieldnames: Invalid input argument\n", "error: called from\n", " fieldnames at line 60 column 5\n" ] } ], "source": [ "D = importdata('VI.dat','',1);\n", "\n", "### the file is imported as one unified structure, so \"whos\" yields little insight\n", "whos D\n", "### the first step is to identify what is in the structure ...\n", "fieldnames(D)\n", "\n", "#D.textdata\n", "#D.colheaders\n", "#D.data\n", "\n", "### ... and then follow down to locate and extract the data itself\n", "#V = D.data(:,1)\n", "#I = D.data(:,2)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "%plot inline" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ans =\r\n", "\r\n", " 0.00000 0.00000\r\n", " 1.00000 0.40500\r\n", " 2.00000 0.68400\r\n", " 3.00000 0.83700\r\n", " 4.00000 0.86400\r\n", " 5.00000 0.76500\r\n", " 6.00000 0.54000\r\n", " 6.40000 0.40960\r\n", "\r\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAJMmlDQ1BkZWZhdWx0X3JnYi5pY2MAAEiJlZVnUJNZF8fv8zzphUASQodQQ5EqJYCUEFoo0quoQOidUEVsiLgCK4qINEWQRQEXXJUia0UUC4uCAhZ0gywCyrpxFVFBWXDfGZ33HT+8/5l7z2/+c+bec8/5cAEgiINlwct7YlK6wNvJjhkYFMwE3yiMn5bC8fR0A9/VuxEArcR7ut/P+a4IEZFp/OW4uLxy+SmCdACg7GXWzEpPWeGjy0wPj//CZ1dYsFzgMt9Y4eh/eexLzr8s+pLj681dfhUKABwp+hsO/4b/c++KVDiC9NioyGymT3JUelaYIJKZttIJHpfL9BQkR8UmRH5T8P+V/B2lR2anr0RucsomQWx0TDrzfw41MjA0BF9n8cbrS48hRv9/z2dFX73kegDYcwAg+7564ZUAdO4CQPrRV09tua+UfAA67vAzBJn/eqiVDQ0IgALoQAYoAlWgCXSBETADlsAWOAAX4AF8QRDYAPggBiQCAcgCuWAHKABFYB84CKpALWgATaAVnAad4Dy4Aq6D2+AuGAaPgRBMgpdABN6BBQiCsBAZokEykBKkDulARhAbsoYcIDfIGwqCQqFoKAnKgHKhnVARVApVQXVQE/QLdA66At2EBqGH0Dg0A/0NfYQRmATTYQVYA9aH2TAHdoV94fVwNJwK58D58F64Aq6HT8Id8BX4NjwMC+GX8BwCECLCQJQRXYSNcBEPJBiJQgTIVqQQKUfqkVakG+lD7iFCZBb5gMKgaCgmShdliXJG+aH4qFTUVlQxqgp1AtWB6kXdQ42jRKjPaDJaHq2DtkDz0IHoaHQWugBdjm5Et6OvoYfRk+h3GAyGgWFhzDDOmCBMHGYzphhzGNOGuYwZxExg5rBYrAxWB2uF9cCGYdOxBdhK7EnsJewQdhL7HkfEKeGMcI64YFwSLg9XjmvGXcQN4aZwC3hxvDreAu+Bj8BvwpfgG/Dd+Dv4SfwCQYLAIlgRfAlxhB2ECkIr4RphjPCGSCSqEM2JXsRY4nZiBfEU8QZxnPiBRCVpk7ikEFIGaS/pOOky6SHpDZlM1iDbkoPJ6eS95CbyVfJT8nsxmpieGE8sQmybWLVYh9iQ2CsKnqJO4VA2UHIo5ZQzlDuUWXG8uIY4VzxMfKt4tfg58VHxOQmahKGEh0SiRLFEs8RNiWkqlqpBdaBGUPOpx6hXqRM0hKZK49L4tJ20Bto12iQdQ2fRefQ4ehH9Z/oAXSRJlTSW9JfMlqyWvCApZCAMDQaPkcAoYZxmjDA+SilIcaQipfZItUoNSc1Ly0nbSkdKF0q3SQ9Lf5RhyjjIxMvsl+mUeSKLktWW9ZLNkj0ie012Vo4uZynHlyuUOy33SB6W15b3lt8sf0y+X35OQVHBSSFFoVLhqsKsIkPRVjFOsUzxouKMEk3JWilWqUzpktILpiSTw0xgVjB7mSJleWVn5QzlOuUB5QUVloqfSp5Km8oTVYIqWzVKtUy1R1WkpqTmrpar1qL2SB2vzlaPUT+k3qc+r8HSCNDYrdGpMc2SZvFYOawW1pgmWdNGM1WzXvO+FkaLrRWvdVjrrjasbaIdo12tfUcH1jHVidU5rDO4Cr3KfFXSqvpVo7okXY5upm6L7rgeQ89NL0+vU++Vvpp+sP5+/T79zwYmBgkGDQaPDamGLoZ5ht2GfxtpG/GNqo3uryavdly9bXXX6tfGOsaRxkeMH5jQTNxNdpv0mHwyNTMVmLaazpipmYWa1ZiNsulsT3Yx+4Y52tzOfJv5efMPFqYW6RanLf6y1LWMt2y2nF7DWhO5pmHNhJWKVZhVnZXQmmkdan3UWmijbBNmU2/zzFbVNsK20XaKo8WJ45zkvLIzsBPYtdvNcy24W7iX7RF7J/tC+wEHqoOfQ5XDU0cVx2jHFkeRk4nTZqfLzmhnV+f9zqM8BR6f18QTuZi5bHHpdSW5+rhWuT5z03YTuHW7w+4u7gfcx9aqr01a2+kBPHgeBzyeeLI8Uz1/9cJ4eXpVez33NvTO9e7zofls9Gn2eedr51vi+9hP0y/Dr8ef4h/i3+Q/H2AfUBogDNQP3BJ4O0g2KDaoKxgb7B/cGDy3zmHdwXWTISYhBSEj61nrs9ff3CC7IWHDhY2UjWEbz4SiQwNCm0MXwzzC6sPmwnnhNeEiPpd/iP8ywjaiLGIm0iqyNHIqyiqqNGo62ir6QPRMjE1MecxsLDe2KvZ1nHNcbdx8vEf88filhICEtkRcYmjiuSRqUnxSb7JicnbyYIpOSkGKMNUi9WCqSOAqaEyD0tandaXTlz/F/gzNjF0Z45nWmdWZ77P8s85kS2QnZfdv0t60Z9NUjmPOT5tRm/mbe3KVc3fkjm/hbKnbCm0N39qzTXVb/rbJ7U7bT+wg7Ijf8VueQV5p3tudATu78xXyt+dP7HLa1VIgViAoGN1tubv2B9QPsT8M7Fm9p3LP58KIwltFBkXlRYvF/OJbPxr+WPHj0t6ovQMlpiVH9mH2Je0b2W+z/0SpRGlO6cQB9wMdZcyywrK3BzcevFluXF57iHAo45Cwwq2iq1Ktcl/lYlVM1XC1XXVbjXzNnpr5wxGHh47YHmmtVagtqv14NPbogzqnuo56jfryY5hjmceeN/g39P3E/qmpUbaxqPHT8aTjwhPeJ3qbzJqamuWbS1rgloyWmZMhJ+/+bP9zV6tua10bo63oFDiVcerFL6G/jJx2Pd1zhn2m9az62Zp2WnthB9SxqUPUGdMp7ArqGjzncq6n27K7/Ve9X4+fVz5ffUHyQslFwsX8i0uXci7NXU65PHsl+spEz8aex1cDr97v9eoduOZ67cZ1x+tX+zh9l25Y3Th/0+LmuVvsW523TW939Jv0t/9m8lv7gOlAxx2zO113ze92D64ZvDhkM3Tlnv296/d5928Prx0eHPEbeTAaMip8EPFg+mHCw9ePMh8tPN4+hh4rfCL+pPyp/NP637V+bxOaCi+M24/3P/N59niCP/Hyj7Q/Fifzn5Ofl08pTTVNG02fn3Gcufti3YvJlykvF2YL/pT4s+aV5quzf9n+1S8KFE2+Frxe+rv4jcyb42+N3/bMec49fZf4bmG+8L3M+xMf2B/6PgZ8nFrIWsQuVnzS+tT92fXz2FLi0tI/QiyQvpTNDAsAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAddEVYdFNvZnR3YXJlAEdQTCBHaG9zdHNjcmlwdCA5LjI1wZk/DQAAFxJJREFUeJzt3b9yGlmiwOHDrYklPYBa4RBA6q0CZ+MJIFwFZrKFqpHCVSJlo0mULUqUCldZ4eBA4ULgDQVV63CbwKnaD2D8Atyg91JcjPxHg8QBfV9NbaG2EIcdDT+fw6G7MJlMAgCs2v+segAAEIIgARAJQQIgCoIEQBQeI0jj8TjLskd4IADW12ME6c2bN3/88ccjPBAA6+vBg7S/v39+fv7QjwLAunvwIF1fX//6668P/SgArDubGgCIwg+rHkAoFourHgIAy/T+/ft73Gv1QQr3HXrMCoXC5p2TyZNaIxv5vDypdXHvaYYlOwCi8BgzpJOTk0d4FADWmhkSAFEQpAexeYvCwZNaKxv5vDypjSdIAERBkACIgiABEAVBAiAKggRAFAQJgCgIEgBRECQAoiBIAERBkACIgiABEAVBAiAKggRAFAQJgCgIEgBRECQAoiBIAERBkACIgiABEAVBAiAKggRAFAQJgCgIEgBRECQAoiBIAERBkACIgiABEAVBAiAKggRAFAQJgCgIEgBRECQAoiBIAERBkACIgiABEAVBAiAKggRAFAQJgCgIEgBRECQAoiBIAERBkACIwg+rHgCwTIVQmN6ehMkKRwLfS5BgcxRCYTZCc19C5CzZwcaahMnshAkiJ0iwIWbnQzrEOhIk2BCz8yErdawjQYKN5T0k1otNDbA55t40UiPWiyDBRhEh1pclOwCiIEgARMGSHU+XPWkQFUHiifr8UzuyBKtlyY6naG4/tBRBDASJJ2121c7ZDWC1BIknbXbVzjwJVkuQeIrMhyBCNjXwRDmpAcRGkHi6RAiiYskOgCgIEgBRECQAoiBIAERBkACIwjKDlKbpeDz+9uMAMLW0IDWbzW6322q1BoPB9OB4PN7f3+92u/n/LuuxANg8ywlSr9dLkuTs7Ozi4uLy8nJ6vN/vVyqVs7Oz6+vrXq+3lMcCYCMt54OxaZqWy+UQQpIkw+FwerxUKnW73cFgMBqNSqXSUh4LgI20tCW7JEnyG5VKZfbg1tZWr9fr9Xp7e3t33bcwY1njAeDRLOVlfGmnDsqyLL8xO0O6vLys1+uNRiOE8OLFi/zG5yYTZ3ABWGOzL+PFYvF+P2Q5M6RyuXx7extCyLLM0hwA97CcGVK9Xu90Ou12ezgcHhwchBAGg0Gr1Xr79m2z2by9vR2NRrVabSmPBcBGKixxuWwwGCRJMn0z6avHc8Vi8f3798saAwCrde9X9WVefqJarX7XcQCYcuogAKIgSABEQZAAiIIgARCFZW5qAHgghfDfz/9Pgs/RbyxBAmJXCIVph2Zvs2Es2QFRmyvQJEymsyU2jCAB60GHNp4gAevBSt3GEyQAomBTAxC16ZtGszdWPSgehCABscsLZH/dxrNkB6wHNdp4ggRAFAQJgCgIEgBRECQAoiBIAERBkACIgiABEAVBAiAKggRAFAQJgCgIEgBRECQAoiBIAERBkACIgiABEAVBAiAKggRAFAQJgCgIEgBRECQAoiBIAERBkACIwg+rHgDroRAK+Y1JmKx2JMCmEiS+rhAK0w7N3gZYIkt2fMVcgSZhMp0tASyRIAEQBUECIAqCxFfMrdF5Dwl4IDY18HWzTVIj4IEIEt9Eh4CHZskOgCgIEgBRECQAoiBIAERBkACIgiABEAVBAiAKggRAFAQJgCgIEgBRECQAoiBIAERBkACIgiABEAVBAiAKggRAFAQJgCgIEgBRECQAoiBIAERBkACIgiABEIX5II3H45WMA4An7oe5r//yl7+USqVKpVIul6vV6vb29rf/rDRNkyT5/C5ZloUQkiT5k2MFYIMVJpPJ3KHBYHBzczMajUajUZIkeZzq9fqXf1Cz2UySZDQaHR8fV6vV6fHT09MQQpZl9Xq90Wh8fsdisfj+/fs//UQAiMK9X9XnZ0ghhGq1mhdlPB5fXl72+/1Xr159OUi9Xi9JkrOzsyzLTk9Pp0EaDAYhhLOzs/F4/Pvvvy8MEgCEhUFK07TX6+UzpFqtdnh4WKvVvvxT0jQtl8shhCRJhsPh9PjNzc3e3l632w0hXFxcLHXkAGyU+SA9e/YshHB4eHh8fJw35htN3yKqVCqzx//444/Dw8Pb29tms3l1dbXwvoVCYXr78yVEACI3+zL+448/3u+HzAfp8PDw5ubm8vLy9vZ2NBpVq9Vv3IyQ71wIIczOkEIItVotX6nb39+/674iBLDWZl/Gi8Xi/X7IfJAODg4ODg5CCL1eL03TfLWtUqmcnJx84aeUy+U0TUMIWZaVSqXp8b29vdvb2/y2DeUAfMGdH4xNkmRnZydJkvF4PDfp+Vy9Xh8Oh+12++joKO/ZYDAoFouNRiM/3mw2Dw8Plzx2ADbI/Lbvdrs9Go2Gw+Hu7m61Wi2Xy7Va7Rs/jTQYDJIk+XyJ767jOdu+ATbJ0rZ9f/r0qV6vn52d3eNzrLMfP/qW4wAwNR+ks7OzlYwDgCduweeQQgjj8bjf70/3I4QQvrypAQD+pMVBOjo62t7e3t3dfeTRAPBkLQ7SaDR69+7dIw8FgKds8bbvly9fdjqdRx4KAE/Z4hlSCOH8/Pz8/Hz6pZ3ZADyoxUF69erVv//97++6GBIA/BmLl+zmTpAKAA9t8QwpSZKff/559qx0d52oGwCWYnGQGo3GVy8RCwBLtDhI33UlJAD48+482zcAPCZBAiAKd34OCYAHVQj/vez3JLhqdgjfMkPKL7XX6XTyq8cC8OcVQmESJvk/0zI9cV+fIVWrVadpAFiivEbTL/MmmSfNB2kwGCz8PhfZA1g6HZo1H6RWq7Xw+0ySAJZOjWbNB0l4AB6aNbqF5jc1vHjxot1up2m6ktEAPB35XoZCKIhTbj5IV1dXOzs7v//+uzIBPJzp/rr8xqqHE4XCZLL4/4gsy/r9fq/XG4/Hv/zyy8HBwQONoFgsWicE2Bj3flW/83NISZK8fPmy0Whsb29fXl7+ibEBwNct/hxSr9cbDAb9fr9arR4cHDjzNwAPbT5Ip6en/X4/SZJGo3F8fOyisQA8jvkg7e3tXV9fJ0myktEA8GTNB+nhNi8AwBd86eSqxWIxhNBsNh9pLAA8Ya6HBEAUBAmAKAgSAFEQJACi8KUg/frrryEEn4oF4BHMb/tO07TT6YzH41KpdHJyEkJoNBqrGBgAT8v8DOn8/Hx3d7fRaAyHw263u5IxAfAEzc+QhsPh1dVVftu1JwB4NHe+h+QsdgA8JrvsAIjCgstP5GcMyr169Sq/4Rp6ADyo+SAJDwArYckOgCgIEgBRECQAorA4SO12+5HHAcATtzhIo9FoMBg88lAAeMoWbPsOIdTr9aOjo1KpND0yPX0DADyExUEqlUoXFxePPBQAnrLFS3blcjnLspubmyzL8jN/P/KwAHhq7tzU0Ov1Qgi3t7cfPnxotVqPOyoAnpzFQXrz5s3FxcXz589DCAcHB6VSyR4HAB7U4iBtbW3Nfpll2dwRAFiuxZsaDg8PW61WqVTKsuzo6CiEUC6XH3dgADwti4PUaDRKpVKv1yuVSnt7e65iDsBDWxykdru9s7Pzyy+/JEnyyAMC4GlaHKTnz5/f3Nzki3WVSuX58+fVavVxBwbA01KYTCZ3/dl4PO73+91udzQaPdx1korFooswAWyMe7+qL54hdTqdXq83Ho+r1erBwYHpEQAPbfG2748fP4YQqtVquVwul8vb29uPOyoAnpzFM6STk5MQQpqmw+Gw2WyGEP71r3895rAAeGoWBynLsn6/n6bpYDCoVquW7AB4aIuDdHl5ubW1VavVnPMbgMdx5y67wWBwc3MTQtjZ2Xn58uXDvY1klx3AJrn3q/qdZ/s+Pz/f2dkpl8u3t7fO9g3AQ1u8ZPfmzZu3b9/ms6L86rFpmjqdHUDkCqEwvT0Jd37MNE6Lg+Tc3n9G/guxdr8KwLorhMLsK8/cl/FbHKRardZqter1+tbWVpqmWZZ9y/QoTdMkSRa+25RfwOIpfJ5p+hsgS8BqTcJkvZq0+D2kk5OT4+Pjjx8/3t7elsvl169ff/UHNZvNbrfbarU+v5TfeDze399/UjUKIUzCJP9tWO2QgCdoTV955mdIaZp2Op3xeFwqlfKPx36LXq+XJMnZ2VmWZaenp3OfWzo/P9/a2hqPx0+hSbn1+lsJsGHW9PVnfoZ0fn6+u7vbaDSGw2G32/3GnzLd8pAkyXA4nP2jTqezt7d311LeplrT3wZgrc2tyqzd34znZ0jD4fDq6iq/nabpt/+g6ZWTKpXK9GCapmmaXlxc5B9pukuhMLMt5O6zj6+dtfttANbdbJMe8/Vn9mX8xx9/vN8PWfweUgjheyc0WZblN2ZnSJ1OZ3d3t91u50t50++ZM5nxXQ8am/xXIf9tWNM1XGDd5W9gP/LfhpfyMr54l933KpfL+XQqy7JSqTQ9fnBw8OnTpxDCcDjM9+wt5eFiNm2SuRHAd1kQpGKxOL396tWr/MaXzwNRr9c7nU673R4OhwcHByGEwWDQarWm99ra2no6Z2iVIoB7+NIVY7/XYDBIkmT6ZtI3ci47gE2y5CvG3s/TmQMBsHR3bmoAgMckSABEQZAAiIIgARAFQQIgCoIEQBQECYAoCBIAURAkAKIgSABEQZAAiIIgARAFQQIgCoIEQBQECYAoCBIAURAkAKIgSABEQZAAiIIgARAFQQIgCoIEQBQECYAoCBIAURAkAKIgSABEQZAAiIIgARAFQQIgCoIEQBQECYAoCBIAURAkAKIgSABEQZAAiIIgARAFQQIgCoIEQBQECYAoCBIAURAkAKIgSABEQZAAiIIgARAFQQIgCoIEQBQECYAoCBIAURAkAKIgSABEQZAAiIIgARAFQQIgCoIEQBQECYAoCBIAURAkAKIgSABEQZAAiIIgARAFQQIgCoIEQBQECYAoCBIAURAkAKIgSABEYZlBStN0PB4vPJ5l2RIfCIDN88OyflCz2UySZDQaHR8fV6vV/OB4PG61WqVSKcuyUql0cnKyrIcDYMMsZ4bU6/WSJDk7O7u4uLi8vJwef/PmTaVSOTs7u7q66vf7S3ksADbScmZIaZqWy+UQQpIkw+FwerxWq+U3Fi7lAcDU0t5DSpIkv1GpVGYPJkkyGAxardbh4eFd9y3MWNZ4AHg0S3kZX9p7SNNtC7MzpBBCu93+8OHDxcXFtFifm0wmyxoGAI9v9mW8WCze74csJ0jlcjlN0xBCvnlherzb7eY1WsqjALDBlhOker3e6XTa7fZwODw4OAgh5Mt0L1++zLKs2Wzm33Z1dbWUhwNg8xSWuFw2GAzyN42+617FYvH9+/fLGgMAq3XvV/WlvYcUQph+/AgAvpdTBwEQBUECIAqCBEAUBAmAKAgSAFEQJACiIEgAREGQAIiCIAEQBUECIAqCBEAUBAmAKAgSAFEQJACiIEgAREGQAIiCIAEQBUECIAqCBEAUBAmAKAgSAFEQJACiIEgAREGQAIiCIAEQBUECIAqCBEAUBAmAKAgSAFEQJACiIEgAREGQAIiCIAEQBUECIAqCBEAUBAmAKAgSAFEQJACiIEgAREGQAIiCIAEQBUECIAqCBEAUBAmAKAgSAFEQJACiIEgAREGQAIiCIAEQBUECIAqCBEAUBAmAKAgSAFEQJACiIEgAREGQAIiCIAEQBUECIAqCBEAUBAmAKAgSAFEQJACiIEgAREGQAIiCIAEQhccIUpqm4/H4ER4oHoVCYdVDWD5Pao1s5PPypDbegwep2Wx2u91WqzUYDD7/00LwLwOAEB46SL1eL0mSs7Ozi4uLy8vLuT8thMIkTIIsAfDQQUrTtFwuhxCSJBkOh7N/NK1RCGESJpoE8MQ9+JJdkiT5jUqlMj04W6OcJgE8cYXJZPL177qvdru9t7fXaDRCCMVi8f379/991JkgFYvFhxsAAI9v+mr/XX5Y+jhmlcvlNE1DCFmWlUql6fF8PpQ3KR/353MmAJ6Uh50hhRD29/crlcpwODw4OKjX6//vsWc2NagRwBP34EEKIQwGgyRJpm8m/b+HD4UQghoB8BhBAoCvWvGpgzb1JA7j8TjLslWPYsnSNN28JzUYDDbyNzDLso18Xpsny7LN+8/q3lY5Q2o2m0mSjEaj4+PjarW6qmE8hE6n8/Hjx5OTk1UPZDnG43Gr1SqVSvnmlM14XvmTqlQq/X7/+Ph47g3OtTYej3/++ed3796teiDL9OzZs3xj1Mb8BoYQTk9PQwhZltXr9Xw38rrrdru9Xi+/PRqNXr9+nX8U9VtNVuSf//znb7/9NplMbm9v//a3v61qGA/hr3/9648//viPf/xj1QNZmsvLy+nT+emnn1Y7mGW5vLy8vLycbOJv4G+//fbTTz99/Phx1QNZms37dzSZTG5ubvLXwI8fP/79739f9XCW7D//+c89XgMfdtv3F3zhJA7r7vr6ut1ur3oUy1Sr1fIbm7QKdHBwkN9I03Thjps11el09vb2sizb3t5e9ViWJn86p6enW1tbh4eHm/HUbm5u9vb2ut1uCOHi4mLVw1my8/PzezypVb6HtPAkDkQo3yQ5GAxardbh4eGqh7NM7Xb7/Pz8+1YVIpamaZqm09ZujPF4vLu7W6/Xd3Z2jo6OVj2cpfnjjz9CCLe3t81mc9VjWaZut/v8+fN7/L1hZTOkEML0rbwNmyFtpHa7/eHDh4uLi02aTIQQTk5ODg8Pf/75581Ywe90Oru7u+12O8uy09PTw8PDzfj3Va/X8zf5qtXq9C2KDVCr1fJfvP39/VWPZZm63e7r16/vcceVzZDK5fLt7W347CQORKjb7W5ejU5PT/OXts1Y/8kdHBw8f/48/8tpvV7f2tpa9YiWo9PpLLx+zVrb29ub3t6kxfA0TUul0v3+s1rZDKler3c6nXa7nZ/EYVXD4FvkG76nqwpXV1erHM2SNBqNo6OjNE1Ho9HGrENO1x63trY2aedqpVI5Ojqq1Wqj0Wgz5rIhhEajsb+/3263N+k3MITQ6/XuvQa+4g/GfuEkDvDQxuPxaDTyG7guNvLlYiOf1L05UwMAUVjxmRoAICdIAERBkACIgiABEAVBAiAKggRAFAQJvqTT6eTXCMhlWfbixYuF3zkYDPLPDqdpupIBwLoTJPiSWq3W7/enX/b7/em5z+9yfn6+2gHAmhIk+JL8U/TTE3r2er38LJ/tdvvFixcvXryYu9RIfiaY/GC73X727NmzZ8+m35MfaTabnU4nn0h1u90XL17Mfs83DgA2jyDBVzQajfzMnvl1wcvl8mAwGA6H19fX19fXw+Fw9ryfJycn+SVN8+959+7du3fvhsNhmqaDwWA0Gr19+/b4+Pjy8vLTp09pmna73evr67dv345Go/zSON8ygMd54vDIBAm+Il80G4/H0+Wym5uber2+vb2dn1T75ubm83tVq9XXr18PBoNutzsejz99+jS9V7lczs9w3+v1SqXSaDQajUalUik///23DAA2kiDBV2xvb1er1X6/P7tcNr2yw+7u7sJ7pWm6v7+ft2p6Kv7PrweRZdnNzU3+bbPXI/jqAGDzCBJ8Xa1Wyyc6+XLZ3t7edCvdYDDY2dn5/C69Xq9Wq52cnEwvl7CzszNd3MuvTrm3t7e9vX1ycnJycrKzs5PnauGFf+YGABtJkODr6vV6lmW//PJL/mV+YZ5ms3l0dDQajV6+fDn7zfm7Qc+fP3/z5k273c73gvd6vZcvX45Go9PT0+lFuBuNxng8bjab+dUC8ysYtVqtrw4ANpLLT8A95ZOkz6cs060HWZZNL4icX3gp/N8lko+Ojo6Pj/P7pmn66dOn6fX0Op2OS1byNAkSPJIsy46OjiqVSggh36S38Nu63e7GXBQVvosgwePJsqzf7+/u7tqbAJ/7Xyk49S7S0YLzAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "[V,I] = textread('VI.dat',\"%f %f\",'headerlines',1);\n", "\n", "[V,V.*I]\n", "\n", "plot(V,V.*I,'go')\n", "#,'go','MarkerSize',2);\n", "ylabel(\"Power P=VI, mW\");\n", "xlabel(\"Voltage, V\");" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "[V,I] = textread('VI.dat',\"%f %f\",'headerlines',1);\n", "\n", "### this is needed if the graph is to contain multiple plots\n", "hold on\n", "\n", "plot(V,V.*I,'g+','MarkerSize',10);\n", "\n", "### fit to n-degree polynomial yields a vector of n+1 coefficients of fit\n", "cf = polyfit(V,V.*I,2);\n", "### which can be used to generate a polynomial function that can be plotted\n", "#plot(V,polyval(cf,V),'r-');\n", "\n", "### except there aren't enough points to define a smooth curve, \n", "### so apply the same fit coefficients to a much finer-grid vector\n", "VV = linspace(min(V),max(V),1000);\n", "plot(VV,polyval(cf,VV),'r-');\n", "\n", "ylabel(\"Power P=VI, mW\");\n", "xlabel(\"Voltage, V\");\n", "\n", "hold off" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "[V,I] = textread('VI.dat',\"%f %f\",'headerlines',1);\n", "\n", "### here, for inline SVG graphics, multiple figures (frames) will show up on the same graph;\n", "### when using built-in octave-to-gnuplot interface, these commands would produce multiple graphics windows\n", "figure(1)\n", "\n", "### this is needed if the figure is to contain multiple plots\n", "hold on\n", "\n", "plot(V,V.*I,'go','MarkerSize',8); # P = V*I\n", "\n", "### fit to n-degree polynomial yields a vector of n+1 coefficients of fit\n", "cf = polyfit(V,V.*I,2);\n", "### which can be used to generate a polynomial function that can be plotted\n", "#plot(V,polyval(cf,V),'r-');\n", "\n", "### except there aren't enough points to define a smooth curve, \n", "### so apply the same fit coefficients to a much finer-grid vector\n", "VV = linspace(min(V),max(V),1000);\n", "plot(VV,polyval(cf,VV),'r-');\n", "\n", "ylabel(\"Power P=VI, mW\");\n", "xlabel(\"Voltage, V\");\n", "\n", "hold off\n", "\n", "figure(2)\n", "hold on\n", "plot(V,V./I,'go','MarkerSize',8); # R = V/I\n", "\n", "plot(V,polyval(cf,V)./(I.*I),'r-'); # R = V/I = P/I^2\n", "\n", "#II = polyval(cf,VV) ./ VV; # I = P/V\n", "#plot(VV,polyval(cf,VV)./(II.*II),'r-'); # R = V/I = P/I^2\n", "\n", "ylabel(\"Resistance R=V/I, kOhm\");\n", "xlabel(\"Voltage, V\");\n", "hold off\n", "\n", "print -dpng VI.png" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Homework\n", "

\n", " Work your way through the remaining sections of the octave tutorial.\n", "

\n", " Convert one of previously obtained graphs (the analysis of data from VI.dat or Cavendish.dat) from gnuplot or eXtrema to octave. Demonstrate how to display multiple frames (one above or beside the other), annotate your figures clearly to communicate the same information (maximum of power, and the resistance at which this maximum occurs, or the period of oscillations, etc.)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "hide_input": false, "kernelspec": { "display_name": "Octave", "language": "octave", "name": "octave" }, "language_info": { "file_extension": ".m", "help_links": [ { "text": "GNU Octave", "url": "https://www.gnu.org/software/octave/support.html" }, { "text": "Octave Kernel", "url": "https://github.com/Calysto/octave_kernel" }, { "text": "MetaKernel Magics", "url": "https://metakernel.readthedocs.io/en/latest/source/README.html" } ], "mimetype": "text/x-octave", "name": "octave", "version": "4.2.2" }, "toc": { "nav_menu": {}, "number_sections": false, "sideBar": true, "skip_h1_title": false, "toc_cell": false, "toc_position": {}, "toc_section_display": "block", "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }