diff --git a/HW2/README.md b/HW2/README.md new file mode 100644 index 0000000..f74173b --- /dev/null +++ b/HW2/README.md @@ -0,0 +1,36 @@ +# Homework #2 +## due 2/3/17 + +1. Now that you have created your own repository, 'homework_1', that has a README.md file. +Create a new file in this repository called `setdefaults.m`. This file is a matlab/octave +script that will set default plotting parameters. In this file, add the following lines: + + ```matlab + set(0, 'defaultAxesFontSize', 16) + set(0,'defaultTextFontSize',14) + set(0,'defaultLineLineWidth',3) + ``` + + Commit the changes to your repository. + + ![projectile(v_mag,theta) predicts the height of the projectile based upon initial +velocity and position, as see in the Figure](projectile.png) + +2. Clone your 'homework_1' repository to your own computer. Now, we want to create a +function that uses kinematic formulas to predict the path of a projectile. The dimensions +are taken from official dart board dimensions +[darts](http://dartbrokers.com/dartboard-height.html). Create a function, +`projectile.m` that will calculate the location of an object with an initial velocity. The +function inputs are v_mag (initial speed), theta (initial angle). The output is the height +of the object 2.37 m from its starting position. Assume g=9.81 m/s^2 and its initial +height is 1.72 m. + + ```matlab + >> h=projectile(v_mag,theta) + + h= 1 + ``` + + In addition to the output of `h`-height at 2.37 m-plot the path of the object from its + initial position to its position at 2.37 m away from the start. *Note: use your + `setdefaults.m` to set the plot defaults before outputting the result.* diff --git a/HW2/projectile.png b/HW2/projectile.png new file mode 100644 index 0000000..f544224 Binary files /dev/null and b/HW2/projectile.png differ diff --git a/HW2/projectile.svg b/HW2/projectile.svg new file mode 100644 index 0000000..dc73374 --- /dev/null +++ b/HW2/projectile.svg @@ -0,0 +1,334 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + 2.37 m + + + + v_mag + theta + + h + + 1.72 m + + diff --git a/README.md b/README.md index ca1565e..8059993 100644 --- a/README.md +++ b/README.md @@ -22,14 +22,21 @@ matlab/octave functions and programming best practices. **Office hours**: Mon 2:30-4:30pm and Thur 11am-1pm in Engineering II room 315 ## Teaching Assistants: -- Graduate: **TBD** -- Office hours: 2 hours / week in office **TBD** +- Graduate: Peiyu Zhang +- Office hours: Friday 9:00-11:00am in Engineering II room 315 +## Course Information **Prerequisite:** CE 3110, MATH 2410Q **Textbook:** Chapra, Steven, *Applied Numerical Methods with MATLAB for Engineers and Scientists* 3rd edition. +**Tools used:** [Matlab](https://www.mathworks.com/products/matlab.html), +[Octave](https://www.gnu.org/software/octave/) , [Github](https://github.com). + +**Recommended tools:** Github Desktop, git, Atom (text editor), Vim (text editor), +Jupiter notebook (with matlab or octave kernel) + ## Grading | Item | Percent | Requirement | diff --git a/lecture_03/file.txt b/lecture_03/file.txt new file mode 100644 index 0000000..0fb2c92 --- /dev/null +++ b/lecture_03/file.txt @@ -0,0 +1,5 @@ +computational mechanics +the dog had 4 legs and weighed 10.0 lbs +are you awake?computational mechanics +the dog had 4 legs and weighed 10.0 lbs +are you awake? \ No newline at end of file diff --git a/lecture_03/lecture_03.ipynb b/lecture_03/lecture_03.ipynb new file mode 100644 index 0000000..e205d15 --- /dev/null +++ b/lecture_03/lecture_03.ipynb @@ -0,0 +1,6077 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Matlab basic use\n", + "## 1- the environment, path and working directory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Matlab environment can be called by:\n", + "1. Starting the matlab executable (the gui)\n", + "2. Starting a jupyter notebook with Matlab kernel\n", + "3. Starting matlab with command-line interface (no gui)\n", + "\n", + "The main requirement is that matlab kernel (main matlab program) is running and accepting commands\n", + "\n", + "When you start, you can call matlab built-in functions or anything you write that is in your `MATLABPATH` or working directory (`pwd`)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MATLABPATH\n", + "\n", + "\t/usr/local/lib/python2.7/dist-packages/matlab_kernel/toolbox\n", + "\t/usr/local/lib/python2.7/dist-packages/pymatbridge/matlab\n", + "\t/usr/local/lib/python2.7/dist-packages/pymatbridge/matlab/usrprog\n", + "\t/usr/local/lib/python2.7/dist-packages/pymatbridge/matlab/util\n", + "\t/usr/local/lib/python2.7/dist-packages/pymatbridge/matlab/util/json_v0.2.2\n", + "\t/usr/local/lib/python2.7/dist-packages/pymatbridge/matlab/util/json_v0.2.2/json\n", + "\t/usr/local/lib/python2.7/dist-packages/pymatbridge/matlab/util/json_v0.2.2/json/java\n", + "\t/usr/local/lib/python2.7/dist-packages/pymatbridge/matlab/util/json_v0.2.2/test\n", + "\t/home/ryan/Documents/MATLAB\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/strfun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/datatypes\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/elfun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/ops\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/timefun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/elmat\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/datafun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/iofun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/mvm\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/randfun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/funfun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/general\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/polyfun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/matfun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/lang\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/specfun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/sparfun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/images\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/testframework/performance\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/testframework/parallel\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/optimfun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/testframework/ext\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/guide\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/testframework/measurement\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/icons\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/demos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/helptools\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/winfun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/winfun/NET\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/datamanager\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/verctrl\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/graph2d\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/graph3d\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/graphics\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/graphics/obsolete\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/plottools\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/scribe\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/scribe/obsolete\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/specgraph\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/uitools\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/uitools/obsolete\n", + "\t/usr/local/MATLAB/R2016a/toolbox/hdlcoder/matlabhdlcoder/matlabhdlcoder\n", + "\t/usr/local/MATLAB/R2016a/toolbox/hdlcoder/matlabhdlcoder\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/testframework/core\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/testframework/obsolete\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/hardware/stubs\n", + "\t/usr/local/MATLAB/R2016a/toolbox/local\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/datastoreio\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/codetools\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/codetools/embeddedoutputs\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/graphfun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/depfun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/mapreduceio\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/findfiles\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/targets/asap2/asap2/dataclasses\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/targets/asap2/asap2\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/targets/asap2/asap2/user\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/targets/common/can/blocks/dataclasses\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/targets/common/can/blocks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/targets/common/can/blocks/tlc_c\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/targets/common/tgtcommon\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/simulinkcoder/cgv/API\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/rtw/misra\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/simulinkcoder\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/simulinkcoder/templates\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/simulinkcoder/targets\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/targets/pil\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/targets/AUTOSAR/AUTOSAR/dataclasses\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/targets/AUTOSAR/AUTOSAR\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/accel\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/simulinkcoder_core\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/rtwdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/rtwdemos/rsimdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/simfeatures\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/simfeatures/modelreference\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/simfeatures/datadictionary\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sysarch/sysarch\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/simgeneral\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slde/examples\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/advisor\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/modeladvisor\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/modeladvisor/fixpt\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/automotive/fuelsys\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/components\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/dee\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/aerospace\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulinktest/core/simharness/simharness\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/frameedit\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/industrial\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/automotive\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/blocks/library\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/blocks/library/simulinkcoder\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/blocks/obsolete\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/dataclasses\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/blocks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/dataclasses\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/MPlayIO\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/dataobjectwizard\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/slresolve\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/units\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/resources\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sdi\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/core_templates\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulinktest/core/testsequence/testsequence\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/automotive/powerwindow\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sldependency\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/hmi\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/objectives\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slde/slde\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slde/slde/resources\n", + "\t/usr/local/MATLAB/R2016a/toolbox/stateflow/stateflow\n", + "\t/usr/local/MATLAB/R2016a/toolbox/stateflow/coder\n", + "\t/usr/local/MATLAB/R2016a/toolbox/stateflow/sfdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/stateflow/sftemplates\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/testmeaslib/general\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/blocks/sb2sl\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/powersys/DR/DR\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/reqmgt\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/reqmgt/mmutils\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/controllib/graphics\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/controllib/graphics/utils\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/controllib/graphics/plotoptions\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sledittimecheck\n", + "\t/usr/local/MATLAB/R2016a/toolbox/hdlcoder/slhdltemplates\n", + "\t/usr/local/MATLAB/R2016a/toolbox/distcomp\n", + "\t/usr/local/MATLAB/R2016a/toolbox/distcomp/distcomp\n", + "\t/usr/local/MATLAB/R2016a/toolbox/distcomp/user\n", + "\t/usr/local/MATLAB/R2016a/toolbox/distcomp/mpi\n", + "\t/usr/local/MATLAB/R2016a/toolbox/distcomp/parallel\n", + "\t/usr/local/MATLAB/R2016a/toolbox/distcomp/parallel/util\n", + "\t/usr/local/MATLAB/R2016a/toolbox/distcomp/lang\n", + "\t/usr/local/MATLAB/R2016a/toolbox/distcomp/cluster\n", + "\t/usr/local/MATLAB/R2016a/toolbox/distcomp/gpu\n", + "\t/usr/local/MATLAB/R2016a/toolbox/distcomp/array\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/codertarget\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/codertarget/rtw\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/codertarget/matlabcoder\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/simscape/simscapedemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/comm/templates\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/simulink\n", + "\t/usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdlcoderdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdlcoderdemos/matlabhdlcoderdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic5000/tic5000demos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/common/gl/sli/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/system/simulink\n", + "\t/usr/local/MATLAB/R2016a/toolbox/images/colorspaces\n", + "\t/usr/local/MATLAB/R2016a/toolbox/images/images\n", + "\t/usr/local/MATLAB/R2016a/toolbox/images/imdata\n", + "\t/usr/local/MATLAB/R2016a/toolbox/images/imuitools\n", + "\t/usr/local/MATLAB/R2016a/toolbox/images/iptformats\n", + "\t/usr/local/MATLAB/R2016a/toolbox/images/iptutils\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic6000\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic6000/rtw\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic6000/tfl\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic6000/utils\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic6000/blks/sysobj_mex\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic6000/blks/mex\n", + "\t/usr/local/MATLAB/R2016a/toolbox/distcomp/pctdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/appdesigner/appdesigner\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/mlreportgen/ppt\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/mlreportgen/ppt/ppt\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/mlreportgen/ppt/ppt/help\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/matlabcoder\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/matlabcoder/templates\n", + "\t/usr/local/MATLAB/R2016a/toolbox/dsp/templates\n", + "\t/usr/local/MATLAB/R2016a/toolbox/globaloptim\n", + "\t/usr/local/MATLAB/R2016a/toolbox/globaloptim/globaloptim\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/appdes/services\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/emlcodermex\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/powersys/powerdemo/power_electronics\n", + "\t/usr/local/MATLAB/R2016a/toolbox/pde/pdedemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slvnv/slvnvdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/sl_pir_cap\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/foundation\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/foundation/utils\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/foundation/utils/resource_config\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/foundation/blks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/foundation/blks/mex\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/foundation/blks/masks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/shared\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/shared/ti\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/shared/ti/mdlinfo\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/shared/ti/utils\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/shared/ti/blks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/shared/ti/blks/mex\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/shared/ti/blks/masks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/ARM/tfl\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/etargets/etargets\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/etargets/etargets/demoutils\n", + "\t/usr/local/MATLAB/R2016a/toolbox/optim/optim\n", + "\t/usr/local/MATLAB/R2016a/toolbox/optim\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/simscape/advisor/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/targetdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/hadoopserializer\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/external/engines/engine_api\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/siglib\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/performance\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/performance/performancea\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simevents/examples\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/hdlshared\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/local/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/uicomponents/uicomponents\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/uicomponents/uicomponents/pending\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/uicomponents/uicomponents/graphics\n", + "\t/usr/local/MATLAB/R2016a/toolbox/fixedpoint/fixedpointconverter\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/powersys/drives/drivesdemo\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/simscape/library/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/sdi\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/asynciolib\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/cmlink/api\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/toolboxmanagement/matlab_api\n", + "\t/usr/local/MATLAB/R2016a/toolbox/mpc/mpcdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/distcomp/mapreduce\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/networklib\n", + "\t/usr/local/MATLAB/R2016a/toolbox/dsp/dspdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/testmeaslib/simulink\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/controllib/general\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/imaqlib\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/equation_language/equation_language\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/slmetrics\n", + "\t/usr/local/MATLAB/R2016a/toolbox/vision/vision\n", + "\t/usr/local/MATLAB/R2016a/toolbox/vision/visiondata\n", + "\t/usr/local/MATLAB/R2016a/toolbox/vision/visionutilities\n", + "\t/usr/local/MATLAB/R2016a/toolbox/vision/visionutilities/visioninit\n", + "\t/usr/local/MATLAB/R2016a/toolbox/vision/visionutilities/visionmex\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/simscape/foundation/simscape\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/system/sfun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/toolbox_packaging\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink_data_dictionary/sldd\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/pdelib\n", + "\t/usr/local/MATLAB/R2016a/toolbox/compiler_sdk/java\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/scenarioconnector\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/scenarioconnector/ui\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/scenarioconnector/ui/toolstrip/modelsection\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/scenarioconnector/ui/toolstrip/filesection\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/editor/ui\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/comparisontool\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/mapping\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/mapping/callbacks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/mapping/util\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/toolstrip\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/toolstrip/open/streaming\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/toolstrip/help\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/toolstrip/open\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/toolstrip/session\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/toolstrip/report\n", + "\t/usr/local/MATLAB/R2016a/toolbox/globaloptim/globaloptimdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/econ/econ\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/common/dataservices/sli/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/sl_async_streaming\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/ccsblks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/ccslinkblks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/ccslinkblks/rtdxsimblks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/mdlinfo\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/tfl\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/util\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/rtw\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/envChecker\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/foundation/pjtgenerator\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/foundation/pjtgenerator/rtw\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/foundation/pjtgenerator/tgtpref2\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/foundation/pjtgenerator/profiler\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/foundation/pjtgenerator/mdlinfo\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/foundation/pjtgenerator/blks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/foundation/pjtgenerator/blks/masks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/foundation/pjtgenerator/blks/tlc_c\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/simscape/engine/core/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/system/coder\n", + "\t/usr/local/MATLAB/R2016a/toolbox/wavelet/wavelet\n", + "\t/usr/local/MATLAB/R2016a/toolbox/wavelet/wmultisig1d\n", + "\t/usr/local/MATLAB/R2016a/toolbox/wavelet/compression\n", + "\t/usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdlcommon\n", + "\t/usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdlcommon/modelcheckeradvisor\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/powersys/library\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slvnv/rmidemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/eda/board\n", + "\t/usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdllib/sl_lib\n", + "\t/usr/local/MATLAB/R2016a/toolbox/bioinfo/bioinfodata\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/coder/coder\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dsp/visionhdl/simulink/dsp\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/polyspace\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robust/rctdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sltemplate\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/common/dataservices/core/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/system/editor\n", + "\t/usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdlcoder\n", + "\t/usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdlcoder/hdlwa\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/targets/ecoder/ecoderdemos/dataclasses\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/targets/ecoder/ecoderdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/signal/signal\n", + "\t/usr/local/MATLAB/R2016a/toolbox/signal/sigtools\n", + "\t/usr/local/MATLAB/R2016a/toolbox/signal/sptoolgui\n", + "\t/usr/local/MATLAB/R2016a/toolbox/compiler/mlhadoop\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/images\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/wing_landing_gear\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/wing_landing_gear/images\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/cart_double_pendulum\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/cart_double_pendulum/images\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/stewart_platform\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/stewart_platform/images\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/double_crank_aiming\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/double_crank_aiming/images\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/bread_slicer\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/bread_slicer/images\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/import/stewart_platform\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/import/four_bar\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/radial_engine\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/radial_engine/images\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/double_wishbone_suspension\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/double_wishbone_suspension/images\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/import/robot\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/cardan_gear\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/cardan_gear/images\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/windshield_wiper\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/windshield_wiper/images\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/backhoe\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/robotic_wrist\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/carousel\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/welding_robot\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/import/robot_stepfiles\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/potters_wheel\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/linear_actuator\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/pto_shaft\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/cam_flapping_wing\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/fixedandfloat/fxpdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/vision/visiondemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nndemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nndemos/nndatasets\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/hwconnectinstaller\n", + "\t/usr/local/MATLAB/R2016a/help/toolbox/comm/examples\n", + "\t/usr/local/MATLAB/R2016a/toolbox/bioinfo/bioinfo\n", + "\t/usr/local/MATLAB/R2016a/toolbox/bioinfo/biolearning\n", + "\t/usr/local/MATLAB/R2016a/toolbox/bioinfo/microarray\n", + "\t/usr/local/MATLAB/R2016a/toolbox/bioinfo/mass_spec\n", + "\t/usr/local/MATLAB/R2016a/toolbox/bioinfo/proteins\n", + "\t/usr/local/MATLAB/R2016a/toolbox/bioinfo/biomatrices\n", + "\t/usr/local/MATLAB/R2016a/toolbox/bioinfo/graphtheory\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/external/interfaces/webservices/restful\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/external/interfaces\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/external/interfaces/webservices\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/slci/slci\n", + "\t/usr/local/MATLAB/R2016a/toolbox/sldv/sldv\n", + "\t/usr/local/MATLAB/R2016a/toolbox/fixedpoint/fixedpoint\n", + "\t/usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdlslrt\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robotics/robotalgs\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slvnv/metrics\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/pe/library/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slvnv/do178b\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/powersys/DR/DRdemo\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/sl_coverage_configset\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robotics/robotsimulink\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robotics/robotsimulink/robotslros\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robotics/robotsimulink/robotslros/registry\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/system/coreblocks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simevents/simevents\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simevents/simevents/icons\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/common/external/mli/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/timeseries\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/hds\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/addons_zip\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/xrel\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slvnv/simcovdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/apps\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slvnv/iec61508\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/sldv_sfcn/sldv_sfcn\n", + "\t/usr/local/MATLAB/R2016a/help/toolbox/slcontrol/examples\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robotics/robotcore\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/imagesci\n", + "\t/usr/local/MATLAB/R2016a/toolbox/econ/econdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/sldv\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/codedescriptor_core\n", + "\t/usr/local/MATLAB/R2016a/toolbox/curvefit/curvefit\n", + "\t/usr/local/MATLAB/R2016a/toolbox/curvefit/splines\n", + "\t/usr/local/MATLAB/R2016a/toolbox/curvefit/sftoolgui\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic5000\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic5000/blks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic5000/blks/mex\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic5000/blks/masks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dastudio/dpvu/dpvu\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dastudio/dpvu/dpvu/metamodel\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dastudio/dpvu/dpvu/actions\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/cgxe/cgxe\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/controllib/requirements\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/testconsole\n", + "\t/usr/local/MATLAB/R2016a/toolbox/instrument/instrumentdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dsp/vision/matlab/utilities\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dsp/vision/simulink/utilities\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dsp/vision/matlab/utilities/mex\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dsp/vision/simulink/utilities/mex\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dsp/vision/matlab/utilities/init\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dsp/vision/matlab/vision\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dsp/vision/simulink/vision\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/cnn\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/sl_messages\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simbio/simbiodemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/uitools/uicomponents/components\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/mlreportgen/dom\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/mlreportgen/dom/dom\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/mlreportgen/dom/dom/help\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/simscape/engine/sli/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/operatingsystem/linux/blks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/operatingsystem/linux/blks/masks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/operatingsystem/linux/blks/mex\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/operatingsystem/linux/src\n", + "\t/usr/local/MATLAB/R2016a/toolbox/realtime/realtime/hwconnection\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/targets/ecoder\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/targets/mpt\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/targets/mpt/mpt\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/targets/mpt/user_specific\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/embeddedcoder\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/slproject/examples\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slcontrol/slctrldemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/compiler\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/powersys/facts/factsdemo\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slvnv/simcoverage\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/external/engines/python\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/common/dataservices/gui/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/fuzzy/fuzdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/fininst/fininst\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sps/sps\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/common/units/mli/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/coder\n", + "\t/usr/local/MATLAB/R2016a/toolbox/sldv/slicer\n", + "\t/usr/local/MATLAB/R2016a/toolbox/sldv/slicer/gui\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/codegendemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/wavelet/wavedemo\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/addons\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/addons/cef\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/addons/fallbackmanager\n", + "\t/usr/local/MATLAB/R2016a/toolbox/compiler/compilerdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/mapgeodesy\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/derivedSignals\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/sourceBlocks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/docexamples\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/cgir_fe\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/float2fixed\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/float2fixed/demos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/float2fixed/dmm_emlauthoring\n", + "\t/usr/local/MATLAB/R2016a/toolbox/fuzzy/fuzzy\n", + "\t/usr/local/MATLAB/R2016a/toolbox/fuzzy/fuzzyutil\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic2000\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic2000/rtw\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic2000/utils\n", + "\t/usr/local/MATLAB/R2016a/toolbox/finance/finance\n", + "\t/usr/local/MATLAB/R2016a/toolbox/finance/calendar\n", + "\t/usr/local/MATLAB/R2016a/toolbox/finance/finsupport\n", + "\t/usr/local/MATLAB/R2016a/toolbox/finance/ftseries\n", + "\t/usr/local/MATLAB/R2016a/toolbox/realtime\n", + "\t/usr/local/MATLAB/R2016a/toolbox/realtime/realtime\n", + "\t/usr/local/MATLAB/R2016a/toolbox/realtime/realtime/rtw\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/optimlib\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/upgradeadvisor\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/common/gl/mli/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/spcuilib\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/pe/advisor/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/imaq/imaqblks/imaqblks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/imaq/imaqblks/imaqmex\n", + "\t/usr/local/MATLAB/R2016a/toolbox/imaq/imaqblks/imaqmasks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/sl_web_widgets\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/common/foundation/mli/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/fixedpoint/fixedpointtool\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/compiled_model_interface\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/simscape/engine/mli/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/hwconnectinstaller/common\n", + "\t/usr/local/MATLAB/R2016a/toolbox/database/dbdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/javabuilder/javabuilder\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/rptgen\n", + "\t/usr/local/MATLAB/R2016a/toolbox/images/imdemos\n", + "\t/usr/local/MATLAB/R2016a/help/toolbox/dsp/examples\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/slvnv\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slvnv/slvnv\n", + "\t/usr/local/MATLAB/R2016a/toolbox/stats/gpu\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/simscape/simscape/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/cefclient\n", + "\t/usr/local/MATLAB/R2016a/toolbox/sl3d/sl3ddemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/slproject/templates\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/spcuilib/slscopes\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/supportpackagemanagement\n", + "\t/usr/local/MATLAB/R2016a/toolbox/control/ctrldemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dspblks/dspblks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dspblks/dspmex\n", + "\t/usr/local/MATLAB/R2016a/toolbox/ident/iddemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/ident/iddemos/examples\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/idelinkdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/ccsdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/ccsdemos/util\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/eda/edagraph\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/external/interfaces/webservices/wsdl\n", + "\t/usr/local/MATLAB/R2016a/toolbox/fixedpoint/fidemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/map/map\n", + "\t/usr/local/MATLAB/R2016a/toolbox/map/mapgeodesy\n", + "\t/usr/local/MATLAB/R2016a/toolbox/map/mapdisp\n", + "\t/usr/local/MATLAB/R2016a/toolbox/map/mapformats\n", + "\t/usr/local/MATLAB/R2016a/toolbox/map/mapproj\n", + "\t/usr/local/MATLAB/R2016a/toolbox/map/mapdata\n", + "\t/usr/local/MATLAB/R2016a/toolbox/map/mapdata/sdts\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/statslib\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/statslib/sensitivity\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/powersys/drives/drives\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slcontrol/slcontrol\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slcontrol/slctrlguis\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slcontrol/slctrlutil\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slcontrol/slctrlobsolete\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/spf/matlabservices\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dsp/dialog\n", + "\t/usr/local/MATLAB/R2016a/toolbox/imaq/imaqdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/symbolic/symbolicdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/instrument/instrument\n", + "\t/usr/local/MATLAB/R2016a/toolbox/instrument/instrumentblks/instrumentblks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/instrument/instrumentblks/instrumentmex\n", + "\t/usr/local/MATLAB/R2016a/toolbox/instrument/instrumentblks/instrumentmasks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/eml/eml\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/profile\n", + "\t/usr/local/MATLAB/R2016a/toolbox/database/database\n", + "\t/usr/local/MATLAB/R2016a/toolbox/database/vqb\n", + "\t/usr/local/MATLAB/R2016a/toolbox/map/mapdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/cxxfe_mi/cxxfe_mi\n", + "\t/usr/local/MATLAB/R2016a/toolbox/stats/mlearnapp\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/eda/fpgaautomation\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/eda/fpgaautomation/obsolete\n", + "\t/usr/local/MATLAB/R2016a/toolbox/comm/commdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/pe/pedemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slrequirements\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/slcontrollib\n", + "\t/usr/local/MATLAB/R2016a/toolbox/geoweb/geoweb\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/configset\n", + "\t/usr/local/MATLAB/R2016a/toolbox/comm/cdma2000\n", + "\t/usr/local/MATLAB/R2016a/toolbox/signal/signalanalyzer\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robotics/robotics\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/can\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/can/canblks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/can/canmasks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/can/canmex\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/fixedandfloat\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/fixedandfloat/obsolete\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/common/data/mli/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/foundation/mech\n", + "\t/usr/local/MATLAB/R2016a/toolbox/imaq/imaq\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/pm_visimpl/pm_visimpl\n", + "\t/usr/local/MATLAB/R2016a/toolbox/bioinfo/biodemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/sigbldr\n", + "\t/usr/local/MATLAB/R2016a/toolbox/dsp/dsp\n", + "\t/usr/local/MATLAB/R2016a/toolbox/dsp/dsputilities\n", + "\t/usr/local/MATLAB/R2016a/toolbox/dsp/dsputilities/dspinit\n", + "\t/usr/local/MATLAB/R2016a/toolbox/dsp/dsputilities/dspmex\n", + "\t/usr/local/MATLAB/R2016a/toolbox/dsp/dsp/compiled\n", + "\t/usr/local/MATLAB/R2016a/toolbox/symbolic/symbolic\n", + "\t/usr/local/MATLAB/R2016a/toolbox/optim/optimdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/curvefit/curvefitdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/instrument\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/common/external/library/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/slproject\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/slproject/menu\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/mech/mech\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/mech/importer\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/simulation_data_repository\n", + "\t/usr/local/MATLAB/R2016a/help/toolbox/control/examples\n", + "\t/usr/local/MATLAB/R2016a/help/toolbox/vision/examples\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/powersys/powerdemo\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/powersys/powerdemo/meascontrol\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/powersys/powerdemo/power_utility\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/ssci/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sl_async_streaming\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/simulink/slcheck_services\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/measure\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/powersys/powerdemo/simple\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/trace\n", + "\t/usr/local/MATLAB/R2016a/toolbox/compiler_sdk\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/diagnostic\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/powersys/templates\n", + "\t/usr/local/MATLAB/R2016a/toolbox/sldv/sldvdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/repository\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/sta/repository/util\n", + "\t/usr/local/MATLAB/R2016a/toolbox/stats/stats\n", + "\t/usr/local/MATLAB/R2016a/toolbox/stats/classreg\n", + "\t/usr/local/MATLAB/R2016a/toolbox/stats/clustering\n", + "\t/usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdllib/ml_lib\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/iodata/ioformat\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/audiovideo\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/webcam\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/mldatx\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robust/robust\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robust/rctlmi\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robust/rctutil\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robust/rctobsolete/robust\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robust/rctobsolete/lmi\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robust/rctobsolete/mutools/commands\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robust/rctobsolete/mutools/subs\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/codeinstrum/codeinstrum\n", + "\t/usr/local/MATLAB/R2016a/toolbox/control/control\n", + "\t/usr/local/MATLAB/R2016a/toolbox/control/ctrlmodels\n", + "\t/usr/local/MATLAB/R2016a/toolbox/control/ctrlanalysis\n", + "\t/usr/local/MATLAB/R2016a/toolbox/control/ctrldesign\n", + "\t/usr/local/MATLAB/R2016a/toolbox/control/ctrlplots\n", + "\t/usr/local/MATLAB/R2016a/toolbox/control/ctrlguis\n", + "\t/usr/local/MATLAB/R2016a/toolbox/control/ctrlobsolete\n", + "\t/usr/local/MATLAB/R2016a/toolbox/control/ctrlutil\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/simscape/compiler/sli/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dastudio\n", + "\t/usr/local/MATLAB/R2016a/toolbox/stats/statsdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/curvefitlib\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/slpir\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/eda/fpgabase\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/common/dataservices/mli/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/hdlshared/hdlshared_gui\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/eda/hdlparser\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/network_engine/network_engine\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/intelhost/tfl\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/coverage\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dsp/hdl\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/spf/matlabhost\n", + "\t/usr/local/MATLAB/R2016a/toolbox/mpc/mpc\n", + "\t/usr/local/MATLAB/R2016a/toolbox/mpc/mpcguis\n", + "\t/usr/local/MATLAB/R2016a/toolbox/mpc/mpcobsolete\n", + "\t/usr/local/MATLAB/R2016a/toolbox/mpc/mpcutils\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/slexportprevious\n", + "\t/usr/local/MATLAB/R2016a/toolbox/sl3d/sl3d\n", + "\t/usr/local/MATLAB/R2016a/toolbox/comm/comm\n", + "\t/usr/local/MATLAB/R2016a/toolbox/comm/commutilities/comminit\n", + "\t/usr/local/MATLAB/R2016a/toolbox/comm/commutilities/commmex\n", + "\t/usr/local/MATLAB/R2016a/toolbox/comm/commutilities\n", + "\t/usr/local/MATLAB/R2016a/toolbox/comm/commdeprecated\n", + "\t/usr/local/MATLAB/R2016a/toolbox/comm/comm/compiled\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/connectivity\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/targets/connectivity\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/slhistory\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/simscape/templates\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/spreadsheet\n", + "\t/usr/local/MATLAB/R2016a/toolbox/fixpoint\n", + "\t/usr/local/MATLAB/R2016a/toolbox/fixpoint/fpca\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robotics/ros\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/ne_sli/ne_sli\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dsp/simulink/dsp\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/system\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/eda/fil\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/eda/fil/filmapi\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/rtiostream\n", + "\t/usr/local/MATLAB/R2016a/toolbox/pde\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/powersys/powersys\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/hotpluglib\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/multimedia\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/testmeaslib/graphics\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/addons_toolbox\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/imageslib\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/pm_sli/pm_sli\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/dastudio/seqdiagram\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/templates\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/gui/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/ident/ident\n", + "\t/usr/local/MATLAB/R2016a/toolbox/ident/nlident\n", + "\t/usr/local/MATLAB/R2016a/toolbox/ident/idobsolete\n", + "\t/usr/local/MATLAB/R2016a/toolbox/ident/idguis\n", + "\t/usr/local/MATLAB/R2016a/toolbox/ident/idutils\n", + "\t/usr/local/MATLAB/R2016a/toolbox/ident/idrecursive\n", + "\t/usr/local/MATLAB/R2016a/toolbox/ident/idhelp\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/powersys/powerdemo/machines\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/operatingsystem/windows/blks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/operatingsystem/windows/blks/masks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/target/extensions/operatingsystem/windows/blks/mex\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/networklib\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/sli/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/sm/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/advisor\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/filterdesignlib\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/connector/connector\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/foundation\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/foundation/util\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/foundation/errorhandler\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/foundation/xmakefile\n", + "\t/usr/local/MATLAB/R2016a/toolbox/idelink/foundation/hookpoints\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/comparisons\n", + "\t/usr/local/MATLAB/R2016a/toolbox/signal/sigdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/configtools\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simbio/simbio\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/external/interfaces/python\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/m3i\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/toolstrip\n", + "\t/usr/local/MATLAB/R2016a/toolbox/dsp/dspdeployabledemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/slvnv/styleguide\n", + "\t/usr/local/MATLAB/R2016a/help/toolbox/robust/examples\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/deviceplugindetection\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/simscape/compiler/mli/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/gui/gfx/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/import/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/compiler/java\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/pe/utils/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/rtw/rtw\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/foundation\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/foundation/build\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/foundation/build/tools/registry\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/foundation/tfl\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/foundation/tfl/AUTOSAR/AUTOSAR4p0/IFX\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/foundation/tfl/AUTOSAR/AUTOSAR4p0/IFL\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/foundation/tfl/gui\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/foundation/templates\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/simtargets\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/mech/mechdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/maputils\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/foundation/passmanager\n", + "\t/usr/local/MATLAB/R2016a/toolbox/simulink/simulink/iodata/iomap\n", + "\t/usr/local/MATLAB/R2016a/toolbox/fininst/fininstdemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nncontrol\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnadapt\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nndatafun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnderivative\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nndistance\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nndivision\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nninitlayer\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nninitnetwork\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nninitweight\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnlearn\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnnetfun\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnnetinput\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnnetwork\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnperformance\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnplot\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnprocess\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnsearch\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nntopology\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nntrain\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nntransfer\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnweight\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnguis\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnobsolete\n", + "\t/usr/local/MATLAB/R2016a/toolbox/nnet/nnutils\n", + "\t/usr/local/MATLAB/R2016a/toolbox/matlab/addons_product\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/tracking/trackinglib\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/simulink/sysarch/sysarch\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/slreportgen/reportexplorer\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/embeddedcoder_templates\n", + "\t/usr/local/MATLAB/R2016a/toolbox/coder/wizard\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/sm/core/m\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples/ros\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples/ros/helpers\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples/robotalgs\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples/robotalgs/helpers\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples/robotcore\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples/robotcore/helpers\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples/robotsimulink\n", + "\t/usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples/robotsimulink/helpers\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/controllib/engine\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/controllib/engine/numerics\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/controllib/engine/options\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/controllib/engine/optim\n", + "\t/usr/local/MATLAB/R2016a/toolbox/shared/controllib/engine/blocks\n", + "\t/usr/local/MATLAB/R2016a/toolbox/dsp/filterdesign\n", + "\t/usr/local/MATLAB/R2016a/toolbox/finance/findemos\n", + "\t/usr/local/MATLAB/R2016a/toolbox/physmod/powersys/facts/facts\n" + ] + } + ], + "source": [ + "path" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + "/home/ryan/Documents/UConn/ME3255/me3255_S2017/lecture_03\n" + ] + } + ], + "source": [ + "pwd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "path" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Assignments (`=`-operator)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Matlab is interpreted language so each line of code (either saved text file or command-line) is executed as a standalone command\n", + "\n", + "These are reffered to \"scripts\"" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 40\n" + ] + } + ], + "source": [ + "a=10; % line one assigns a to 10\n", + "b=a*3; % line two assigns b to 10 times 3 by calling 'a' from line one\n", + "a+b % line three does not assign anything directly, but leaving off the \";\" prints the result\n", + " % ans" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Matlab has a number of \"objects\" that you can assign to variables\n", + "1. arrays (vectors and matrices `[`...`]`) \n", + "2. strings (text `\"`...`\"` )\n", + "3. cells (combination of strings, text, even function calls `{`...`}`)\n", + "3. functions (both built-in, defined or developed)\n", + "4. and more... (classes defined by `classdef` - you can create your own object to help organize data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1- Arrays" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Default in matlab is that when you assign a value to a variable, it is stored as an array\n", + "\n", + "arrays are N x M x ... values of integers or floating point numbers or complex integers/floating point numbers\n", + "\n", + "Use the parantheses to access values in an array `...(n,m)`" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 1\n" + ] + } + ], + "source": [ + "a=10; % a is 1x1 array where a(1,1)==10\n", + "a(1,1)==10\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[0;31mIndex exceeds matrix dimensions.\n", + "\u001b[0m" + ] + } + ], + "source": [ + "a(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A =\n", + "\n", + " 1 2 3\n", + " 4 5 6\n", + " 7 8 9\n", + " 10 11 12\n", + "\n", + "size of A is 4 x 3\n", + "\n", + "ans =\n", + "\n", + " 7\n", + "\n", + "\n", + "ans =\n", + "\n", + " 5\n" + ] + } + ], + "source": [ + "A = [1 2 3;4,5,6;7,8,9;10,11,12]\n", + "fprintf('size of A is %i x %i\\n',size(A))\n", + "A(3,1)\n", + "A(6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "vectors are either 1xN or Nx1 arrays for row and column" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "v_row =\n", + "\n", + " 1 2 3\n", + "\n", + "\n", + "v_column =\n", + "\n", + " 1\n", + " 2\n", + " 3\n" + ] + } + ], + "source": [ + "v_row = [1,2,3] %row vector\n", + "v_column = [1;2;3] %column vector\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Matrices are MxN arrays\n", + "the `:`-symbol can substitute for a counting" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 1 2 3\n" + ] + } + ], + "source": [ + "A(1,:) % the colon assumes you want the first value, 1, counting up by 1 to the last value, 4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also use every 2nd value or any other integer up to `end` which is the largest value of that row or column of the array" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 1\n", + " 7\n" + ] + } + ], + "source": [ + "A(1:2:end,1) % you can also use `end` " + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 1\n", + " 4\n", + " 7\n", + " 10\n", + " 2\n", + " 5\n", + " 8\n", + " 11\n", + " 3\n", + " 6\n", + " 9\n", + " 12\n" + ] + } + ], + "source": [ + "A(:)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In general, arrays can be any size \n", + "\n", + "take rolling 4 die and determining the sum of the components" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "A_6666 = zeros(6,6,6,6); %make a 6 x 6 x 6 x 6 array (1296 different values)\n", + "for i=1:6\n", + " for j=1:6\n", + " for k=1:6\n", + " for l=1:6\n", + " A_6666(i,j,k,l)=i+j+k+l; % each value is the sum of the indices\n", + " end\n", + " end\n", + " end\n", + "end\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 14\n", + "\n", + "\n", + "ans =\n", + "\n", + " 3.4170\n" + ] + } + ], + "source": [ + "mean(A_6666(:))\n", + "std(A_6666(:))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 12\n" + ] + } + ], + "source": [ + "A_6666(1,4,2,5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cells combine different size arrays and text\n", + "### but, you cannot use math operators 'binary operators'" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "C={};\n", + "C{1}=linspace(0,1,10);\n", + "C{2}=linspace(0,1,3);\n", + "C{'z'}='holy cow';" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 3.5185\n" + ] + } + ], + "source": [ + "C{1}*C{1}'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Strings can be combined and printed" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + "computational mechanics\n" + ] + } + ], + "source": [ + "string1 = 'computational'; string2 = 'mechanics';\n", + "[string1, ' ', string2]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "use `fprintf` to format strings and numbers for output and `sprintf` to save variables\n" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "computational mechanics\n", + "\n", + "\n", + "string =\n", + "\n", + "the dog had 4 legs and weighed 10.0 lbs\n" + ] + } + ], + "source": [ + "fprintf([string1,' ',string2,'\\n\\n'])\n", + "string = sprintf('the dog had %i legs and weighed %1.1f lbs',4,10.0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "the `\\` signifies a special character e.g. `\\n` = newline, `\\t` = tab\n", + "\n", + "to actually print the \"\\\", use `\\\\`" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\\\n" + ] + } + ], + "source": [ + "fprintf('\\\\')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## This is helpful to create reports of computed data" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 23\n", + "\n", + "\n", + "ans =\n", + "\n", + " 1\n", + "\n", + "\n", + "ans =\n", + "\n", + " 39\n", + "\n", + "\n", + "ans =\n", + "\n", + " 1\n", + "\n", + "\n", + "ans =\n", + "\n", + " 14\n" + ] + } + ], + "source": [ + "%fid = fopen('file.txt','w');\n", + "fprintf(fid,[string1, ' ', string2])\n", + "fprintf(fid,'\\n')\n", + "fprintf(fid,string)\n", + "fprintf(fid,'\\n')\n", + "fprintf(fid,'are you awake?')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Math operators (=, +, -, /, *, ^)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Because matlab assumes all variables are matrices, then all operators are matrix operations" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 20\r\n" + ] + } + ], + "source": [ + "a+a % add two 1x1 arrays" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 2 4 6\n", + " 8 10 12\n", + " 14 16 18\n", + " 20 22 24\n", + "\n" + ] + } + ], + "source": [ + "A+A % add two 4 x 3 arrays" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 14 32 50 68\n", + " 32 77 122 167\n", + " 50 122 194 266\n", + " 68 167 266 365\n" + ] + } + ], + "source": [ + "A*A'" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 1 4 9\n", + " 16 25 36\n", + " 49 64 81\n", + " 100 121 144\n" + ] + } + ], + "source": [ + "A.^2" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 1 4 9\n", + " 16 25 36\n", + " 49 64 81\n", + " 100 121 144\n" + ] + } + ], + "source": [ + "A.*A" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[\b> In pymat_eval (line 31)\n", + " In matlabserver (line 24)]\b \n", + "[\bWarning: Rank deficient, rank = 2, tol = 1.696862e-14.]\b \n", + "\n", + "ans =\n", + "\n", + " 1.0000 0 0 -0.0000\n", + " 0.6667 0 0 0.3333\n", + " 0.3333 0 0 0.6667\n", + " 0.0000 0 0 1.0000\n" + ] + } + ], + "source": [ + "A/A" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/ Slash or right matrix divide.\n", + " A/B is the matrix division of B into A, which is roughly the\n", + " same as A*INV(B) , except it is computed in a different way.\n", + " More precisely, A/B = (B'\\A')'. See MLDIVIDE for details.\n", + " \n", + " C = MRDIVIDE(A,B) is called for the syntax 'A / B' when A or B is an\n", + " object.\n", + " \n", + " See also MLDIVIDE, RDIVIDE, LDIVIDE.\n", + "\n", + " Reference page in Doc Center\n", + " doc mrdivide\n", + "\n", + " Other functions named mrdivide\n", + "\n", + " codistributed/mrdivide gf/mrdivide laurpoly/mrdivide\n", + " duration/mrdivide gpuArray/mrdivide StaticModel/mrdivide\n", + " DynamicSystem/mrdivide LagOp/mrdivide timeseries/mrdivide\n", + " fints/mrdivide\n" + ] + } + ], + "source": [ + "help /" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To accomplish one-by-one operations, need to include a `.`" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 1 1 1\n", + " 1 1 1\n", + " 1 1 1\n", + " 1 1 1\n", + "\n" + ] + } + ], + "source": [ + "A./A" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But, for 1x1 arrays, these are considered scalars and you get a free-pass" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 10 20 30\n", + " 40 50 60\n", + " 70 80 90\n", + " 100 110 120\n", + "\n" + ] + } + ], + "source": [ + "a*A % where a=10 and A is 1:12 in a 3 x 4 matrix" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Some built in Matlab functions (e.g. the reasons to run Matlab)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "t_linear =\n", + "\n", + " Columns 1 through 7\n", + "\n", + " 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000\n", + "\n", + " Columns 8 through 11\n", + "\n", + " 0.7000 0.8000 0.9000 1.0000\n" + ] + } + ], + "source": [ + "t_linear=linspace(0,1,11)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "t_log =\n", + "\n", + " 1 10 100\n" + ] + } + ], + "source": [ + "t_log = logspace(0,2,3) % log interval from 10^0 to 10^2 split into 3 values" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'logspace' is a function from the file /usr/share/octave/4.0.0/m/general/logspace.m\n", + "\n", + " -- Function File: logspace (A, B)\n", + " -- Function File: logspace (A, B, N)\n", + " -- Function File: logspace (A, pi, N)\n", + " Return a row vector with N elements logarithmically spaced from\n", + " 10^A to 10^B.\n", + "\n", + " If N is unspecified it defaults to 50.\n", + "\n", + " If B is equal to pi, the points are between 10^A and pi, _not_ 10^A\n", + " and 10^pi, in order to be compatible with the corresponding MATLAB\n", + " function.\n", + "\n", + " Also for compatibility with MATLAB, return the second argument B if\n", + " fewer than two values are requested.\n", + "\n", + " See also: linspace.\n", + "\n", + "Additional help for built-in functions and operators is\n", + "available in the online version of the manual. Use the command\n", + "'doc ' to search the manual index.\n", + "\n", + "Help and information about Octave is also available on the WWW\n", + "at http://www.octave.org and via the help@octave.org\n", + "mailing list.\n" + ] + } + ], + "source": [ + "help logspace" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## When using the command prompt, anything in your path or working directory can be run either as a script, function or class (to define objects)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%myscript" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When using the GUI, your command history is saved, but it is better to save your work either as a script or a function or combination of both\n", + "\n", + "Creating a default graph script:" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "set(0, 'defaultAxesFontSize', 16)\n", + "set(0,'defaultTextFontSize',14)\n", + "set(0,'defaultLineLineWidth',3)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(t_linear,t_linear.^2)\n", + "xlabel('time (s)')\n", + "ylabel('displacement (m)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#EOL" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Graphics can be produced with a number of functions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2-D plots, 3-D plots, contour plots, 3D contour plots ... " + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Z =\n", + "\n", + " Columns 1 through 8:\n", + "\n", + " 0.00000 0.17100 0.28800 0.35700 0.38400 0.37500 0.33600 0.27300\n", + " -0.17100 0.00000 0.12240 0.20160 0.24300 0.25200 0.23400 0.19440\n", + " -0.28800 -0.12240 0.00000 0.08400 0.13440 0.15600 0.15360 0.13200\n", + " -0.35700 -0.20160 -0.08400 0.00000 0.05460 0.08400 0.09240 0.08400\n", + " -0.38400 -0.24300 -0.13440 -0.05460 0.00000 0.03300 0.04800 0.04860\n", + " -0.37500 -0.25200 -0.15600 -0.08400 -0.03300 0.00000 0.01800 0.02400\n", + " -0.33600 -0.23400 -0.15360 -0.09240 -0.04800 -0.01800 0.00000 0.00840\n", + " -0.27300 -0.19440 -0.13200 -0.08400 -0.04860 -0.02400 -0.00840 0.00000\n", + " -0.19200 -0.13860 -0.09600 -0.06300 -0.03840 -0.02100 -0.00960 -0.00300\n", + " -0.09900 -0.07200 -0.05040 -0.03360 -0.02100 -0.01200 -0.00600 -0.00240\n", + " 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000\n", + " 0.09900 0.07200 0.05040 0.03360 0.02100 0.01200 0.00600 0.00240\n", + " 0.19200 0.13860 0.09600 0.06300 0.03840 0.02100 0.00960 0.00300\n", + " 0.27300 0.19440 0.13200 0.08400 0.04860 0.02400 0.00840 -0.00000\n", + " 0.33600 0.23400 0.15360 0.09240 0.04800 0.01800 -0.00000 -0.00840\n", + " 0.37500 0.25200 0.15600 0.08400 0.03300 0.00000 -0.01800 -0.02400\n", + " 0.38400 0.24300 0.13440 0.05460 -0.00000 -0.03300 -0.04800 -0.04860\n", + " 0.35700 0.20160 0.08400 -0.00000 -0.05460 -0.08400 -0.09240 -0.08400\n", + " 0.28800 0.12240 0.00000 -0.08400 -0.13440 -0.15600 -0.15360 -0.13200\n", + " 0.17100 -0.00000 -0.12240 -0.20160 -0.24300 -0.25200 -0.23400 -0.19440\n", + " 0.00000 -0.17100 -0.28800 -0.35700 -0.38400 -0.37500 -0.33600 -0.27300\n", + "\n", + " Columns 9 through 16:\n", + "\n", + " 0.19200 0.09900 0.00000 -0.09900 -0.19200 -0.27300 -0.33600 -0.37500\n", + " 0.13860 0.07200 0.00000 -0.07200 -0.13860 -0.19440 -0.23400 -0.25200\n", + " 0.09600 0.05040 0.00000 -0.05040 -0.09600 -0.13200 -0.15360 -0.15600\n", + " 0.06300 0.03360 0.00000 -0.03360 -0.06300 -0.08400 -0.09240 -0.08400\n", + " 0.03840 0.02100 0.00000 -0.02100 -0.03840 -0.04860 -0.04800 -0.03300\n", + " 0.02100 0.01200 0.00000 -0.01200 -0.02100 -0.02400 -0.01800 0.00000\n", + " 0.00960 0.00600 0.00000 -0.00600 -0.00960 -0.00840 0.00000 0.01800\n", + " 0.00300 0.00240 0.00000 -0.00240 -0.00300 0.00000 0.00840 0.02400\n", + " 0.00000 0.00060 0.00000 -0.00060 0.00000 0.00300 0.00960 0.02100\n", + " -0.00060 0.00000 0.00000 0.00000 0.00060 0.00240 0.00600 0.01200\n", + " 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000\n", + " 0.00060 -0.00000 0.00000 0.00000 -0.00060 -0.00240 -0.00600 -0.01200\n", + " -0.00000 -0.00060 0.00000 0.00060 0.00000 -0.00300 -0.00960 -0.02100\n", + " -0.00300 -0.00240 0.00000 0.00240 0.00300 0.00000 -0.00840 -0.02400\n", + " -0.00960 -0.00600 0.00000 0.00600 0.00960 0.00840 0.00000 -0.01800\n", + " -0.02100 -0.01200 0.00000 0.01200 0.02100 0.02400 0.01800 0.00000\n", + " -0.03840 -0.02100 0.00000 0.02100 0.03840 0.04860 0.04800 0.03300\n", + " -0.06300 -0.03360 0.00000 0.03360 0.06300 0.08400 0.09240 0.08400\n", + " -0.09600 -0.05040 0.00000 0.05040 0.09600 0.13200 0.15360 0.15600\n", + " -0.13860 -0.07200 0.00000 0.07200 0.13860 0.19440 0.23400 0.25200\n", + " -0.19200 -0.09900 0.00000 0.09900 0.19200 0.27300 0.33600 0.37500\n", + "\n", + " Columns 17 through 21:\n", + "\n", + " -0.38400 -0.35700 -0.28800 -0.17100 0.00000\n", + " -0.24300 -0.20160 -0.12240 0.00000 0.17100\n", + " -0.13440 -0.08400 0.00000 0.12240 0.28800\n", + " -0.05460 0.00000 0.08400 0.20160 0.35700\n", + " 0.00000 0.05460 0.13440 0.24300 0.38400\n", + " 0.03300 0.08400 0.15600 0.25200 0.37500\n", + " 0.04800 0.09240 0.15360 0.23400 0.33600\n", + " 0.04860 0.08400 0.13200 0.19440 0.27300\n", + " 0.03840 0.06300 0.09600 0.13860 0.19200\n", + " 0.02100 0.03360 0.05040 0.07200 0.09900\n", + " 0.00000 0.00000 0.00000 0.00000 0.00000\n", + " -0.02100 -0.03360 -0.05040 -0.07200 -0.09900\n", + " -0.03840 -0.06300 -0.09600 -0.13860 -0.19200\n", + " -0.04860 -0.08400 -0.13200 -0.19440 -0.27300\n", + " -0.04800 -0.09240 -0.15360 -0.23400 -0.33600\n", + " -0.03300 -0.08400 -0.15600 -0.25200 -0.37500\n", + " 0.00000 -0.05460 -0.13440 -0.24300 -0.38400\n", + " 0.05460 0.00000 -0.08400 -0.20160 -0.35700\n", + " 0.13440 0.08400 0.00000 -0.12240 -0.28800\n", + " 0.24300 0.20160 0.12240 0.00000 -0.17100\n", + " 0.38400 0.35700 0.28800 0.17100 0.00000\n", + "\n" + ] + } + ], + "source": [ + "x=linspace(-1,1,21); y=linspace(-1,1,21);\n", + "[X,Y]=meshgrid(x,y);\n", + "Z=(X.*Y.^3-X.^3.*Y)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_2a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_3a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_4a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_5a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_6a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_7a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_8a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_9a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_10a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_11a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_12a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_13a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_14a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_15a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_16a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_17a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_18a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_19a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_20a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_21a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_22a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_23a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_24a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_25a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_26a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_27a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_28a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_29a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_30a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_31a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_32a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_33a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_34a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_35a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_36a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_37a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_38a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_39a\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_40a\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "contour(X,Y,Z)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_2a\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-0.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-0.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-0.4\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-0.3\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-0.2\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-0.1\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0.1\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0.2\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0.3\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0.4\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "mesh(X,Y,Z)" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-0.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-0.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pcolor(X,Y,Z)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Matlab", + "language": "matlab", + "name": "matlab" + }, + "language_info": { + "codemirror_mode": "octave", + "file_extension": ".m", + "help_links": [ + { + "text": "MetaKernel Magics", + "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" + } + ], + "mimetype": "text/x-octave", + "name": "matlab", + "version": "0.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_03/lecture_03.md b/lecture_03/lecture_03.md new file mode 100644 index 0000000..ce76e7f --- /dev/null +++ b/lecture_03/lecture_03.md @@ -0,0 +1,1447 @@ + +# Matlab basic use +## 1- the environment, path and working directory + +Matlab environment can be called by: +1. Starting the matlab executable (the gui) +2. Starting a jupyter notebook with Matlab kernel +3. Starting matlab with command-line interface (no gui) + +The main requirement is that matlab kernel (main matlab program) is running and accepting commands + +When you start, you can call matlab built-in functions or anything you write that is in your `MATLABPATH` or working directory (`pwd`) + + +```matlab +path +``` + + MATLABPATH + + /usr/local/lib/python2.7/dist-packages/matlab_kernel/toolbox + /usr/local/lib/python2.7/dist-packages/pymatbridge/matlab + /usr/local/lib/python2.7/dist-packages/pymatbridge/matlab/usrprog + /usr/local/lib/python2.7/dist-packages/pymatbridge/matlab/util + /usr/local/lib/python2.7/dist-packages/pymatbridge/matlab/util/json_v0.2.2 + /usr/local/lib/python2.7/dist-packages/pymatbridge/matlab/util/json_v0.2.2/json + /usr/local/lib/python2.7/dist-packages/pymatbridge/matlab/util/json_v0.2.2/json/java + /usr/local/lib/python2.7/dist-packages/pymatbridge/matlab/util/json_v0.2.2/test + /home/ryan/Documents/MATLAB + /usr/local/MATLAB/R2016a/toolbox/matlab/strfun + /usr/local/MATLAB/R2016a/toolbox/matlab/datatypes + /usr/local/MATLAB/R2016a/toolbox/matlab/elfun + /usr/local/MATLAB/R2016a/toolbox/matlab/ops + /usr/local/MATLAB/R2016a/toolbox/matlab/timefun + /usr/local/MATLAB/R2016a/toolbox/matlab/elmat + /usr/local/MATLAB/R2016a/toolbox/matlab/datafun + /usr/local/MATLAB/R2016a/toolbox/matlab/iofun + /usr/local/MATLAB/R2016a/toolbox/matlab/mvm + /usr/local/MATLAB/R2016a/toolbox/matlab/randfun + /usr/local/MATLAB/R2016a/toolbox/matlab/funfun + /usr/local/MATLAB/R2016a/toolbox/matlab/general + /usr/local/MATLAB/R2016a/toolbox/matlab/polyfun + /usr/local/MATLAB/R2016a/toolbox/matlab/matfun + /usr/local/MATLAB/R2016a/toolbox/matlab/lang + /usr/local/MATLAB/R2016a/toolbox/matlab/specfun + /usr/local/MATLAB/R2016a/toolbox/matlab/sparfun + /usr/local/MATLAB/R2016a/toolbox/matlab/images + /usr/local/MATLAB/R2016a/toolbox/matlab/testframework/performance + /usr/local/MATLAB/R2016a/toolbox/matlab/testframework/parallel + /usr/local/MATLAB/R2016a/toolbox/matlab/optimfun + /usr/local/MATLAB/R2016a/toolbox/matlab/testframework/ext + /usr/local/MATLAB/R2016a/toolbox/matlab/guide + /usr/local/MATLAB/R2016a/toolbox/matlab/testframework/measurement + /usr/local/MATLAB/R2016a/toolbox/matlab/icons + /usr/local/MATLAB/R2016a/toolbox/matlab/demos + /usr/local/MATLAB/R2016a/toolbox/matlab/helptools + /usr/local/MATLAB/R2016a/toolbox/matlab/winfun + /usr/local/MATLAB/R2016a/toolbox/matlab/winfun/NET + /usr/local/MATLAB/R2016a/toolbox/matlab/datamanager + /usr/local/MATLAB/R2016a/toolbox/matlab/verctrl + /usr/local/MATLAB/R2016a/toolbox/matlab/graph2d + /usr/local/MATLAB/R2016a/toolbox/matlab/graph3d + /usr/local/MATLAB/R2016a/toolbox/matlab/graphics + /usr/local/MATLAB/R2016a/toolbox/matlab/graphics/obsolete + /usr/local/MATLAB/R2016a/toolbox/matlab/plottools + /usr/local/MATLAB/R2016a/toolbox/matlab/scribe + /usr/local/MATLAB/R2016a/toolbox/matlab/scribe/obsolete + /usr/local/MATLAB/R2016a/toolbox/matlab/specgraph + /usr/local/MATLAB/R2016a/toolbox/matlab/uitools + /usr/local/MATLAB/R2016a/toolbox/matlab/uitools/obsolete + /usr/local/MATLAB/R2016a/toolbox/hdlcoder/matlabhdlcoder/matlabhdlcoder + /usr/local/MATLAB/R2016a/toolbox/hdlcoder/matlabhdlcoder + /usr/local/MATLAB/R2016a/toolbox/matlab/testframework/core + /usr/local/MATLAB/R2016a/toolbox/matlab/testframework/obsolete + /usr/local/MATLAB/R2016a/toolbox/matlab/hardware/stubs + /usr/local/MATLAB/R2016a/toolbox/local + /usr/local/MATLAB/R2016a/toolbox/matlab/datastoreio + /usr/local/MATLAB/R2016a/toolbox/matlab/codetools + /usr/local/MATLAB/R2016a/toolbox/matlab/codetools/embeddedoutputs + /usr/local/MATLAB/R2016a/toolbox/matlab/graphfun + /usr/local/MATLAB/R2016a/toolbox/matlab/depfun + /usr/local/MATLAB/R2016a/toolbox/matlab/mapreduceio + /usr/local/MATLAB/R2016a/toolbox/matlab/findfiles + /usr/local/MATLAB/R2016a/toolbox/rtw/targets/asap2/asap2/dataclasses + /usr/local/MATLAB/R2016a/toolbox/rtw/targets/asap2/asap2 + /usr/local/MATLAB/R2016a/toolbox/rtw/targets/asap2/asap2/user + /usr/local/MATLAB/R2016a/toolbox/rtw/targets/common/can/blocks/dataclasses + /usr/local/MATLAB/R2016a/toolbox/rtw/targets/common/can/blocks + /usr/local/MATLAB/R2016a/toolbox/rtw/targets/common/can/blocks/tlc_c + /usr/local/MATLAB/R2016a/toolbox/rtw/targets/common/tgtcommon + /usr/local/MATLAB/R2016a/toolbox/coder/simulinkcoder/cgv/API + /usr/local/MATLAB/R2016a/toolbox/rtw/rtw/misra + /usr/local/MATLAB/R2016a/toolbox/coder/simulinkcoder + /usr/local/MATLAB/R2016a/toolbox/coder/simulinkcoder/templates + /usr/local/MATLAB/R2016a/toolbox/coder/simulinkcoder/targets + /usr/local/MATLAB/R2016a/toolbox/rtw/targets/pil + /usr/local/MATLAB/R2016a/toolbox/rtw/targets/AUTOSAR/AUTOSAR/dataclasses + /usr/local/MATLAB/R2016a/toolbox/rtw/targets/AUTOSAR/AUTOSAR + /usr/local/MATLAB/R2016a/toolbox/rtw/accel + /usr/local/MATLAB/R2016a/toolbox/coder/simulinkcoder_core + /usr/local/MATLAB/R2016a/toolbox/rtw/rtwdemos + /usr/local/MATLAB/R2016a/toolbox/rtw/rtwdemos/rsimdemos + /usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/simfeatures + /usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/simfeatures/modelreference + /usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/simfeatures/datadictionary + /usr/local/MATLAB/R2016a/toolbox/simulink/sysarch/sysarch + /usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/simgeneral + /usr/local/MATLAB/R2016a/toolbox/slde/examples + /usr/local/MATLAB/R2016a/toolbox/coder/advisor + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/modeladvisor + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/modeladvisor/fixpt + /usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/automotive/fuelsys + /usr/local/MATLAB/R2016a/toolbox/simulink/components + /usr/local/MATLAB/R2016a/toolbox/simulink/dee + /usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/aerospace + /usr/local/MATLAB/R2016a/toolbox/simulinktest/core/simharness/simharness + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/frameedit + /usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/industrial + /usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/automotive + /usr/local/MATLAB/R2016a/toolbox/simulink/blocks/library + /usr/local/MATLAB/R2016a/toolbox/simulink/blocks/library/simulinkcoder + /usr/local/MATLAB/R2016a/toolbox/simulink/blocks/obsolete + /usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/dataclasses + /usr/local/MATLAB/R2016a/toolbox/simulink/simdemos + /usr/local/MATLAB/R2016a/toolbox/simulink/blocks + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/dataclasses + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/MPlayIO + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/dataobjectwizard + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/slresolve + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/units + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/resources + /usr/local/MATLAB/R2016a/toolbox/simulink/sdi + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/core_templates + /usr/local/MATLAB/R2016a/toolbox/simulinktest/core/testsequence/testsequence + /usr/local/MATLAB/R2016a/toolbox/simulink/simdemos/automotive/powerwindow + /usr/local/MATLAB/R2016a/toolbox/simulink/sldependency + /usr/local/MATLAB/R2016a/toolbox/simulink/hmi + /usr/local/MATLAB/R2016a/toolbox/coder/objectives + /usr/local/MATLAB/R2016a/toolbox/slde/slde + /usr/local/MATLAB/R2016a/toolbox/slde/slde/resources + /usr/local/MATLAB/R2016a/toolbox/stateflow/stateflow + /usr/local/MATLAB/R2016a/toolbox/stateflow/coder + /usr/local/MATLAB/R2016a/toolbox/stateflow/sfdemos + /usr/local/MATLAB/R2016a/toolbox/stateflow/sftemplates + /usr/local/MATLAB/R2016a/toolbox/shared/testmeaslib/general + /usr/local/MATLAB/R2016a/toolbox/simulink/blocks/sb2sl + /usr/local/MATLAB/R2016a/toolbox/physmod/powersys/DR/DR + /usr/local/MATLAB/R2016a/toolbox/shared/reqmgt + /usr/local/MATLAB/R2016a/toolbox/shared/reqmgt/mmutils + /usr/local/MATLAB/R2016a/toolbox/shared/controllib/graphics + /usr/local/MATLAB/R2016a/toolbox/shared/controllib/graphics/utils + /usr/local/MATLAB/R2016a/toolbox/shared/controllib/graphics/plotoptions + /usr/local/MATLAB/R2016a/toolbox/simulink/sledittimecheck + /usr/local/MATLAB/R2016a/toolbox/hdlcoder/slhdltemplates + /usr/local/MATLAB/R2016a/toolbox/distcomp + /usr/local/MATLAB/R2016a/toolbox/distcomp/distcomp + /usr/local/MATLAB/R2016a/toolbox/distcomp/user + /usr/local/MATLAB/R2016a/toolbox/distcomp/mpi + /usr/local/MATLAB/R2016a/toolbox/distcomp/parallel + /usr/local/MATLAB/R2016a/toolbox/distcomp/parallel/util + /usr/local/MATLAB/R2016a/toolbox/distcomp/lang + /usr/local/MATLAB/R2016a/toolbox/distcomp/cluster + /usr/local/MATLAB/R2016a/toolbox/distcomp/gpu + /usr/local/MATLAB/R2016a/toolbox/distcomp/array + /usr/local/MATLAB/R2016a/toolbox/target/codertarget + /usr/local/MATLAB/R2016a/toolbox/target/codertarget/rtw + /usr/local/MATLAB/R2016a/toolbox/target/codertarget/matlabcoder + /usr/local/MATLAB/R2016a/toolbox/physmod/simscape/simscapedemos + /usr/local/MATLAB/R2016a/toolbox/comm/templates + /usr/local/MATLAB/R2016a/toolbox/shared/simulink + /usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdlcoderdemos + /usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdlcoderdemos/matlabhdlcoderdemos + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic5000/tic5000demos + /usr/local/MATLAB/R2016a/toolbox/physmod/common/gl/sli/m + /usr/local/MATLAB/R2016a/toolbox/shared/system/simulink + /usr/local/MATLAB/R2016a/toolbox/images/colorspaces + /usr/local/MATLAB/R2016a/toolbox/images/images + /usr/local/MATLAB/R2016a/toolbox/images/imdata + /usr/local/MATLAB/R2016a/toolbox/images/imuitools + /usr/local/MATLAB/R2016a/toolbox/images/iptformats + /usr/local/MATLAB/R2016a/toolbox/images/iptutils + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic6000 + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic6000/rtw + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic6000/tfl + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic6000/utils + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic6000/blks/sysobj_mex + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic6000/blks/mex + /usr/local/MATLAB/R2016a/toolbox/distcomp/pctdemos + /usr/local/MATLAB/R2016a/toolbox/matlab/appdesigner/appdesigner + /usr/local/MATLAB/R2016a/toolbox/shared/mlreportgen/ppt + /usr/local/MATLAB/R2016a/toolbox/shared/mlreportgen/ppt/ppt + /usr/local/MATLAB/R2016a/toolbox/shared/mlreportgen/ppt/ppt/help + /usr/local/MATLAB/R2016a/toolbox/coder/matlabcoder + /usr/local/MATLAB/R2016a/toolbox/coder/matlabcoder/templates + /usr/local/MATLAB/R2016a/toolbox/dsp/templates + /usr/local/MATLAB/R2016a/toolbox/globaloptim + /usr/local/MATLAB/R2016a/toolbox/globaloptim/globaloptim + /usr/local/MATLAB/R2016a/toolbox/shared/appdes/services + /usr/local/MATLAB/R2016a/toolbox/coder/emlcodermex + /usr/local/MATLAB/R2016a/toolbox/physmod/powersys/powerdemo/power_electronics + /usr/local/MATLAB/R2016a/toolbox/pde/pdedemos + /usr/local/MATLAB/R2016a/toolbox/slvnv/slvnvdemos + /usr/local/MATLAB/R2016a/toolbox/sl_pir_cap + /usr/local/MATLAB/R2016a/toolbox/target + /usr/local/MATLAB/R2016a/toolbox/target/foundation + /usr/local/MATLAB/R2016a/toolbox/target/foundation/utils + /usr/local/MATLAB/R2016a/toolbox/target/foundation/utils/resource_config + /usr/local/MATLAB/R2016a/toolbox/target/foundation/blks + /usr/local/MATLAB/R2016a/toolbox/target/foundation/blks/mex + /usr/local/MATLAB/R2016a/toolbox/target/foundation/blks/masks + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/shared + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/shared/ti + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/shared/ti/mdlinfo + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/shared/ti/utils + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/shared/ti/blks + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/shared/ti/blks/mex + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/shared/ti/blks/masks + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/ARM/tfl + /usr/local/MATLAB/R2016a/toolbox/shared/etargets/etargets + /usr/local/MATLAB/R2016a/toolbox/shared/etargets/etargets/demoutils + /usr/local/MATLAB/R2016a/toolbox/optim/optim + /usr/local/MATLAB/R2016a/toolbox/optim + /usr/local/MATLAB/R2016a/toolbox/physmod/simscape/advisor/m + /usr/local/MATLAB/R2016a/toolbox/target/targetdemos + /usr/local/MATLAB/R2016a/toolbox/shared/hadoopserializer + /usr/local/MATLAB/R2016a/toolbox/matlab/external/engines/engine_api + /usr/local/MATLAB/R2016a/toolbox/shared/siglib + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/performance + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/performance/performancea + /usr/local/MATLAB/R2016a/toolbox/simevents/examples + /usr/local/MATLAB/R2016a/toolbox/shared/hdlshared + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/local/m + /usr/local/MATLAB/R2016a/toolbox/matlab/uicomponents/uicomponents + /usr/local/MATLAB/R2016a/toolbox/matlab/uicomponents/uicomponents/pending + /usr/local/MATLAB/R2016a/toolbox/matlab/uicomponents/uicomponents/graphics + /usr/local/MATLAB/R2016a/toolbox/fixedpoint/fixedpointconverter + /usr/local/MATLAB/R2016a/toolbox/physmod/powersys/drives/drivesdemo + /usr/local/MATLAB/R2016a/toolbox/physmod/simscape/library/m + /usr/local/MATLAB/R2016a/toolbox/shared/sdi + /usr/local/MATLAB/R2016a/toolbox/shared/asynciolib + /usr/local/MATLAB/R2016a/toolbox/shared/cmlink/api + /usr/local/MATLAB/R2016a/toolbox/matlab/toolboxmanagement/matlab_api + /usr/local/MATLAB/R2016a/toolbox/mpc/mpcdemos + /usr/local/MATLAB/R2016a/toolbox/distcomp/mapreduce + /usr/local/MATLAB/R2016a/toolbox/matlab/networklib + /usr/local/MATLAB/R2016a/toolbox/dsp/dspdemos + /usr/local/MATLAB/R2016a/toolbox/shared/testmeaslib/simulink + /usr/local/MATLAB/R2016a/toolbox/shared/controllib/general + /usr/local/MATLAB/R2016a/toolbox/shared/imaqlib + /usr/local/MATLAB/R2016a/toolbox/physmod/equation_language/equation_language + /usr/local/MATLAB/R2016a/toolbox/simulink/slmetrics + /usr/local/MATLAB/R2016a/toolbox/vision/vision + /usr/local/MATLAB/R2016a/toolbox/vision/visiondata + /usr/local/MATLAB/R2016a/toolbox/vision/visionutilities + /usr/local/MATLAB/R2016a/toolbox/vision/visionutilities/visioninit + /usr/local/MATLAB/R2016a/toolbox/vision/visionutilities/visionmex + /usr/local/MATLAB/R2016a/toolbox/physmod/simscape/foundation/simscape + /usr/local/MATLAB/R2016a/toolbox/shared/system/sfun + /usr/local/MATLAB/R2016a/toolbox/matlab/toolbox_packaging + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink_data_dictionary/sldd + /usr/local/MATLAB/R2016a/toolbox/shared/pdelib + /usr/local/MATLAB/R2016a/toolbox/compiler_sdk/java + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/scenarioconnector + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/scenarioconnector/ui + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/scenarioconnector/ui/toolstrip/modelsection + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/scenarioconnector/ui/toolstrip/filesection + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/editor/ui + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/comparisontool + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/mapping + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/mapping/callbacks + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/mapping/util + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/toolstrip + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/toolstrip/open/streaming + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/toolstrip/help + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/toolstrip/open + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/toolstrip/session + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/ui/toolstrip/report + /usr/local/MATLAB/R2016a/toolbox/globaloptim/globaloptimdemos + /usr/local/MATLAB/R2016a/toolbox/econ/econ + /usr/local/MATLAB/R2016a/toolbox/physmod/common/dataservices/sli/m + /usr/local/MATLAB/R2016a/toolbox/shared/sl_async_streaming + /usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs + /usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/ccsblks + /usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/ccslinkblks + /usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/ccslinkblks/rtdxsimblks + /usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/mdlinfo + /usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/tfl + /usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/util + /usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/rtw + /usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/envChecker + /usr/local/MATLAB/R2016a/toolbox/idelink/foundation/pjtgenerator + /usr/local/MATLAB/R2016a/toolbox/idelink/foundation/pjtgenerator/rtw + /usr/local/MATLAB/R2016a/toolbox/idelink/foundation/pjtgenerator/tgtpref2 + /usr/local/MATLAB/R2016a/toolbox/idelink/foundation/pjtgenerator/profiler + /usr/local/MATLAB/R2016a/toolbox/idelink/foundation/pjtgenerator/mdlinfo + /usr/local/MATLAB/R2016a/toolbox/idelink/foundation/pjtgenerator/blks + /usr/local/MATLAB/R2016a/toolbox/idelink/foundation/pjtgenerator/blks/masks + /usr/local/MATLAB/R2016a/toolbox/idelink/foundation/pjtgenerator/blks/tlc_c + /usr/local/MATLAB/R2016a/toolbox/physmod/simscape/engine/core/m + /usr/local/MATLAB/R2016a/toolbox/shared/system/coder + /usr/local/MATLAB/R2016a/toolbox/wavelet/wavelet + /usr/local/MATLAB/R2016a/toolbox/wavelet/wmultisig1d + /usr/local/MATLAB/R2016a/toolbox/wavelet/compression + /usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdlcommon + /usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdlcommon/modelcheckeradvisor + /usr/local/MATLAB/R2016a/toolbox/physmod/powersys/library + /usr/local/MATLAB/R2016a/toolbox/slvnv/rmidemos + /usr/local/MATLAB/R2016a/toolbox/shared/eda/board + /usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdllib/sl_lib + /usr/local/MATLAB/R2016a/toolbox/bioinfo/bioinfodata + /usr/local/MATLAB/R2016a/toolbox/shared/coder/coder + /usr/local/MATLAB/R2016a/toolbox/shared/dsp/visionhdl/simulink/dsp + /usr/local/MATLAB/R2016a/toolbox/shared/polyspace + /usr/local/MATLAB/R2016a/toolbox/robust/rctdemos + /usr/local/MATLAB/R2016a/toolbox/simulink/sltemplate + /usr/local/MATLAB/R2016a/toolbox/physmod/common/dataservices/core/m + /usr/local/MATLAB/R2016a/toolbox/matlab/system/editor + /usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdlcoder + /usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdlcoder/hdlwa + /usr/local/MATLAB/R2016a/toolbox/rtw/targets/ecoder/ecoderdemos/dataclasses + /usr/local/MATLAB/R2016a/toolbox/rtw/targets/ecoder/ecoderdemos + /usr/local/MATLAB/R2016a/toolbox/signal/signal + /usr/local/MATLAB/R2016a/toolbox/signal/sigtools + /usr/local/MATLAB/R2016a/toolbox/signal/sptoolgui + /usr/local/MATLAB/R2016a/toolbox/compiler/mlhadoop + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/images + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/wing_landing_gear + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/wing_landing_gear/images + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/cart_double_pendulum + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/cart_double_pendulum/images + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/stewart_platform + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/stewart_platform/images + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/double_crank_aiming + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/double_crank_aiming/images + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/bread_slicer + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/bread_slicer/images + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/import/stewart_platform + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/import/four_bar + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/radial_engine + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/radial_engine/images + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/double_wishbone_suspension + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/double_wishbone_suspension/images + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/import/robot + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/cardan_gear + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/cardan_gear/images + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/windshield_wiper + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/windshield_wiper/images + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/backhoe + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/robotic_wrist + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/carousel + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/welding_robot + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/import/robot_stepfiles + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/potters_wheel + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/linear_actuator + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/pto_shaft + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/smdemos/cam_flapping_wing + /usr/local/MATLAB/R2016a/toolbox/simulink/fixedandfloat/fxpdemos + /usr/local/MATLAB/R2016a/toolbox/vision/visiondemos + /usr/local/MATLAB/R2016a/toolbox/nnet/nndemos + /usr/local/MATLAB/R2016a/toolbox/nnet/nndemos/nndatasets + /usr/local/MATLAB/R2016a/toolbox/shared/hwconnectinstaller + /usr/local/MATLAB/R2016a/help/toolbox/comm/examples + /usr/local/MATLAB/R2016a/toolbox/bioinfo/bioinfo + /usr/local/MATLAB/R2016a/toolbox/bioinfo/biolearning + /usr/local/MATLAB/R2016a/toolbox/bioinfo/microarray + /usr/local/MATLAB/R2016a/toolbox/bioinfo/mass_spec + /usr/local/MATLAB/R2016a/toolbox/bioinfo/proteins + /usr/local/MATLAB/R2016a/toolbox/bioinfo/biomatrices + /usr/local/MATLAB/R2016a/toolbox/bioinfo/graphtheory + /usr/local/MATLAB/R2016a/toolbox/matlab/external/interfaces/webservices/restful + /usr/local/MATLAB/R2016a/toolbox/matlab/external/interfaces + /usr/local/MATLAB/R2016a/toolbox/matlab/external/interfaces/webservices + /usr/local/MATLAB/R2016a/toolbox/shared/slci/slci + /usr/local/MATLAB/R2016a/toolbox/sldv/sldv + /usr/local/MATLAB/R2016a/toolbox/fixedpoint/fixedpoint + /usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdlslrt + /usr/local/MATLAB/R2016a/toolbox/robotics/robotalgs + /usr/local/MATLAB/R2016a/toolbox/slvnv/metrics + /usr/local/MATLAB/R2016a/toolbox/physmod/pe/library/m + /usr/local/MATLAB/R2016a/toolbox/slvnv/do178b + /usr/local/MATLAB/R2016a/toolbox/physmod/powersys/DR/DRdemo + /usr/local/MATLAB/R2016a/toolbox/shared/sl_coverage_configset + /usr/local/MATLAB/R2016a/toolbox/robotics/robotsimulink + /usr/local/MATLAB/R2016a/toolbox/robotics/robotsimulink/robotslros + /usr/local/MATLAB/R2016a/toolbox/robotics/robotsimulink/robotslros/registry + /usr/local/MATLAB/R2016a/toolbox/shared/system/coreblocks + /usr/local/MATLAB/R2016a/toolbox/simevents/simevents + /usr/local/MATLAB/R2016a/toolbox/simevents/simevents/icons + /usr/local/MATLAB/R2016a/toolbox/physmod/common/external/mli/m + /usr/local/MATLAB/R2016a/toolbox/matlab/timeseries + /usr/local/MATLAB/R2016a/toolbox/matlab/hds + /usr/local/MATLAB/R2016a/toolbox/matlab/addons_zip + /usr/local/MATLAB/R2016a/toolbox/coder/xrel + /usr/local/MATLAB/R2016a/toolbox/slvnv/simcovdemos + /usr/local/MATLAB/R2016a/toolbox/matlab/apps + /usr/local/MATLAB/R2016a/toolbox/slvnv/iec61508 + /usr/local/MATLAB/R2016a/toolbox/shared/sldv_sfcn/sldv_sfcn + /usr/local/MATLAB/R2016a/help/toolbox/slcontrol/examples + /usr/local/MATLAB/R2016a/toolbox/robotics/robotcore + /usr/local/MATLAB/R2016a/toolbox/matlab/imagesci + /usr/local/MATLAB/R2016a/toolbox/econ/econdemos + /usr/local/MATLAB/R2016a/toolbox/shared/sldv + /usr/local/MATLAB/R2016a/toolbox/coder/codedescriptor_core + /usr/local/MATLAB/R2016a/toolbox/curvefit/curvefit + /usr/local/MATLAB/R2016a/toolbox/curvefit/splines + /usr/local/MATLAB/R2016a/toolbox/curvefit/sftoolgui + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic5000 + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic5000/blks + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic5000/blks/mex + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic5000/blks/masks + /usr/local/MATLAB/R2016a/toolbox/shared/dastudio/dpvu/dpvu + /usr/local/MATLAB/R2016a/toolbox/shared/dastudio/dpvu/dpvu/metamodel + /usr/local/MATLAB/R2016a/toolbox/shared/dastudio/dpvu/dpvu/actions + /usr/local/MATLAB/R2016a/toolbox/shared/cgxe/cgxe + /usr/local/MATLAB/R2016a/toolbox/shared/controllib/requirements + /usr/local/MATLAB/R2016a/toolbox/shared/testconsole + /usr/local/MATLAB/R2016a/toolbox/instrument/instrumentdemos + /usr/local/MATLAB/R2016a/toolbox/shared/dsp/vision/matlab/utilities + /usr/local/MATLAB/R2016a/toolbox/shared/dsp/vision/simulink/utilities + /usr/local/MATLAB/R2016a/toolbox/shared/dsp/vision/matlab/utilities/mex + /usr/local/MATLAB/R2016a/toolbox/shared/dsp/vision/simulink/utilities/mex + /usr/local/MATLAB/R2016a/toolbox/shared/dsp/vision/matlab/utilities/init + /usr/local/MATLAB/R2016a/toolbox/shared/dsp/vision/matlab/vision + /usr/local/MATLAB/R2016a/toolbox/shared/dsp/vision/simulink/vision + /usr/local/MATLAB/R2016a/toolbox/nnet/cnn + /usr/local/MATLAB/R2016a/toolbox/shared/sl_messages + /usr/local/MATLAB/R2016a/toolbox/simbio/simbiodemos + /usr/local/MATLAB/R2016a/toolbox/matlab/uitools/uicomponents/components + /usr/local/MATLAB/R2016a/toolbox/shared/mlreportgen/dom + /usr/local/MATLAB/R2016a/toolbox/shared/mlreportgen/dom/dom + /usr/local/MATLAB/R2016a/toolbox/shared/mlreportgen/dom/dom/help + /usr/local/MATLAB/R2016a/toolbox/physmod/simscape/engine/sli/m + /usr/local/MATLAB/R2016a/toolbox/target/extensions/operatingsystem/linux/blks + /usr/local/MATLAB/R2016a/toolbox/target/extensions/operatingsystem/linux/blks/masks + /usr/local/MATLAB/R2016a/toolbox/target/extensions/operatingsystem/linux/blks/mex + /usr/local/MATLAB/R2016a/toolbox/target/extensions/operatingsystem/linux/src + /usr/local/MATLAB/R2016a/toolbox/realtime/realtime/hwconnection + /usr/local/MATLAB/R2016a/toolbox/rtw/targets/ecoder + /usr/local/MATLAB/R2016a/toolbox/rtw/targets/mpt + /usr/local/MATLAB/R2016a/toolbox/rtw/targets/mpt/mpt + /usr/local/MATLAB/R2016a/toolbox/rtw/targets/mpt/user_specific + /usr/local/MATLAB/R2016a/toolbox/coder/embeddedcoder + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/slproject/examples + /usr/local/MATLAB/R2016a/toolbox/slcontrol/slctrldemos + /usr/local/MATLAB/R2016a/toolbox/compiler + /usr/local/MATLAB/R2016a/toolbox/physmod/powersys/facts/factsdemo + /usr/local/MATLAB/R2016a/toolbox/slvnv/simcoverage + /usr/local/MATLAB/R2016a/toolbox/matlab/external/engines/python + /usr/local/MATLAB/R2016a/toolbox/physmod/common/dataservices/gui/m + /usr/local/MATLAB/R2016a/toolbox/fuzzy/fuzdemos + /usr/local/MATLAB/R2016a/toolbox/fininst/fininst + /usr/local/MATLAB/R2016a/toolbox/physmod/sps/sps + /usr/local/MATLAB/R2016a/toolbox/physmod/common/units/mli/m + /usr/local/MATLAB/R2016a/toolbox/coder/coder + /usr/local/MATLAB/R2016a/toolbox/sldv/slicer + /usr/local/MATLAB/R2016a/toolbox/sldv/slicer/gui + /usr/local/MATLAB/R2016a/toolbox/coder/codegendemos + /usr/local/MATLAB/R2016a/toolbox/wavelet/wavedemo + /usr/local/MATLAB/R2016a/toolbox/matlab/addons + /usr/local/MATLAB/R2016a/toolbox/matlab/addons/cef + /usr/local/MATLAB/R2016a/toolbox/matlab/addons/fallbackmanager + /usr/local/MATLAB/R2016a/toolbox/compiler/compilerdemos + /usr/local/MATLAB/R2016a/toolbox/shared/mapgeodesy + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/derivedSignals + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/sourceBlocks + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/docexamples + /usr/local/MATLAB/R2016a/toolbox/shared/cgir_fe + /usr/local/MATLAB/R2016a/toolbox/coder/float2fixed + /usr/local/MATLAB/R2016a/toolbox/coder/float2fixed/demos + /usr/local/MATLAB/R2016a/toolbox/coder/float2fixed/dmm_emlauthoring + /usr/local/MATLAB/R2016a/toolbox/fuzzy/fuzzy + /usr/local/MATLAB/R2016a/toolbox/fuzzy/fuzzyutil + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic2000 + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic2000/rtw + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/tic2000/utils + /usr/local/MATLAB/R2016a/toolbox/finance/finance + /usr/local/MATLAB/R2016a/toolbox/finance/calendar + /usr/local/MATLAB/R2016a/toolbox/finance/finsupport + /usr/local/MATLAB/R2016a/toolbox/finance/ftseries + /usr/local/MATLAB/R2016a/toolbox/realtime + /usr/local/MATLAB/R2016a/toolbox/realtime/realtime + /usr/local/MATLAB/R2016a/toolbox/realtime/realtime/rtw + /usr/local/MATLAB/R2016a/toolbox/shared/optimlib + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/upgradeadvisor + /usr/local/MATLAB/R2016a/toolbox/physmod/common/gl/mli/m + /usr/local/MATLAB/R2016a/toolbox/shared/spcuilib + /usr/local/MATLAB/R2016a/toolbox/physmod/pe/advisor/m + /usr/local/MATLAB/R2016a/toolbox/imaq/imaqblks/imaqblks + /usr/local/MATLAB/R2016a/toolbox/imaq/imaqblks/imaqmex + /usr/local/MATLAB/R2016a/toolbox/imaq/imaqblks/imaqmasks + /usr/local/MATLAB/R2016a/toolbox/shared/sl_web_widgets + /usr/local/MATLAB/R2016a/toolbox/physmod/common/foundation/mli/m + /usr/local/MATLAB/R2016a/toolbox/fixedpoint/fixedpointtool + /usr/local/MATLAB/R2016a/toolbox/simulink/compiled_model_interface + /usr/local/MATLAB/R2016a/toolbox/physmod/simscape/engine/mli/m + /usr/local/MATLAB/R2016a/toolbox/shared/hwconnectinstaller/common + /usr/local/MATLAB/R2016a/toolbox/database/dbdemos + /usr/local/MATLAB/R2016a/toolbox/javabuilder/javabuilder + /usr/local/MATLAB/R2016a/toolbox/shared/rptgen + /usr/local/MATLAB/R2016a/toolbox/images/imdemos + /usr/local/MATLAB/R2016a/help/toolbox/dsp/examples + /usr/local/MATLAB/R2016a/toolbox/shared/slvnv + /usr/local/MATLAB/R2016a/toolbox/slvnv/slvnv + /usr/local/MATLAB/R2016a/toolbox/stats/gpu + /usr/local/MATLAB/R2016a/toolbox/physmod/simscape/simscape/m + /usr/local/MATLAB/R2016a/toolbox/matlab/cefclient + /usr/local/MATLAB/R2016a/toolbox/sl3d/sl3ddemos + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/slproject/templates + /usr/local/MATLAB/R2016a/toolbox/shared/spcuilib/slscopes + /usr/local/MATLAB/R2016a/toolbox/matlab/supportpackagemanagement + /usr/local/MATLAB/R2016a/toolbox/control/ctrldemos + /usr/local/MATLAB/R2016a/toolbox/shared/dspblks/dspblks + /usr/local/MATLAB/R2016a/toolbox/shared/dspblks/dspmex + /usr/local/MATLAB/R2016a/toolbox/ident/iddemos + /usr/local/MATLAB/R2016a/toolbox/ident/iddemos/examples + /usr/local/MATLAB/R2016a/toolbox/idelink/idelinkdemos + /usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/ccsdemos + /usr/local/MATLAB/R2016a/toolbox/idelink/extensions/ticcs/ccsdemos/util + /usr/local/MATLAB/R2016a/toolbox/shared/eda/edagraph + /usr/local/MATLAB/R2016a/toolbox/matlab/external/interfaces/webservices/wsdl + /usr/local/MATLAB/R2016a/toolbox/fixedpoint/fidemos + /usr/local/MATLAB/R2016a/toolbox/map/map + /usr/local/MATLAB/R2016a/toolbox/map/mapgeodesy + /usr/local/MATLAB/R2016a/toolbox/map/mapdisp + /usr/local/MATLAB/R2016a/toolbox/map/mapformats + /usr/local/MATLAB/R2016a/toolbox/map/mapproj + /usr/local/MATLAB/R2016a/toolbox/map/mapdata + /usr/local/MATLAB/R2016a/toolbox/map/mapdata/sdts + /usr/local/MATLAB/R2016a/toolbox/shared/statslib + /usr/local/MATLAB/R2016a/toolbox/shared/statslib/sensitivity + /usr/local/MATLAB/R2016a/toolbox/physmod/powersys/drives/drives + /usr/local/MATLAB/R2016a/toolbox/slcontrol/slcontrol + /usr/local/MATLAB/R2016a/toolbox/slcontrol/slctrlguis + /usr/local/MATLAB/R2016a/toolbox/slcontrol/slctrlutil + /usr/local/MATLAB/R2016a/toolbox/slcontrol/slctrlobsolete + /usr/local/MATLAB/R2016a/toolbox/matlab/spf/matlabservices + /usr/local/MATLAB/R2016a/toolbox/shared/dsp/dialog + /usr/local/MATLAB/R2016a/toolbox/imaq/imaqdemos + /usr/local/MATLAB/R2016a/toolbox/symbolic/symbolicdemos + /usr/local/MATLAB/R2016a/toolbox/instrument/instrument + /usr/local/MATLAB/R2016a/toolbox/instrument/instrumentblks/instrumentblks + /usr/local/MATLAB/R2016a/toolbox/instrument/instrumentblks/instrumentmex + /usr/local/MATLAB/R2016a/toolbox/instrument/instrumentblks/instrumentmasks + /usr/local/MATLAB/R2016a/toolbox/eml/eml + /usr/local/MATLAB/R2016a/toolbox/coder/profile + /usr/local/MATLAB/R2016a/toolbox/database/database + /usr/local/MATLAB/R2016a/toolbox/database/vqb + /usr/local/MATLAB/R2016a/toolbox/map/mapdemos + /usr/local/MATLAB/R2016a/toolbox/shared/cxxfe_mi/cxxfe_mi + /usr/local/MATLAB/R2016a/toolbox/stats/mlearnapp + /usr/local/MATLAB/R2016a/toolbox/shared/eda/fpgaautomation + /usr/local/MATLAB/R2016a/toolbox/shared/eda/fpgaautomation/obsolete + /usr/local/MATLAB/R2016a/toolbox/comm/commdemos + /usr/local/MATLAB/R2016a/toolbox/physmod/pe/pedemos + /usr/local/MATLAB/R2016a/toolbox/slrequirements + /usr/local/MATLAB/R2016a/toolbox/shared/slcontrollib + /usr/local/MATLAB/R2016a/toolbox/geoweb/geoweb + /usr/local/MATLAB/R2016a/toolbox/shared/configset + /usr/local/MATLAB/R2016a/toolbox/comm/cdma2000 + /usr/local/MATLAB/R2016a/toolbox/signal/signalanalyzer + /usr/local/MATLAB/R2016a/toolbox/robotics/robotics + /usr/local/MATLAB/R2016a/toolbox/shared/can + /usr/local/MATLAB/R2016a/toolbox/shared/can/canblks + /usr/local/MATLAB/R2016a/toolbox/shared/can/canmasks + /usr/local/MATLAB/R2016a/toolbox/shared/can/canmex + /usr/local/MATLAB/R2016a/toolbox/simulink/fixedandfloat + /usr/local/MATLAB/R2016a/toolbox/simulink/fixedandfloat/obsolete + /usr/local/MATLAB/R2016a/toolbox/physmod/common/data/mli/m + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/foundation/mech + /usr/local/MATLAB/R2016a/toolbox/imaq/imaq + /usr/local/MATLAB/R2016a/toolbox/physmod/pm_visimpl/pm_visimpl + /usr/local/MATLAB/R2016a/toolbox/bioinfo/biodemos + /usr/local/MATLAB/R2016a/toolbox/shared/sigbldr + /usr/local/MATLAB/R2016a/toolbox/dsp/dsp + /usr/local/MATLAB/R2016a/toolbox/dsp/dsputilities + /usr/local/MATLAB/R2016a/toolbox/dsp/dsputilities/dspinit + /usr/local/MATLAB/R2016a/toolbox/dsp/dsputilities/dspmex + /usr/local/MATLAB/R2016a/toolbox/dsp/dsp/compiled + /usr/local/MATLAB/R2016a/toolbox/symbolic/symbolic + /usr/local/MATLAB/R2016a/toolbox/optim/optimdemos + /usr/local/MATLAB/R2016a/toolbox/curvefit/curvefitdemos + /usr/local/MATLAB/R2016a/toolbox/shared/instrument + /usr/local/MATLAB/R2016a/toolbox/physmod/common/external/library/m + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/slproject + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/slproject/menu + /usr/local/MATLAB/R2016a/toolbox/physmod/mech/mech + /usr/local/MATLAB/R2016a/toolbox/physmod/mech/importer + /usr/local/MATLAB/R2016a/toolbox/shared/simulation_data_repository + /usr/local/MATLAB/R2016a/help/toolbox/control/examples + /usr/local/MATLAB/R2016a/help/toolbox/vision/examples + /usr/local/MATLAB/R2016a/toolbox/physmod/powersys/powerdemo + /usr/local/MATLAB/R2016a/toolbox/physmod/powersys/powerdemo/meascontrol + /usr/local/MATLAB/R2016a/toolbox/physmod/powersys/powerdemo/power_utility + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/ssci/m + /usr/local/MATLAB/R2016a/toolbox/simulink/sl_async_streaming + /usr/local/MATLAB/R2016a/toolbox/shared/simulink/slcheck_services + /usr/local/MATLAB/R2016a/toolbox/shared/measure + /usr/local/MATLAB/R2016a/toolbox/physmod/powersys/powerdemo/simple + /usr/local/MATLAB/R2016a/toolbox/coder/trace + /usr/local/MATLAB/R2016a/toolbox/compiler_sdk + /usr/local/MATLAB/R2016a/toolbox/shared/diagnostic + /usr/local/MATLAB/R2016a/toolbox/physmod/powersys/templates + /usr/local/MATLAB/R2016a/toolbox/sldv/sldvdemos + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/repository + /usr/local/MATLAB/R2016a/toolbox/simulink/sta/repository/util + /usr/local/MATLAB/R2016a/toolbox/stats/stats + /usr/local/MATLAB/R2016a/toolbox/stats/classreg + /usr/local/MATLAB/R2016a/toolbox/stats/clustering + /usr/local/MATLAB/R2016a/toolbox/hdlcoder/hdllib/ml_lib + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/iodata/ioformat + /usr/local/MATLAB/R2016a/toolbox/matlab/audiovideo + /usr/local/MATLAB/R2016a/toolbox/matlab/webcam + /usr/local/MATLAB/R2016a/toolbox/shared/mldatx + /usr/local/MATLAB/R2016a/toolbox/robust/robust + /usr/local/MATLAB/R2016a/toolbox/robust/rctlmi + /usr/local/MATLAB/R2016a/toolbox/robust/rctutil + /usr/local/MATLAB/R2016a/toolbox/robust/rctobsolete/robust + /usr/local/MATLAB/R2016a/toolbox/robust/rctobsolete/lmi + /usr/local/MATLAB/R2016a/toolbox/robust/rctobsolete/mutools/commands + /usr/local/MATLAB/R2016a/toolbox/robust/rctobsolete/mutools/subs + /usr/local/MATLAB/R2016a/toolbox/shared/codeinstrum/codeinstrum + /usr/local/MATLAB/R2016a/toolbox/control/control + /usr/local/MATLAB/R2016a/toolbox/control/ctrlmodels + /usr/local/MATLAB/R2016a/toolbox/control/ctrlanalysis + /usr/local/MATLAB/R2016a/toolbox/control/ctrldesign + /usr/local/MATLAB/R2016a/toolbox/control/ctrlplots + /usr/local/MATLAB/R2016a/toolbox/control/ctrlguis + /usr/local/MATLAB/R2016a/toolbox/control/ctrlobsolete + /usr/local/MATLAB/R2016a/toolbox/control/ctrlutil + /usr/local/MATLAB/R2016a/toolbox/physmod/simscape/compiler/sli/m + /usr/local/MATLAB/R2016a/toolbox/shared/dastudio + /usr/local/MATLAB/R2016a/toolbox/stats/statsdemos + /usr/local/MATLAB/R2016a/toolbox/shared/curvefitlib + /usr/local/MATLAB/R2016a/toolbox/shared/slpir + /usr/local/MATLAB/R2016a/toolbox/shared/eda/fpgabase + /usr/local/MATLAB/R2016a/toolbox/physmod/common/dataservices/mli/m + /usr/local/MATLAB/R2016a/toolbox/shared/hdlshared/hdlshared_gui + /usr/local/MATLAB/R2016a/toolbox/shared/eda/hdlparser + /usr/local/MATLAB/R2016a/toolbox/physmod/network_engine/network_engine + /usr/local/MATLAB/R2016a/toolbox/target/extensions/processor/intelhost/tfl + /usr/local/MATLAB/R2016a/toolbox/coder/coverage + /usr/local/MATLAB/R2016a/toolbox/shared/dsp/hdl + /usr/local/MATLAB/R2016a/toolbox/matlab/spf/matlabhost + /usr/local/MATLAB/R2016a/toolbox/mpc/mpc + /usr/local/MATLAB/R2016a/toolbox/mpc/mpcguis + /usr/local/MATLAB/R2016a/toolbox/mpc/mpcobsolete + /usr/local/MATLAB/R2016a/toolbox/mpc/mpcutils + /usr/local/MATLAB/R2016a/toolbox/simulink/slexportprevious + /usr/local/MATLAB/R2016a/toolbox/sl3d/sl3d + /usr/local/MATLAB/R2016a/toolbox/comm/comm + /usr/local/MATLAB/R2016a/toolbox/comm/commutilities/comminit + /usr/local/MATLAB/R2016a/toolbox/comm/commutilities/commmex + /usr/local/MATLAB/R2016a/toolbox/comm/commutilities + /usr/local/MATLAB/R2016a/toolbox/comm/commdeprecated + /usr/local/MATLAB/R2016a/toolbox/comm/comm/compiled + /usr/local/MATLAB/R2016a/toolbox/coder/connectivity + /usr/local/MATLAB/R2016a/toolbox/rtw/targets/connectivity + /usr/local/MATLAB/R2016a/toolbox/simulink/slhistory + /usr/local/MATLAB/R2016a/toolbox/physmod/simscape/templates + /usr/local/MATLAB/R2016a/toolbox/shared/spreadsheet + /usr/local/MATLAB/R2016a/toolbox/fixpoint + /usr/local/MATLAB/R2016a/toolbox/fixpoint/fpca + /usr/local/MATLAB/R2016a/toolbox/robotics/ros + /usr/local/MATLAB/R2016a/toolbox/physmod/ne_sli/ne_sli + /usr/local/MATLAB/R2016a/toolbox/shared/dsp/simulink/dsp + /usr/local/MATLAB/R2016a/toolbox/matlab/system + /usr/local/MATLAB/R2016a/toolbox/shared/eda/fil + /usr/local/MATLAB/R2016a/toolbox/shared/eda/fil/filmapi + /usr/local/MATLAB/R2016a/toolbox/coder/rtiostream + /usr/local/MATLAB/R2016a/toolbox/pde + /usr/local/MATLAB/R2016a/toolbox/physmod/powersys/powersys + /usr/local/MATLAB/R2016a/toolbox/shared/hotpluglib + /usr/local/MATLAB/R2016a/toolbox/shared/multimedia + /usr/local/MATLAB/R2016a/toolbox/shared/testmeaslib/graphics + /usr/local/MATLAB/R2016a/toolbox/matlab/addons_toolbox + /usr/local/MATLAB/R2016a/toolbox/shared/imageslib + /usr/local/MATLAB/R2016a/toolbox/physmod/pm_sli/pm_sli + /usr/local/MATLAB/R2016a/toolbox/shared/dastudio/seqdiagram + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/templates + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/gui/m + /usr/local/MATLAB/R2016a/toolbox/ident/ident + /usr/local/MATLAB/R2016a/toolbox/ident/nlident + /usr/local/MATLAB/R2016a/toolbox/ident/idobsolete + /usr/local/MATLAB/R2016a/toolbox/ident/idguis + /usr/local/MATLAB/R2016a/toolbox/ident/idutils + /usr/local/MATLAB/R2016a/toolbox/ident/idrecursive + /usr/local/MATLAB/R2016a/toolbox/ident/idhelp + /usr/local/MATLAB/R2016a/toolbox/physmod/powersys/powerdemo/machines + /usr/local/MATLAB/R2016a/toolbox/target/extensions/operatingsystem/windows/blks + /usr/local/MATLAB/R2016a/toolbox/target/extensions/operatingsystem/windows/blks/masks + /usr/local/MATLAB/R2016a/toolbox/target/extensions/operatingsystem/windows/blks/mex + /usr/local/MATLAB/R2016a/toolbox/shared/networklib + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/sli/m + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/sm/m + /usr/local/MATLAB/R2016a/toolbox/shared/advisor + /usr/local/MATLAB/R2016a/toolbox/shared/filterdesignlib + /usr/local/MATLAB/R2016a/toolbox/matlab/connector/connector + /usr/local/MATLAB/R2016a/toolbox/idelink/foundation + /usr/local/MATLAB/R2016a/toolbox/idelink/foundation/util + /usr/local/MATLAB/R2016a/toolbox/idelink/foundation/errorhandler + /usr/local/MATLAB/R2016a/toolbox/idelink/foundation/xmakefile + /usr/local/MATLAB/R2016a/toolbox/idelink/foundation/hookpoints + /usr/local/MATLAB/R2016a/toolbox/shared/comparisons + /usr/local/MATLAB/R2016a/toolbox/signal/sigdemos + /usr/local/MATLAB/R2016a/toolbox/matlab/configtools + /usr/local/MATLAB/R2016a/toolbox/simbio/simbio + /usr/local/MATLAB/R2016a/toolbox/matlab/external/interfaces/python + /usr/local/MATLAB/R2016a/toolbox/shared/m3i + /usr/local/MATLAB/R2016a/toolbox/matlab/toolstrip + /usr/local/MATLAB/R2016a/toolbox/dsp/dspdeployabledemos + /usr/local/MATLAB/R2016a/toolbox/slvnv/styleguide + /usr/local/MATLAB/R2016a/help/toolbox/robust/examples + /usr/local/MATLAB/R2016a/toolbox/shared/deviceplugindetection + /usr/local/MATLAB/R2016a/toolbox/physmod/simscape/compiler/mli/m + /usr/local/MATLAB/R2016a/toolbox/physmod/gui/gfx/m + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/import/m + /usr/local/MATLAB/R2016a/toolbox/compiler/java + /usr/local/MATLAB/R2016a/toolbox/physmod/pe/utils/m + /usr/local/MATLAB/R2016a/toolbox/rtw/rtw + /usr/local/MATLAB/R2016a/toolbox/coder/foundation + /usr/local/MATLAB/R2016a/toolbox/coder/foundation/build + /usr/local/MATLAB/R2016a/toolbox/coder/foundation/build/tools/registry + /usr/local/MATLAB/R2016a/toolbox/coder/foundation/tfl + /usr/local/MATLAB/R2016a/toolbox/coder/foundation/tfl/AUTOSAR/AUTOSAR4p0/IFX + /usr/local/MATLAB/R2016a/toolbox/coder/foundation/tfl/AUTOSAR/AUTOSAR4p0/IFL + /usr/local/MATLAB/R2016a/toolbox/coder/foundation/tfl/gui + /usr/local/MATLAB/R2016a/toolbox/coder/foundation/templates + /usr/local/MATLAB/R2016a/toolbox/shared/simtargets + /usr/local/MATLAB/R2016a/toolbox/physmod/mech/mechdemos + /usr/local/MATLAB/R2016a/toolbox/shared/maputils + /usr/local/MATLAB/R2016a/toolbox/coder/foundation/passmanager + /usr/local/MATLAB/R2016a/toolbox/simulink/simulink/iodata/iomap + /usr/local/MATLAB/R2016a/toolbox/fininst/fininstdemos + /usr/local/MATLAB/R2016a/toolbox/nnet + /usr/local/MATLAB/R2016a/toolbox/nnet/nncontrol + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnadapt + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nndatafun + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnderivative + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nndistance + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nndivision + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nninitlayer + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nninitnetwork + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nninitweight + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnlearn + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnnetfun + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnnetinput + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnnetwork + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnperformance + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnplot + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnprocess + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnsearch + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nntopology + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nntrain + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nntransfer + /usr/local/MATLAB/R2016a/toolbox/nnet/nnet/nnweight + /usr/local/MATLAB/R2016a/toolbox/nnet/nnguis + /usr/local/MATLAB/R2016a/toolbox/nnet/nnobsolete + /usr/local/MATLAB/R2016a/toolbox/nnet/nnutils + /usr/local/MATLAB/R2016a/toolbox/matlab/addons_product + /usr/local/MATLAB/R2016a/toolbox/shared/tracking/trackinglib + /usr/local/MATLAB/R2016a/toolbox/shared/simulink/sysarch/sysarch + /usr/local/MATLAB/R2016a/toolbox/shared/slreportgen/reportexplorer + /usr/local/MATLAB/R2016a/toolbox/coder/embeddedcoder_templates + /usr/local/MATLAB/R2016a/toolbox/coder/wizard + /usr/local/MATLAB/R2016a/toolbox/physmod/sm/core/m + /usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples + /usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples/ros + /usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples/ros/helpers + /usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples/robotalgs + /usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples/robotalgs/helpers + /usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples/robotcore + /usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples/robotcore/helpers + /usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples/robotsimulink + /usr/local/MATLAB/R2016a/toolbox/robotics/robotexamples/robotsimulink/helpers + /usr/local/MATLAB/R2016a/toolbox/shared/controllib/engine + /usr/local/MATLAB/R2016a/toolbox/shared/controllib/engine/numerics + /usr/local/MATLAB/R2016a/toolbox/shared/controllib/engine/options + /usr/local/MATLAB/R2016a/toolbox/shared/controllib/engine/optim + /usr/local/MATLAB/R2016a/toolbox/shared/controllib/engine/blocks + /usr/local/MATLAB/R2016a/toolbox/dsp/filterdesign + /usr/local/MATLAB/R2016a/toolbox/finance/findemos + /usr/local/MATLAB/R2016a/toolbox/physmod/powersys/facts/facts + + + +```matlab +pwd +``` + + ans = + + /home/ryan/Documents/UConn/ME3255/me3255_S2017/lecture_03 + + + +path + +## Assignments (`=`-operator) + +Matlab is interpreted language so each line of code (either saved text file or command-line) is executed as a standalone command + +These are reffered to "scripts" + + +```matlab +a=10; % line one assigns a to 10 +b=a*3; % line two assigns b to 10 times 3 by calling 'a' from line one +a+b % line three does not assign anything directly, but leaving off the ";" prints the result + % ans +``` + + ans = + + 40 + + +Matlab has a number of "objects" that you can assign to variables +1. arrays (vectors and matrices `[`...`]`) +2. strings (text `"`...`"` ) +3. cells (combination of strings, text, even function calls `{`...`}`) +3. functions (both built-in, defined or developed) +4. and more... (classes defined by `classdef` - you can create your own object to help organize data) + +### 1- Arrays + +Default in matlab is that when you assign a value to a variable, it is stored as an array + +arrays are N x M x ... values of integers or floating point numbers or complex integers/floating point numbers + +Use the parantheses to access values in an array `...(n,m)` + + +```matlab +a=10; % a is 1x1 array where a(1,1)==10 +a(1,1)==10 + +``` + + ans = + + 1 + + + +```matlab +a(2) +``` + + Index exceeds matrix dimensions. +  + + +```matlab +A = [1 2 3;4,5,6;7,8,9;10,11,12] +fprintf('size of A is %i x %i\n',size(A)) +A(3,1) +A(6) +``` + + A = + + 1 2 3 + 4 5 6 + 7 8 9 + 10 11 12 + + size of A is 4 x 3 + + ans = + + 7 + + + ans = + + 5 + + +vectors are either 1xN or Nx1 arrays for row and column + + +```matlab +v_row = [1,2,3] %row vector +v_column = [1;2;3] %column vector + +``` + + v_row = + + 1 2 3 + + + v_column = + + 1 + 2 + 3 + + +Matrices are MxN arrays +the `:`-symbol can substitute for a counting + + +```matlab +A(1,:) % the colon assumes you want the first value, 1, counting up by 1 to the last value, 4 +``` + + ans = + + 1 2 3 + + +You can also use every 2nd value or any other integer up to `end` which is the largest value of that row or column of the array + + +```matlab +A(1:2:end,1) % you can also use `end` +``` + + ans = + + 1 + 7 + + + +```matlab +A(:) +``` + + ans = + + 1 + 4 + 7 + 10 + 2 + 5 + 8 + 11 + 3 + 6 + 9 + 12 + + +In general, arrays can be any size + +take rolling 4 die and determining the sum of the components + + +```matlab +A_6666 = zeros(6,6,6,6); %make a 6 x 6 x 6 x 6 array (1296 different values) +for i=1:6 + for j=1:6 + for k=1:6 + for l=1:6 + A_6666(i,j,k,l)=i+j+k+l; % each value is the sum of the indices + end + end + end +end + +``` + + +```matlab +mean(A_6666(:)) +std(A_6666(:)) +``` + + ans = + + 14 + + + ans = + + 3.4170 + + + +```matlab +A_6666(1,4,2,5) +``` + + ans = + + 12 + + +## Cells combine different size arrays and text +### but, you cannot use math operators 'binary operators' + + +```matlab +C={}; +C{1}=linspace(0,1,10); +C{2}=linspace(0,1,3); +C{'z'}='holy cow'; +``` + + +```matlab +C{1}*C{1}' +``` + + ans = + + 3.5185 + + +## Strings can be combined and printed + + +```matlab +string1 = 'computational'; string2 = 'mechanics'; +[string1, ' ', string2] +``` + + ans = + + computational mechanics + + +use `fprintf` to format strings and numbers for output and `sprintf` to save variables + + + +```matlab +fprintf([string1,' ',string2,'\n\n']) +string = sprintf('the dog had %i legs and weighed %1.1f lbs',4,10.0) +``` + + computational mechanics + + + string = + + the dog had 4 legs and weighed 10.0 lbs + + +the `\` signifies a special character e.g. `\n` = newline, `\t` = tab + +to actually print the "\", use `\\` + + +```matlab +fprintf('\\') +``` + + \ + + +## This is helpful to create reports of computed data + + +```matlab +%fid = fopen('file.txt','w'); +fprintf(fid,[string1, ' ', string2]) +fprintf(fid,'\n') +fprintf(fid,string) +fprintf(fid,'\n') +fprintf(fid,'are you awake?') +``` + + ans = + + 23 + + + ans = + + 1 + + + ans = + + 39 + + + ans = + + 1 + + + ans = + + 14 + + +## Math operators (=, +, -, /, *, ^) + +Because matlab assumes all variables are matrices, then all operators are matrix operations + + +```matlab +a+a % add two 1x1 arrays +``` + + ans = 20 + + + +```matlab +A+A % add two 4 x 3 arrays +``` + + ans = + + 2 4 6 + 8 10 12 + 14 16 18 + 20 22 24 + + + + +```matlab +A*A' +``` + + ans = + + 14 32 50 68 + 32 77 122 167 + 50 122 194 266 + 68 167 266 365 + + + +```matlab +A.^2 +``` + + ans = + + 1 4 9 + 16 25 36 + 49 64 81 + 100 121 144 + + + +```matlab +A.*A +``` + + ans = + + 1 4 9 + 16 25 36 + 49 64 81 + 100 121 144 + + + +```matlab +A/A +``` + + [> In pymat_eval (line 31) + In matlabserver (line 24)] + [Warning: Rank deficient, rank = 2, tol = 1.696862e-14.] + + ans = + + 1.0000 0 0 -0.0000 + 0.6667 0 0 0.3333 + 0.3333 0 0 0.6667 + 0.0000 0 0 1.0000 + + + +```matlab +help / +``` + + / Slash or right matrix divide. + A/B is the matrix division of B into A, which is roughly the + same as A*INV(B) , except it is computed in a different way. + More precisely, A/B = (B'\A')'. See MLDIVIDE for details. + + C = MRDIVIDE(A,B) is called for the syntax 'A / B' when A or B is an + object. + + See also MLDIVIDE, RDIVIDE, LDIVIDE. + + Reference page in Doc Center + doc mrdivide + + Other functions named mrdivide + + codistributed/mrdivide gf/mrdivide laurpoly/mrdivide + duration/mrdivide gpuArray/mrdivide StaticModel/mrdivide + DynamicSystem/mrdivide LagOp/mrdivide timeseries/mrdivide + fints/mrdivide + + +To accomplish one-by-one operations, need to include a `.` + + +```matlab +A./A +``` + + ans = + + 1 1 1 + 1 1 1 + 1 1 1 + 1 1 1 + + + +But, for 1x1 arrays, these are considered scalars and you get a free-pass + + +```matlab +a*A % where a=10 and A is 1:12 in a 3 x 4 matrix +``` + + ans = + + 10 20 30 + 40 50 60 + 70 80 90 + 100 110 120 + + + +Some built in Matlab functions (e.g. the reasons to run Matlab) + + +```matlab +t_linear=linspace(0,1,11) +``` + + t_linear = + + Columns 1 through 7 + + 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 + + Columns 8 through 11 + + 0.7000 0.8000 0.9000 1.0000 + + + +```matlab +t_log = logspace(0,2,3) % log interval from 10^0 to 10^2 split into 3 values +``` + + t_log = + + 1 10 100 + + + +```matlab +help logspace +``` + + 'logspace' is a function from the file /usr/share/octave/4.0.0/m/general/logspace.m + + -- Function File: logspace (A, B) + -- Function File: logspace (A, B, N) + -- Function File: logspace (A, pi, N) + Return a row vector with N elements logarithmically spaced from + 10^A to 10^B. + + If N is unspecified it defaults to 50. + + If B is equal to pi, the points are between 10^A and pi, _not_ 10^A + and 10^pi, in order to be compatible with the corresponding MATLAB + function. + + Also for compatibility with MATLAB, return the second argument B if + fewer than two values are requested. + + See also: linspace. + + Additional help for built-in functions and operators is + available in the online version of the manual. Use the command + 'doc ' to search the manual index. + + Help and information about Octave is also available on the WWW + at http://www.octave.org and via the help@octave.org + mailing list. + + +## When using the command prompt, anything in your path or working directory can be run either as a script, function or class (to define objects) + + +```matlab +%myscript +``` + + +```matlab +%plot --format svg +``` + +When using the GUI, your command history is saved, but it is better to save your work either as a script or a function or combination of both + +Creating a default graph script: + + +```matlab +set(0, 'defaultAxesFontSize', 16) +set(0,'defaultTextFontSize',14) +set(0,'defaultLineLineWidth',3) +``` + + +```matlab +plot(t_linear,t_linear.^2) +xlabel('time (s)') +ylabel('displacement (m)') +``` + + +![png](output_58_0.png) + + +#EOL + +## Graphics can be produced with a number of functions + +2-D plots, 3-D plots, contour plots, 3D contour plots ... + + +```matlab +x=linspace(-1,1,21); y=linspace(-1,1,21); +[X,Y]=meshgrid(x,y); +Z=(X.*Y.^3-X.^3.*Y) +``` + + Z = + + Columns 1 through 8: + + 0.00000 0.17100 0.28800 0.35700 0.38400 0.37500 0.33600 0.27300 + -0.17100 0.00000 0.12240 0.20160 0.24300 0.25200 0.23400 0.19440 + -0.28800 -0.12240 0.00000 0.08400 0.13440 0.15600 0.15360 0.13200 + -0.35700 -0.20160 -0.08400 0.00000 0.05460 0.08400 0.09240 0.08400 + -0.38400 -0.24300 -0.13440 -0.05460 0.00000 0.03300 0.04800 0.04860 + -0.37500 -0.25200 -0.15600 -0.08400 -0.03300 0.00000 0.01800 0.02400 + -0.33600 -0.23400 -0.15360 -0.09240 -0.04800 -0.01800 0.00000 0.00840 + -0.27300 -0.19440 -0.13200 -0.08400 -0.04860 -0.02400 -0.00840 0.00000 + -0.19200 -0.13860 -0.09600 -0.06300 -0.03840 -0.02100 -0.00960 -0.00300 + -0.09900 -0.07200 -0.05040 -0.03360 -0.02100 -0.01200 -0.00600 -0.00240 + 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 + 0.09900 0.07200 0.05040 0.03360 0.02100 0.01200 0.00600 0.00240 + 0.19200 0.13860 0.09600 0.06300 0.03840 0.02100 0.00960 0.00300 + 0.27300 0.19440 0.13200 0.08400 0.04860 0.02400 0.00840 -0.00000 + 0.33600 0.23400 0.15360 0.09240 0.04800 0.01800 -0.00000 -0.00840 + 0.37500 0.25200 0.15600 0.08400 0.03300 0.00000 -0.01800 -0.02400 + 0.38400 0.24300 0.13440 0.05460 -0.00000 -0.03300 -0.04800 -0.04860 + 0.35700 0.20160 0.08400 -0.00000 -0.05460 -0.08400 -0.09240 -0.08400 + 0.28800 0.12240 0.00000 -0.08400 -0.13440 -0.15600 -0.15360 -0.13200 + 0.17100 -0.00000 -0.12240 -0.20160 -0.24300 -0.25200 -0.23400 -0.19440 + 0.00000 -0.17100 -0.28800 -0.35700 -0.38400 -0.37500 -0.33600 -0.27300 + + Columns 9 through 16: + + 0.19200 0.09900 0.00000 -0.09900 -0.19200 -0.27300 -0.33600 -0.37500 + 0.13860 0.07200 0.00000 -0.07200 -0.13860 -0.19440 -0.23400 -0.25200 + 0.09600 0.05040 0.00000 -0.05040 -0.09600 -0.13200 -0.15360 -0.15600 + 0.06300 0.03360 0.00000 -0.03360 -0.06300 -0.08400 -0.09240 -0.08400 + 0.03840 0.02100 0.00000 -0.02100 -0.03840 -0.04860 -0.04800 -0.03300 + 0.02100 0.01200 0.00000 -0.01200 -0.02100 -0.02400 -0.01800 0.00000 + 0.00960 0.00600 0.00000 -0.00600 -0.00960 -0.00840 0.00000 0.01800 + 0.00300 0.00240 0.00000 -0.00240 -0.00300 0.00000 0.00840 0.02400 + 0.00000 0.00060 0.00000 -0.00060 0.00000 0.00300 0.00960 0.02100 + -0.00060 0.00000 0.00000 0.00000 0.00060 0.00240 0.00600 0.01200 + 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 + 0.00060 -0.00000 0.00000 0.00000 -0.00060 -0.00240 -0.00600 -0.01200 + -0.00000 -0.00060 0.00000 0.00060 0.00000 -0.00300 -0.00960 -0.02100 + -0.00300 -0.00240 0.00000 0.00240 0.00300 0.00000 -0.00840 -0.02400 + -0.00960 -0.00600 0.00000 0.00600 0.00960 0.00840 0.00000 -0.01800 + -0.02100 -0.01200 0.00000 0.01200 0.02100 0.02400 0.01800 0.00000 + -0.03840 -0.02100 0.00000 0.02100 0.03840 0.04860 0.04800 0.03300 + -0.06300 -0.03360 0.00000 0.03360 0.06300 0.08400 0.09240 0.08400 + -0.09600 -0.05040 0.00000 0.05040 0.09600 0.13200 0.15360 0.15600 + -0.13860 -0.07200 0.00000 0.07200 0.13860 0.19440 0.23400 0.25200 + -0.19200 -0.09900 0.00000 0.09900 0.19200 0.27300 0.33600 0.37500 + + Columns 17 through 21: + + -0.38400 -0.35700 -0.28800 -0.17100 0.00000 + -0.24300 -0.20160 -0.12240 0.00000 0.17100 + -0.13440 -0.08400 0.00000 0.12240 0.28800 + -0.05460 0.00000 0.08400 0.20160 0.35700 + 0.00000 0.05460 0.13440 0.24300 0.38400 + 0.03300 0.08400 0.15600 0.25200 0.37500 + 0.04800 0.09240 0.15360 0.23400 0.33600 + 0.04860 0.08400 0.13200 0.19440 0.27300 + 0.03840 0.06300 0.09600 0.13860 0.19200 + 0.02100 0.03360 0.05040 0.07200 0.09900 + 0.00000 0.00000 0.00000 0.00000 0.00000 + -0.02100 -0.03360 -0.05040 -0.07200 -0.09900 + -0.03840 -0.06300 -0.09600 -0.13860 -0.19200 + -0.04860 -0.08400 -0.13200 -0.19440 -0.27300 + -0.04800 -0.09240 -0.15360 -0.23400 -0.33600 + -0.03300 -0.08400 -0.15600 -0.25200 -0.37500 + 0.00000 -0.05460 -0.13440 -0.24300 -0.38400 + 0.05460 0.00000 -0.08400 -0.20160 -0.35700 + 0.13440 0.08400 0.00000 -0.12240 -0.28800 + 0.24300 0.20160 0.12240 0.00000 -0.17100 + 0.38400 0.35700 0.28800 0.17100 0.00000 + + + + +```matlab +contour(X,Y,Z) +``` + + +![svg](output_63_0.svg) + + + +```matlab +mesh(X,Y,Z) +``` + + +![svg](output_64_0.svg) + + + +```matlab +pcolor(X,Y,Z) +``` + + +![svg](output_65_0.svg) + + +## diff --git a/lecture_03/octave-workspace b/lecture_03/octave-workspace new file mode 100644 index 0000000..4a1464b Binary files /dev/null and b/lecture_03/octave-workspace differ diff --git a/lecture_03/output_58_0.png b/lecture_03/output_58_0.png new file mode 100644 index 0000000..1737c76 Binary files /dev/null and b/lecture_03/output_58_0.png differ diff --git a/lecture_03/output_63_0.svg b/lecture_03/output_63_0.svg new file mode 100644 index 0000000..3ed45d2 --- /dev/null +++ b/lecture_03/output_63_0.svg @@ -0,0 +1,270 @@ + + +Gnuplot +Produced by GNUPLOT 5.0 patchlevel 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -1 + + + + + -0.5 + + + + + 0 + + + + + 0.5 + + + + + 1 + + + + + -1 + + + + + -0.5 + + + + + 0 + + + + + 0.5 + + + + + 1 + + + + + + + + + gnuplot_plot_1a + + + + gnuplot_plot_2a + + + + gnuplot_plot_3a + + + + gnuplot_plot_4a + + + + gnuplot_plot_5a + + + + gnuplot_plot_6a + + + + gnuplot_plot_7a + + + + gnuplot_plot_8a + + + + gnuplot_plot_9a + + + + gnuplot_plot_10a + + + + gnuplot_plot_11a + + + + gnuplot_plot_12a + + + + gnuplot_plot_13a + + + + gnuplot_plot_14a + + + + gnuplot_plot_15a + + + + gnuplot_plot_16a + + + + gnuplot_plot_17a + + + + gnuplot_plot_18a + + + + gnuplot_plot_19a + + + + gnuplot_plot_20a + + + + gnuplot_plot_21a + + + + gnuplot_plot_22a + + + + gnuplot_plot_23a + + + + gnuplot_plot_24a + + + + gnuplot_plot_25a + + + + gnuplot_plot_26a + + + + gnuplot_plot_27a + + + + gnuplot_plot_28a + + + + gnuplot_plot_29a + + + + gnuplot_plot_30a + + + + gnuplot_plot_31a + + + + gnuplot_plot_32a + + + + gnuplot_plot_33a + + + + gnuplot_plot_34a + + + + gnuplot_plot_35a + + + + gnuplot_plot_36a + + + + gnuplot_plot_37a + + + + gnuplot_plot_38a + + + + gnuplot_plot_39a + + + + gnuplot_plot_40a + + + + + + + + + + + + + \ No newline at end of file diff --git a/lecture_03/output_64_0.svg b/lecture_03/output_64_0.svg new file mode 100644 index 0000000..509634c --- /dev/null +++ b/lecture_03/output_64_0.svg @@ -0,0 +1,1632 @@ + + +Gnuplot +Produced by GNUPLOT 5.0 patchlevel 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gnuplot_plot_1a + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gnuplot_plot_2a + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -1 + + + + + + + + + + + + + -0.5 + + + + + + + + + 0 + + + + + + + + + 0.5 + + + + + + + + + + + 1 + + + + + + + + + + + -1 + + + + + + + + + + + -0.5 + + + + + + + + + + + 0 + + + + + + + + + + + + + 0.5 + + + + + + + + + 1 + + + + + + + + + + + + + -0.4 + + + + + + + + + + + + + + + -0.3 + + + + + + + + + + + + + -0.2 + + + + + + + + + + + + + + + + + -0.1 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + 0.1 + + + + + + + + + + + + + + + + + + + 0.2 + + + + + + + + + + + + + + + + + 0.3 + + + + + + + + + + + + + 0.4 + + + + + + + + \ No newline at end of file diff --git a/lecture_03/output_65_0.svg b/lecture_03/output_65_0.svg new file mode 100644 index 0000000..5ce036b --- /dev/null +++ b/lecture_03/output_65_0.svg @@ -0,0 +1,2146 @@ + + +Gnuplot +Produced by GNUPLOT 5.0 patchlevel 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gnuplot_plot_1a + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -1 + + + + + + + + + -0.5 + + + + + + + + + 0 + + + + + + + + + 0.5 + + + + + + + + + 1 + + + + + + + + + -1 + + + + + + + + + -0.5 + + + + + + + + + 0 + + + + + + + + + 0.5 + + + + + + + + + 1 + + + + + + \ No newline at end of file diff --git a/lecture_04/lecture_4.md b/lecture_04/lecture_4.md new file mode 100644 index 0000000..dd549aa --- /dev/null +++ b/lecture_04/lecture_4.md @@ -0,0 +1,339 @@ + +## When using the command prompt, anything in your path or working directory can be run either as a script, function or class (to define objects) + +Questions from last class: +- I downloaded GitHub to my desktop but I cannot sign into my UConn account like I can online. +- I checked my grades on HuskyCt recently and I received a 0 / 100 for Homework 1. +- It is very hard to tell if what I'm doing on github is right or wrong. +- How often will be using our laptops during the lecture? +- How many frogs would it take to move a car that is stuck in the snow? And what would be the approximate cost to do so + +$m_{frog}$=22.7 g (https://en.wikipedia.org/wiki/Common_frog) + +$v_{frog}$=17 kph = 4.72 m/s (http://purelyfacts.com/question/14/is-a-toad-faster-than-a-frog?DDA=113&DDB=40) + +$m_{car}$=1000 kg (reasonable guess) + +conservation of momentum: + +$mv_{1} +mv_{2} = mv_{1}'+mv_{2}' = m_{total}v_{2}'$ + + +```matlab +number_of_frogs = 1; +v2=0; +while v2 < 1 % 1 m/s + m_frogs=number_of_frogs*22.7e-3; + number_of_frogs=number_of_frogs+1; + p1=(m_frogs)*4.72; % momentum 1 + v2=p1/(m_frogs+1000); % p2=p1, so v2=p1/m_total +end +number_of_frogs + +``` + + number_of_frogs = + + 11844 + + + +```matlab +%myscript +``` + + +```matlab +%plot --format svg +``` + +When using the GUI, your command history is saved, but it is better to save your work either as a script or a function or combination of both + +Creating a default graph script: `setdefaults.m` + +```matlab +set(0, 'defaultAxesFontSize', 16) +set(0,'defaultTextFontSize',14) +set(0,'defaultLineLineWidth',3) +``` + + +```matlab +set(0, 'defaultAxesFontSize', 16) +set(0,'defaultTextFontSize',14) +set(0,'defaultLineLineWidth',3) +``` + + +```matlab +t_linear=linspace(0,10,100); +plot(t_linear,t_linear.^2) +xlabel('time (s)') +ylabel('displacement (m)') +``` + + +![png](lecture_4_files/lecture_4_7_0.png) + + +#EOL + +## Graphics can be produced with a number of functions + +2-D plots, 3-D plots, contour plots, 3D contour plots ... + + +```matlab +x=linspace(-1,1,21); y=linspace(-1,1,21); +[X,Y]=meshgrid(x,y); +Z=(X.*Y.^3-X.^3.*Y) +``` + + Z = + + Columns 1 through 7 + + 0 0.1710 0.2880 0.3570 0.3840 0.3750 0.3360 + -0.1710 0 0.1224 0.2016 0.2430 0.2520 0.2340 + -0.2880 -0.1224 0 0.0840 0.1344 0.1560 0.1536 + -0.3570 -0.2016 -0.0840 0 0.0546 0.0840 0.0924 + -0.3840 -0.2430 -0.1344 -0.0546 0 0.0330 0.0480 + -0.3750 -0.2520 -0.1560 -0.0840 -0.0330 0 0.0180 + -0.3360 -0.2340 -0.1536 -0.0924 -0.0480 -0.0180 0 + -0.2730 -0.1944 -0.1320 -0.0840 -0.0486 -0.0240 -0.0084 + -0.1920 -0.1386 -0.0960 -0.0630 -0.0384 -0.0210 -0.0096 + -0.0990 -0.0720 -0.0504 -0.0336 -0.0210 -0.0120 -0.0060 + 0 0 0 0 0 0 0 + 0.0990 0.0720 0.0504 0.0336 0.0210 0.0120 0.0060 + 0.1920 0.1386 0.0960 0.0630 0.0384 0.0210 0.0096 + 0.2730 0.1944 0.1320 0.0840 0.0486 0.0240 0.0084 + 0.3360 0.2340 0.1536 0.0924 0.0480 0.0180 0.0000 + 0.3750 0.2520 0.1560 0.0840 0.0330 0 -0.0180 + 0.3840 0.2430 0.1344 0.0546 -0.0000 -0.0330 -0.0480 + 0.3570 0.2016 0.0840 0 -0.0546 -0.0840 -0.0924 + 0.2880 0.1224 0 -0.0840 -0.1344 -0.1560 -0.1536 + 0.1710 0.0000 -0.1224 -0.2016 -0.2430 -0.2520 -0.2340 + 0 -0.1710 -0.2880 -0.3570 -0.3840 -0.3750 -0.3360 + + Columns 8 through 14 + + 0.2730 0.1920 0.0990 0 -0.0990 -0.1920 -0.2730 + 0.1944 0.1386 0.0720 0 -0.0720 -0.1386 -0.1944 + 0.1320 0.0960 0.0504 0 -0.0504 -0.0960 -0.1320 + 0.0840 0.0630 0.0336 0 -0.0336 -0.0630 -0.0840 + 0.0486 0.0384 0.0210 0 -0.0210 -0.0384 -0.0486 + 0.0240 0.0210 0.0120 0 -0.0120 -0.0210 -0.0240 + 0.0084 0.0096 0.0060 0 -0.0060 -0.0096 -0.0084 + 0 0.0030 0.0024 0 -0.0024 -0.0030 0 + -0.0030 0 0.0006 0 -0.0006 0 0.0030 + -0.0024 -0.0006 0 0 0.0000 0.0006 0.0024 + 0 0 0 0 0 0 0 + 0.0024 0.0006 -0.0000 0 0 -0.0006 -0.0024 + 0.0030 0 -0.0006 0 0.0006 0 -0.0030 + 0 -0.0030 -0.0024 0 0.0024 0.0030 0 + -0.0084 -0.0096 -0.0060 0 0.0060 0.0096 0.0084 + -0.0240 -0.0210 -0.0120 0 0.0120 0.0210 0.0240 + -0.0486 -0.0384 -0.0210 0 0.0210 0.0384 0.0486 + -0.0840 -0.0630 -0.0336 0 0.0336 0.0630 0.0840 + -0.1320 -0.0960 -0.0504 0 0.0504 0.0960 0.1320 + -0.1944 -0.1386 -0.0720 0 0.0720 0.1386 0.1944 + -0.2730 -0.1920 -0.0990 0 0.0990 0.1920 0.2730 + + Columns 15 through 21 + + -0.3360 -0.3750 -0.3840 -0.3570 -0.2880 -0.1710 0 + -0.2340 -0.2520 -0.2430 -0.2016 -0.1224 -0.0000 0.1710 + -0.1536 -0.1560 -0.1344 -0.0840 0 0.1224 0.2880 + -0.0924 -0.0840 -0.0546 0 0.0840 0.2016 0.3570 + -0.0480 -0.0330 0.0000 0.0546 0.1344 0.2430 0.3840 + -0.0180 0 0.0330 0.0840 0.1560 0.2520 0.3750 + -0.0000 0.0180 0.0480 0.0924 0.1536 0.2340 0.3360 + 0.0084 0.0240 0.0486 0.0840 0.1320 0.1944 0.2730 + 0.0096 0.0210 0.0384 0.0630 0.0960 0.1386 0.1920 + 0.0060 0.0120 0.0210 0.0336 0.0504 0.0720 0.0990 + 0 0 0 0 0 0 0 + -0.0060 -0.0120 -0.0210 -0.0336 -0.0504 -0.0720 -0.0990 + -0.0096 -0.0210 -0.0384 -0.0630 -0.0960 -0.1386 -0.1920 + -0.0084 -0.0240 -0.0486 -0.0840 -0.1320 -0.1944 -0.2730 + 0 -0.0180 -0.0480 -0.0924 -0.1536 -0.2340 -0.3360 + 0.0180 0 -0.0330 -0.0840 -0.1560 -0.2520 -0.3750 + 0.0480 0.0330 0 -0.0546 -0.1344 -0.2430 -0.3840 + 0.0924 0.0840 0.0546 0 -0.0840 -0.2016 -0.3570 + 0.1536 0.1560 0.1344 0.0840 0 -0.1224 -0.2880 + 0.2340 0.2520 0.2430 0.2016 0.1224 0 -0.1710 + 0.3360 0.3750 0.3840 0.3570 0.2880 0.1710 0 + + + +```matlab +contour(X,Y,Z) +``` + + +![png](lecture_4_files/lecture_4_12_0.png) + + + +```matlab +mesh(X,Y,Z) +``` + + +![png](lecture_4_files/lecture_4_13_0.png) + + + +```matlab +pcolor(X,Y,Z) +``` + + +![png](lecture_4_files/lecture_4_14_0.png) + + +## Functions + +So far, everything has been executed as a script, or calling a built-in function. Now we begin building our own functions. + +Functions are saved in memory (or better yet) in a folder in your path or current directory + +Example of storing function in memory + +$f(x,y) = (xy^{3}-x^{3}y)$ + + +```matlab +f= @(x,y) (x.*y.^3-x.^3.*y) +``` + + f = + + @(x,y)(x.*y.^3-x.^3.*y) + + + +```matlab +f(0.1,-0.5) +``` + + ans = + + -0.0120 + + +Here we will save a function called `my_function` as `my_function.m` + +```matlab +function [vx,vy] = my_function(x,y,t) + % Help documentation of "my_function" + % This function computes the velocity in the x- and y-directions given + % three vectors of position in x- and y-directions as a function of time + % x = x-position + % y = y-position + % t = time + % output + % vx = velocity in x-direction + % vy = velocity in y-direction + + vx=zeros(length(t),1); + vy=zeros(length(t),1); + + vx(1:end-1) = diff(x)./diff(t); % calculate vx as delta x/delta t + vy(1:end-1) = diff(y)./diff(t); % calculate vy as delta y/delta t + + vx(end) = vx(end-1); + vy(end) = vy(end-1); + +end +``` + + +```matlab +help my_function +``` + + Help documentation of "my_function" + This function computes the velocity in the x- and y-directions given + three vectors of position in x- and y-directions as a function of time + x = x-position + y = y-position + t = time + output + vx = velocity in x-direction + vy = velocity in y-direction + + + +```matlab +t=linspace(0,10,100)'; +x=t.^3; % vx = 3*t^2 +y=t.^2/2; % vy = t +[vx,vy]=my_function(x,y,t); +``` + + +```matlab +yyaxis left +plot(t(1:10:end),vx(1:10:end),'o',t,3*t.^2) +ylabel('v_{x}') +yyaxis right +plot(t(1:10:end),vy(1:10:end),'s',t, t) +ylabel('v_{y}') +xlabel('time') +``` + + +![png](lecture_4_files/lecture_4_22_0.png) + + +Now, create a new function that calls 'my_function' called, `my_caller.m` + + +```matlab +help my_caller +``` + + Help documentation of "my_caller" + This function computes the acceleration in the x- and y-directions given + three vectors of position in x- and y-directions as a function of time + x = x-position + y = y-position + t = time + output + ax = velocity in x-direction + ay = velocity in y-direction + + + +```matlab +[ax,ay]=my_caller(x,y,t); +``` + + +```matlab +yyaxis left +plot(t(1:10:end),ax(1:10:end),'o',t,6*t) +ylabel('a_{x}') +yyaxis right +plot(t(1:10:end),ay(1:10:end),'s',t, 1*t./t) +ylabel('a_{x}') +xlabel('time') +axis([0,10,0,3]) +``` + + +![png](lecture_4_files/lecture_4_26_0.png) + + + +```matlab +diff_match_dims(x,t) +``` + + Undefined function 'diff_match_dims' for input arguments of type 'double'. +  + + +```matlab + +``` diff --git a/lecture_04/lecture_4.pdf b/lecture_04/lecture_4.pdf new file mode 100644 index 0000000..db18202 Binary files /dev/null and b/lecture_04/lecture_4.pdf differ diff --git a/lecture_04/lecture_4_files/lecture_4_12_0.png b/lecture_04/lecture_4_files/lecture_4_12_0.png new file mode 100644 index 0000000..3d8bd34 Binary files /dev/null and b/lecture_04/lecture_4_files/lecture_4_12_0.png differ diff --git a/lecture_04/lecture_4_files/lecture_4_13_0.png b/lecture_04/lecture_4_files/lecture_4_13_0.png new file mode 100644 index 0000000..fbf56f7 Binary files /dev/null and b/lecture_04/lecture_4_files/lecture_4_13_0.png differ diff --git a/lecture_04/lecture_4_files/lecture_4_14_0.png b/lecture_04/lecture_4_files/lecture_4_14_0.png new file mode 100644 index 0000000..b982415 Binary files /dev/null and b/lecture_04/lecture_4_files/lecture_4_14_0.png differ diff --git a/lecture_04/lecture_4_files/lecture_4_22_0.png b/lecture_04/lecture_4_files/lecture_4_22_0.png new file mode 100644 index 0000000..ed48529 Binary files /dev/null and b/lecture_04/lecture_4_files/lecture_4_22_0.png differ diff --git a/lecture_04/lecture_4_files/lecture_4_26_0.png b/lecture_04/lecture_4_files/lecture_4_26_0.png new file mode 100644 index 0000000..df1b771 Binary files /dev/null and b/lecture_04/lecture_4_files/lecture_4_26_0.png differ diff --git a/lecture_04/lecture_4_files/lecture_4_7_0.png b/lecture_04/lecture_4_files/lecture_4_7_0.png new file mode 100644 index 0000000..1584226 Binary files /dev/null and b/lecture_04/lecture_4_files/lecture_4_7_0.png differ diff --git a/lecture_04/myscript.m b/lecture_04/myscript.m new file mode 100644 index 0000000..4488e0f --- /dev/null +++ b/lecture_04/myscript.m @@ -0,0 +1,11 @@ +f=100; + +for i=1:10 + g=i^2; + if f==g + fprintf('we made it\n') + else + fprintf('not yet\n') + end +end + diff --git a/lecture_05/.ipynb_checkpoints/lecture_05-checkpoint.ipynb b/lecture_05/.ipynb_checkpoints/lecture_05-checkpoint.ipynb new file mode 100644 index 0000000..2fd6442 --- /dev/null +++ b/lecture_05/.ipynb_checkpoints/lecture_05-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_05/gp_image_01.png b/lecture_05/gp_image_01.png new file mode 100644 index 0000000..ef291b5 Binary files /dev/null and b/lecture_05/gp_image_01.png differ diff --git a/lecture_05/lecture_05.ipynb b/lecture_05/lecture_05.ipynb new file mode 100644 index 0000000..66fcbe9 --- /dev/null +++ b/lecture_05/lecture_05.ipynb @@ -0,0 +1,559 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Questions from last class" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When you execute the given function \n", + "\n", + "my_function.m:\n", + "\n", + "```matlab\n", + "function [x,y] = my_function(max_time)\n", + " N=100;\n", + " t=linspace(0,max_time,N);\n", + " x=t.^2;\n", + " y=2*t;\n", + "end\n", + "```\n", + "\n", + "as \n", + "\n", + "```>> [x,y] = my_function(20);```\n", + "\n", + "What variables are saved to your workspace?\n", + "\n", + "![responses](q1.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How do you write a help description for a function?\n", + "\n", + "![responses to question 2](q2.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " \n", + "How to keep our forked ME3255S page up to date with the original\n", + "pretty tired this morning\n", + "\n", + "How do I use the Github Desktop?\n", + "\n", + "whats your favorite football team?\n", + "\n", + "Will UConn's github get updated to the newest version of github?\n", + "As u said in class trail and error is the best way of learning.\n", + "\n", + "I believe the % is the same as matlab where it de-links your code into text\n", + "\n", + "Does the @ symbol designate a pointer? \n", + "\n", + "Given the change of air pressure as altitude increases, how fast would a frisbee have to travel (and spin) to hit an airplane?\n", + "\n", + "What is a gui?\n", + "\n", + "\n", + "could you go over a nested for loop example\n", + "\n", + "Can't seem to get this function to produce any graph and am not sure why\n", + "\n", + "When are these google forms due?\n", + "\n", + "how do I create a new function using Github on my desktop?\n", + "\n", + "Can you explain the first question more in class?\n", + "\n", + "What is the meaning of life?\n", + "\n", + "Should I just know how or what these topics are or will we learn them in the future?\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "f = \n", + "\n", + " @(x)x.^2\n" + ] + } + ], + "source": [ + "f =@(x) x.^2\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 1 9 25 49 81\n", + "\n", + "\n", + "ans =\n", + "\n", + " 16\n" + ] + } + ], + "source": [ + "f([1:2:10])\n", + "f(4)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "i=1 and j=1\n", + "i=1 and j=2\n", + "i=1 and j=3\n", + "i=2 and j=1\n", + "i=2 and j=2\n", + "i=2 and j=3\n", + "i=3 and j=1\n", + "i=3 and j=2\n", + "i=3 and j=3\n", + "i=4 and j=1\n", + "i=4 and j=2\n", + "i=4 and j=3\n", + "i=5 and j=1\n", + "i=5 and j=2\n", + "i=5 and j=3\n", + "i=6 and j=1\n", + "i=6 and j=2\n", + "i=6 and j=3\n" + ] + } + ], + "source": [ + "% nested for loop example\n", + "for i = [1:6]\n", + " for j = [1:3]\n", + " fprintf('i=%i and j=%i\\n',i,j)\n", + " end\n", + "end\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# From last class " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help documentation of \"my_function\"\n", + " This function computes the velocity in the x- and y-directions given\n", + " three vectors of position in x- and y-directions as a function of time\n", + " x = x-position\n", + " y = y-position\n", + " t = time\n", + " output\n", + " vx = velocity in x-direction\n", + " vy = velocity in y-direction\n" + ] + } + ], + "source": [ + "help my_function" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help documentation of \"my_caller\"\n", + " This function computes the acceleration in the x- and y-directions given\n", + " three vectors of position in x- and y-directions as a function of time\n", + " x = x-position\n", + " y = y-position\n", + " t = time\n", + " output\n", + " ax = acceleration in x-direction\n", + " ay = acceleration in y-direction\n" + ] + } + ], + "source": [ + "help my_caller" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nePDg2rVr2Q7NyS5dunTlypUHH3xw8+bNX3/99ddff/3iiy+KxeLc3Nz33nuP7ehc66WXXpJK7beK\n8SbPPPPMrl27Ro0atWnTpm+++earr756++2377nnHrbjcr7Vq1efOHFi4sSJO3fuPH369OHDh596\n6im9Xv/MM890/ceWZykuLj516lRUVNTcuXMdnOY7P1ndsHi7RYsWJSSGCTwSAAAKrklEQVQkfPPN\nN9aWpqamO++8MyEhQaVSsReX8126dKm+vt6u8fDhwwkJCbfffrvJZGIlKjfIzc1NSEg4ePBgQkJC\nQkIC2+E43+eff56QkPDwww+3t7ezHYtrXb16NSEhYfTo0Tqdzrb9iSeeSEhIyM3NZSswpzh79qz1\nT9DB/1d95yerKy9/Qqqurj516pREIpk3b561MTg4eP78+UT07bffshea88XExERERNg1Tps2TSgU\nGgwGps/a+1y4cOHtt99esGDB3XffzXYsrrJt2zYieuWVVwQC+42SvczZs2eJKCwsLCzshn2cmREU\nlUrFTlhOMnLkyF7/BH3qJ6srL09IZWVlRDR58mS79uTkZCI6c+YMCzG5l9lsNpvNRGT3N9xrvPrq\nq0FBQWvWeO2mVuXl5bW1tcOHD09MTCSijo4Og8HAdlCukpyc7O/v39zc3NHRYdteWVlJv6Ql7+bj\nP1lenpDOnTtHRBKJ/Qrf0dHRRFRSUsJCTO518ODB9vb2hIQErxwO3bFjR2Fh4UsvveSt6ZaIqqqq\niGjs2LGFhYXz588fO3bs+PHjk5KS3njjjebmZrajczKBQPD0008bjcYXXnihsbGRiMxm865du77+\n+uvRo0fPmTOH7QBdzsd/sry87Pvy5ctENHz4cLv22NhYIvK+v892tFptZmYmET3//PNsx+J89fX1\nGzZsmD59OtOb4a2qq6uJqLKyMj09PT4+fvHixWaz+T//+c+nn356/PjxvLw8L/unRkZGRnR09Mcf\nfzx16lShUNjR0REYGLhixYqVK1d6fY8l+fxPlpcnJJPJREQhId0vhcv0ZXmr1tbWjIyMhoaGFStW\nzJgxg+1wnO8vf/mL2Wx+44032A7EtbRaLRGdO3du5syZW7ZsYRpbW1sfeeSRM2fObN269dlnn2U1\nQCe7fPny119/fe7cuZiYmISEhMbGxhMnTnz77bd33HFHamoq29G5nC//ZJHXd9kx/6TqWi3K/Lny\n+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\nAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "t=linspace(0,10,100)'; \n", + "x=t.^3; % vx = 3*t^2\n", + "y=t.^2/2; % vy = t\n", + "[vx,vy]=my_function(x,y,t);\n", + "[ax,ay]=my_caller(x,y,t);\n", + "yyaxis left\n", + "plot(t(1:10:end),ax(1:10:end),'o',t,6*t)\n", + "ylabel('a_{x}')\n", + "yyaxis right\n", + "plot(t(1:10:end),ay(1:10:end),'s',t, 1*t./t)\n", + "ylabel('a_{y}')\n", + "xlabel('time')\n", + "axis([0,10,0,3])" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[0;31mUndefined function 'diff_match_dims' for input arguments of type 'double'.\n", + "\u001b[0m" + ] + } + ], + "source": [ + "diff_match_dims(x,t)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Good coding habits\n", + "## naming folders and files" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[Stanford file naming best practices](https://library.stanford.edu/research/data-management-services/data-best-practices/best-practices-file-naming)\n", + "\n", + "1. Include information to distinguish file name e.g. project name, objective of function, name/initials, type of data, conditions, version of file, \n", + "2. if using dates, use YYYYMMDD, so the computer organizes by year, then month, then day\n", + "3. avoid special characters e.g. !, #, \\$, ...\n", + "4. avoid using spaces if not necessary, some programs consider a space as a break in code use dashes `-` or underscores `_` or CamelCase" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Commenting your code" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Its important to comment your code to mention what a variable's units are, what the function is supposed to do, etc. \n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[0;31mError: Function definitions are not permitted in this context.\n", + "\u001b[0m" + ] + } + ], + "source": [ + "function i=code(j)\n", + " % Example of bad variable names and bad function name\n", + " for w=1:j\n", + " i(w)=w;\n", + " end\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "code not found.\n", + "\n", + "Use the Help browser search field to search the documentation, or\n", + "type \"help help\" for help command options, such as help for methods.\n" + ] + } + ], + "source": [ + "help code" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Choose variable names that describe the variable" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "function count_vector=counting_function(max_value)\n", + " % Good variable names and better help documentation\n", + " % \n", + " % counting function creates a vector from 1 to max_value where each index, i, is \n", + " % stored in each vector spot\n", + " for i=1:max_value\n", + " count_vector(i)=i; % set each element in count_vector to i\n", + " end\n", + "end " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'counting_function' is a command-line function\n", + "\n", + " Good variable names and better help documentation\n", + " \n", + " counting function creates a vector from 1 to max_value where each index, i, is \n", + " stored in each vector spot\n", + "\n", + "\n", + "Additional help for built-in functions and operators is\n", + "available in the online version of the manual. Use the command\n", + "'doc ' to search the manual index.\n", + "\n", + "Help and information about Octave is also available on the WWW\n", + "at http://www.octave.org and via the help@octave.org\n", + "mailing list.\n" + ] + } + ], + "source": [ + "help counting_function" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Putting it all together" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. Clone your homework_1 to your computer\n", + "2. open Matlab (cli, jupyter or gui)\n", + "3. Change working directory to homework_1 *e.g.* Windows:`cd('C:\\Users\\rcc02007\\Documents\\Github\\homework_1')`, Mac: `cd('/Users/rcc02007/Documents/Github/homework_1')`\n", + "4. You have already created your first script `setdefaults.m` (if not see lecture_4)\n", + "5. Run `>> setdefaults.m`\n", + "6. Create a new m-file called nitrogen_pressure.m\n", + "7. Create a function based upon the ideal gas law for nitrogen, Pv=RT\n", + " 1. R=0.2968 kJ/(kg-K)\n", + " 2. inputs to function are v (specific volume m^3/kg), and T, temperature (K)\n", + " 3. output is P, pressure (kPa)\n", + "8. Once the function works, commit the change to the repository (add a message, like 'added file nitrogen_pressure.m'\n", + "9. After file is 'committed', 'push' the changes to your github account\n", + "\n", + "for the command-line git user, this is steps 8 and 9:\n", + "1. `$ git add *`\n", + "2. `$ git commit -m 'added file nitrogen_pressure.m'`\n", + "3. `$ git push -u origin master\n", + " Username for 'https://github.uconn.edu':rcc02007 \n", + " Password for 'https://rcc02007@github.uconn.edu': `\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Now, use this function to plot the range of pressures that a pressure vessel would experience if it is 1000 gallons (3.79 m^3) with 10-20 kg of Nitrogen and temperatures range from -10 to 35 degrees C. \n", + "\n", + "```matlab\n", + "v=0.379/linspace(50,20,10);\n", + "T=273.15+linspace(-10,35,10);\n", + "[v_grid,T_grid]=meshgrid(v,T);\n", + "P = nitrogen_pressure(v,T);\n", + "pcolor(v_grid,T_grid,P)\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\nB3RJTUUH4QEfDxsqXQdJjwAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAzMS1KYW4tMjAxNyAxMDoyNzo0MkGstPEAACAA\nSURBVHic7N15XFNX2jjwYxKWCMQNRGF4QQYFRAoiLoOoiPuOoIMVN1S0KJYRHa1KHewoFuu840Kh\niqUKVGwRQaFqVaxMlbEKBlxQFCuUnwISsA0EAskNvz9O3zuZbOTeJCSQ5/vxj0PuPQu0Hx7uPec8\np09nZycCAAAA9I2h7wEAAAAACEFAAgAAYCAgIAEAADAIEJAAAAAYBAhIAAAADAIEJAAAAAYBAhIA\nAACDAAEJAACAQYCABAAAwCBAQAIAAGAQICABAAAwCBCQAAAAGAQISAAAAAwCBCQAAAAGAQISAAAA\ngwABCQAAgEGAgAQAAMAgQEACAABgECAgAQAAMAgQkAAAABgECEgAAAAMAkuTyiKRqLm5WSQSEQRh\nYmJiYmLC4XAYDAhyAAAAKKMckGpqao4dO1ZSUtLY2CgUCuVvsLCwGDx48Jw5c5YtW2Zra6uNQQIA\nAOj9+nR2dqpz35s3b3bs2PHgwQOCINRvnc1mz507NyYmxtramu4IAQAAGIWuA9KNGzf27t3b2Nio\nSTf29vanTp1ydnbWpBEAAAC9mKqAdOPGjY8++qi5uVnmcw6HY2Nj4+vru3TpUgsLCyaTyWAwCIIQ\ni8XNzc2JiYnV1dU8Hq+trU2mop2dXVpamoODg/a/DwAAAD2c4oBUX1+/ZMmSt2/fkp8wmUxnZ+d/\n/vOf9vb2ffv2Vafppqam0tLS+Pj4mpoa6c/9/f2/+OILExMTDYcOAACgN1EQkNrb29977z3yS3t7\n+3/+859eXl60+xCJRPn5+Z999hn53m/AgAF3796l3SAAAIDeR9USbT8/vzt37ty8eVOTaIQQMjEx\nWbx4cVFR0ZUrV+zt7TVpCgAAQG+lOCB5e3v/9NNPX331lXZXxzk7O9+8eTM/Px8W3QEAAJCh7rJv\nAAAAQKc0ytQAVAjwtSwsEeh7FAAYIzab3draqkkLrq6u2hoMPRUVFfodgF5AQNKVwhKBqMSTUpXm\n1oEDJxVWfx9MozvHWRcuFGykUZFUj9iR04785WacJo2QjgTGeV5J10pT0n4TWfyyMNj0m0Kttyyj\nI3SK5fEyXfcir08rs3nnqP4fPe/+rpX59dMR/cJe6nsU1Pz29R81b+TRkzrNG6HH02OIvrrWL8g7\nBwAAwCBAQAIAAGAQVL2ya21tnTFjBi7PmDEjLi5O/XYPHz6ck5ODy99//72lpSXdEQIAgB4QQti8\n391UPSGtWLGCx+PxeLyOjg5K0QghtH37djabjauHh4drNEYAAABGQGlA4vF4T548weXLly/TaPrC\nhQu48PDhw/r6ehotAAAAMB5KA9KePXtwISAgwMbGhkbTHA5n3rx5uLx3714aLQAAADAeSgPS/fv3\nceGTTz6h3XpsbCwuQOY6AAAAqile1MDn8wUCAULIwsJCk1NfBw4cOGDAgHfv3gmFwqampoEDB9Ju\nCgAAulMnLGrodoqfkHg8Hi4MHjxYww7I130aHvEHAACgd1MckMhD+fr166dhB2QL8gf9AQAAACTF\nAYkgCFzQ/Bi90NBQXDh9+rSGTQEAAOjFFM8hMZlMXBCJRBp2kJ+fjwtLly7VsCkAAOg+7TCH1N0U\nPyGZm5vjgubv2RoaGnChf//+GjYFAACgF1MckKysrHDh7du3GnZQV1cn0yYAAAAgT3FAIpd6Nzc3\nk484NLS0tJCL64YOHUq7HQAAAL2e4oDEZDLt7e1xWZMkC/v27cOFwYMHm5mZ0W4HAABAr6c0U0NM\nTAwu3Lx588cff6TRdHFx8aVLl3B506ZNNFoAAAC96WDp7Z+xUvqdz58/PzY2tq2tDSG0fv369PT0\ncePGqd/uo0ePwsLCfu+DxXr//fc1HGiXJBLJkydP6uvrf/vtNz6fb2Vl1bdvXwcHB09PCse2SiSS\nu3fv1tfX19XV2dnZ2djYTJgwgcGAU6MAAEDnVIXiEydOrFq1CpdXrlwZGhr6t7/9jVwRroxEIklI\nSJDedZSQkKDxOFU5e/Zsfn5+WVmZWCyWvzpo0KDly5dHRER0+c4wIyMjKSlJJqOEtbX15s2bly9f\nrs0RAwAAkKPqb//x48evWbOG/PKbb74ZOXLkokWLKioqmpqaJBIJeUkikfz6668vXrxYunSpu7u7\ndDQKDQ2dP3++9gcupbCwsKSkRGE0Qgg1NjYeP3580aJFqo/AiI6O/vvf/y6f34jH4+3bt2/79u1a\n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\ntrY2nGthYZGQkEA/LXTjxg1cXo0IQw0NDeHh4Q8fPkQIOTk5HThwwNHRUbJAQUFBXFxcbW2t1Ikz\nZsz4/PPPLSwsaDoMxtzc3N/f/8KFCxRFnT17FtYkSWFiJrvVq1fv2rWLxpWzubmZ3rts1apVP/zw\ng5Q2Qgg9efLkww8/3L17t6IThULhokWLvvrqK9mXAkKIoqijR4ZSi8cAABK+SURBVI8GBwc3NDQo\nquHZs2eLFi2Kj49X5KItEokyMjKUztlqHa0LRj4ITp06RX/WzZs3sTZiMpmzZ8+Wyi0tLQ0MDPzl\nl1/kVlJbWxsTE/Pll1+qKJXu2LRp065duyRfzZgHDx4sWrQIv78uXrwYFhYm+WrGiESinTt3/vDD\nD4oq17zj0dPe3k42dPDz81PxLB3d8pIlS/DYqLu7WygUPn36FGsXJpMZEhKSlZVFrzIRQvjbCylT\nrrJUVlaGhIRgbTRu3LiffvpJShtlZWWFh4fLaiN80ffee6+5uVmVC02cOBEnsOcFIIkpjZB+/vnn\nvLw8nA4JCXnnnXe8vb3ZbDaOdnXnzp3CwkK8hZcikpOTy8vLLSwsli5dGhQU9Nprr3V2dp4/fz45\nORk/Nnv27OHxeLIf3WKxeNWqVeS5nTdv3ltvvTVhwgRzc/O6urq8vLzvv/9eKBTW19cvXrz49OnT\nsiP9np6e5cuXYyM4QsjT03PRokUeHh5DhgwRi8UVFRUVFRXnzp0rLS1V5adwc3P7/vvvEULV1dU7\nd+5ECDGZzMTERMkyVlZWqlSlXcEwAQEBHA5HKBS2tbWdPXuWZtyZkZFBThkwYIBkVkNDw4oVK/DH\nB4vFioiIePvtt0eOHNnW1nbx4sV9+/b99ttvCKH9+/cPGjRo5cqVqounXdLS0oqKijgczuLFi319\nfV1cXB48eHDp0qXk5GSKooRC4SeffLJly5Z169aJRKKZM2cGBQWNGTMGIVRQUJCUlIRfcAkJCbNm\nzZJ6AyJtdDylXL16Fet7BwcHFa1/urvltWvXrl27tqen58aNG62trWKxmMViDR482NXVVcXROX5F\nMJnMXm3id+XKlTVr1nR0dCCEpk+fnpCQIPVLVlRUbNq0Caft7Oyio6Nnzpw5aNCgZ8+e5eXlJSUl\n1dXVxcbGqnItMny8cuUKNoyrLufLzwvTYdGiRTwej8fj7d27V1EZiqJ+++03qYNLlizh/YWHh8et\n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\nONp5CLqPAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "setdefaults;\n", + "v=3.79./linspace(10,20,10);\n", + "T=273.15+linspace(-10,35,10);\n", + "[v_grid,T_grid]=meshgrid(v,T);\n", + "P = nitrogen_pressure(v_grid,T_grid);\n", + "pcolor(v_grid,T_grid-273.15,P-100)\n", + "xlabel('specific volume (m^3/kg)')\n", + "ylabel('Temperature (C)')\n", + "%zlabel('Pressure (kPa)')\n", + "\n", + "%colormap winter\n", + "%colormap summer\n", + "%colormap jet\n", + "colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "file_extension": ".m", + "help_links": [ + { + "text": "MetaKernel Magics", + "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" + } + ], + "mimetype": "text/x-octave", + "name": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_05/lecture_05.md b/lecture_05/lecture_05.md new file mode 100644 index 0000000..11c2894 --- /dev/null +++ b/lecture_05/lecture_05.md @@ -0,0 +1,325 @@ + + +```octave +%plot --format svg +``` + +## Questions from last class + +When you execute the given function + +my_function.m: + +```matlab +function [x,y] = my_function(max_time) + N=100; + t=linspace(0,max_time,N); + x=t.^2; + y=2*t; +end +``` + +as + +```>> [x,y] = my_function(20);``` + +What variables are saved to your workspace? + +![responses](q1.png) + +How do you write a help description for a function? + +![responses to question 2](q2.png) + + +How to keep our forked ME3255S page up to date with the original +pretty tired this morning + +How do I use the Github Desktop? + +whats your favorite football team? + +Will UConn's github get updated to the newest version of github? +As u said in class trail and error is the best way of learning. + +I believe the % is the same as matlab where it de-links your code into text + +Does the @ symbol designate a pointer? + +Given the change of air pressure as altitude increases, how fast would a frisbee have to travel (and spin) to hit an airplane? + +What is a gui? + + +could you go over a nested for loop example + +Can't seem to get this function to produce any graph and am not sure why + +When are these google forms due? + +how do I create a new function using Github on my desktop? + +Can you explain the first question more in class? + +What is the meaning of life? + +Should I just know how or what these topics are or will we learn them in the future? + + + +```octave +f =@(x) x.^2 + + +``` + + f = + + @(x)x.^2 + + + +```octave +f([1:2:10]) +f(4) +``` + + ans = + + 1 9 25 49 81 + + + ans = + + 16 + + + +```octave +% nested for loop example +for i = [1:6] + for j = [1:3] + fprintf('i=%i and j=%i\n',i,j) + end +end + +``` + + i=1 and j=1 + i=1 and j=2 + i=1 and j=3 + i=2 and j=1 + i=2 and j=2 + i=2 and j=3 + i=3 and j=1 + i=3 and j=2 + i=3 and j=3 + i=4 and j=1 + i=4 and j=2 + i=4 and j=3 + i=5 and j=1 + i=5 and j=2 + i=5 and j=3 + i=6 and j=1 + i=6 and j=2 + i=6 and j=3 + + +# From last class + + +```octave +help my_function +``` + + Help documentation of "my_function" + This function computes the velocity in the x- and y-directions given + three vectors of position in x- and y-directions as a function of time + x = x-position + y = y-position + t = time + output + vx = velocity in x-direction + vy = velocity in y-direction + + + +```octave +help my_caller +``` + + Help documentation of "my_caller" + This function computes the acceleration in the x- and y-directions given + three vectors of position in x- and y-directions as a function of time + x = x-position + y = y-position + t = time + output + ax = acceleration in x-direction + ay = acceleration in y-direction + + + +```octave +t=linspace(0,10,100)'; +x=t.^3; % vx = 3*t^2 +y=t.^2/2; % vy = t +[vx,vy]=my_function(x,y,t); +[ax,ay]=my_caller(x,y,t); +yyaxis left +plot(t(1:10:end),ax(1:10:end),'o',t,6*t) +ylabel('a_{x}') +yyaxis right +plot(t(1:10:end),ay(1:10:end),'s',t, 1*t./t) +ylabel('a_{y}') +xlabel('time') +axis([0,10,0,3]) +``` + + +![png](lecture_05_files/lecture_05_11_0.png) + + + +```octave +diff_match_dims(x,t) +``` + + Undefined function 'diff_match_dims' for input arguments of type 'double'. +  + +# Good coding habits +## naming folders and files + +[Stanford file naming best practices](https://library.stanford.edu/research/data-management-services/data-best-practices/best-practices-file-naming) + +1. Include information to distinguish file name e.g. project name, objective of function, name/initials, type of data, conditions, version of file, +2. if using dates, use YYYYMMDD, so the computer organizes by year, then month, then day +3. avoid special characters e.g. !, #, \$, ... +4. avoid using spaces if not necessary, some programs consider a space as a break in code use dashes `-` or underscores `_` or CamelCase + +## Commenting your code + +Its important to comment your code to mention what a variable's units are, what the function is supposed to do, etc. + + + +```octave +function i=code(j) + % Example of bad variable names and bad function name + for w=1:j + i(w)=w; + end +end +``` + + Error: Function definitions are not permitted in this context. +  + + +```octave +help code +``` + + code not found. + + Use the Help browser search field to search the documentation, or + type "help help" for help command options, such as help for methods. + + +## Choose variable names that describe the variable + + +```octave +function count_vector=counting_function(max_value) + % Good variable names and better help documentation + % + % counting function creates a vector from 1 to max_value where each index, i, is + % stored in each vector spot + for i=1:max_value + count_vector(i)=i; % set each element in count_vector to i + end +end +``` + + +```octave +help counting_function +``` + + 'counting_function' is a command-line function + + Good variable names and better help documentation + + counting function creates a vector from 1 to max_value where each index, i, is + stored in each vector spot + + + Additional help for built-in functions and operators is + available in the online version of the manual. Use the command + 'doc ' to search the manual index. + + Help and information about Octave is also available on the WWW + at http://www.octave.org and via the help@octave.org + mailing list. + + +## Putting it all together + +1. Clone your homework_1 to your computer +2. open Matlab (cli, jupyter or gui) +3. Change working directory to homework_1 *e.g.* Windows:`cd('C:\Users\rcc02007\Documents\Github\homework_1')`, Mac: `cd('/Users/rcc02007/Documents/Github/homework_1')` +4. You have already created your first script `setdefaults.m` (if not see lecture_4) +5. Run `>> setdefaults.m` +6. Create a new m-file called nitrogen_pressure.m +7. Create a function based upon the ideal gas law for nitrogen, Pv=RT + 1. R=0.2968 kJ/(kg-K) + 2. inputs to function are v (specific volume m^3/kg), and T, temperature (K) + 3. output is P, pressure (kPa) +8. Once the function works, commit the change to the repository (add a message, like 'added file nitrogen_pressure.m' +9. After file is 'committed', 'push' the changes to your github account + +for the command-line git user, this is steps 8 and 9: +1. `$ git add *` +2. `$ git commit -m 'added file nitrogen_pressure.m'` +3. `$ git push -u origin master + Username for 'https://github.uconn.edu':rcc02007 + Password for 'https://rcc02007@github.uconn.edu': ` + + +Now, use this function to plot the range of pressures that a pressure vessel would experience if it is 1000 gallons (3.79 m^3) with 10-20 kg of Nitrogen and temperatures range from -10 to 35 degrees C. + +```matlab +v=0.379/linspace(50,20,10); +T=273.15+linspace(-10,35,10); +[v_grid,T_grid]=meshgrid(v,T); +P = nitrogen_pressure(v,T); +pcolor(v_grid,T_grid,P) +``` + + +```octave +setdefaults; +v=3.79./linspace(10,20,10); +T=273.15+linspace(-10,35,10); +[v_grid,T_grid]=meshgrid(v,T); +P = nitrogen_pressure(v_grid,T_grid); +pcolor(v_grid,T_grid-273.15,P-100) +xlabel('specific volume (m^3/kg)') +ylabel('Temperature (C)') +%zlabel('Pressure (kPa)') + +%colormap winter +%colormap summer +%colormap jet +colorbar() +``` + + +![png](lecture_05_files/lecture_05_25_0.png) + + + +```octave + +``` diff --git a/lecture_05/lecture_05.pdf b/lecture_05/lecture_05.pdf new file mode 100644 index 0000000..589a854 Binary files /dev/null and b/lecture_05/lecture_05.pdf differ diff --git a/lecture_05/lecture_05_files/lecture_05_11_0.png b/lecture_05/lecture_05_files/lecture_05_11_0.png new file mode 100644 index 0000000..b5a8ed1 Binary files /dev/null and b/lecture_05/lecture_05_files/lecture_05_11_0.png differ diff --git a/lecture_05/lecture_05_files/lecture_05_25_0.png b/lecture_05/lecture_05_files/lecture_05_25_0.png new file mode 100644 index 0000000..70aa9ce Binary files /dev/null and b/lecture_05/lecture_05_files/lecture_05_25_0.png differ diff --git a/lecture_05/my_caller.m b/lecture_05/my_caller.m new file mode 100644 index 0000000..f0cd536 --- /dev/null +++ b/lecture_05/my_caller.m @@ -0,0 +1,23 @@ +function [ax,ay]=my_caller(x,y,t) + % Help documentation of "my_caller" + % This function computes the acceleration in the x- and y-directions given + % three vectors of position in x- and y-directions as a function of time + % x = x-position + % y = y-position + % t = time + % output + % ax = acceleration in x-direction + % ay = acceleration in y-direction + + function v=diff_match_dims(x,t) + v=zeros(length(t),1); + v(1:end-1)=diff(x)./diff(t); + v(end)=v(end-1); + end + + [vx,vy]=my_function(x,y,t); + + ax = diff_match_dims(vx,t); + ay = diff_match_dims(vy,t); + +end diff --git a/lecture_05/my_function.m b/lecture_05/my_function.m new file mode 100644 index 0000000..5953061 --- /dev/null +++ b/lecture_05/my_function.m @@ -0,0 +1,21 @@ +function [vx,vy] = my_function(x,y,t) + % Help documentation of "my_function" + % This function computes the velocity in the x- and y-directions given + % three vectors of position in x- and y-directions as a function of time + % x = x-position + % y = y-position + % t = time + % output + % vx = velocity in x-direction + % vy = velocity in y-direction + + vx=zeros(length(t),1); + vy=zeros(length(t),1); + + vx(1:end-1) = diff(x)./diff(t); % calculate vx as delta x/delta t + vy(1:end-1) = diff(y)./diff(t); % calculate vy as delta y/delta t + + vx(end) = vx(end-1); + vy(end) = vy(end-1); + +end diff --git a/lecture_05/nitrogen_pressure.m b/lecture_05/nitrogen_pressure.m new file mode 100644 index 0000000..a76abf3 --- /dev/null +++ b/lecture_05/nitrogen_pressure.m @@ -0,0 +1,10 @@ +function P=nitrogen_pressure(v,T) + % function to calculate Pressure of Nitrogen using ideal gas law given the specific + % volume, v (m^3/kg), and temperature, T (K) + % Pv = RT + % R=0.2968; % kJ/kg-K + % P [in kPa] = nitrogen_pressure(v [in m^3/kg], T[in K]) + R=0.2968; % kJ/kg-K + P=R*T./v; +end + diff --git a/lecture_05/octave-workspace b/lecture_05/octave-workspace new file mode 100644 index 0000000..8c437bb Binary files /dev/null and b/lecture_05/octave-workspace differ diff --git a/lecture_05/q1.png b/lecture_05/q1.png new file mode 100644 index 0000000..bdc10e5 Binary files /dev/null and b/lecture_05/q1.png differ diff --git a/lecture_05/q2.png b/lecture_05/q2.png new file mode 100644 index 0000000..db02f0c Binary files /dev/null and b/lecture_05/q2.png differ diff --git a/lecture_05/setdefaults.m b/lecture_05/setdefaults.m new file mode 100644 index 0000000..8c3c5c8 --- /dev/null +++ b/lecture_05/setdefaults.m @@ -0,0 +1,3 @@ +set(0, 'defaultAxesFontSize', 16) +set(0,'defaultTextFontSize',14) +set(0,'defaultLineLineWidth',3) diff --git a/lecture_06/bisect.m b/lecture_06/bisect.m new file mode 100644 index 0000000..c09ffbf --- /dev/null +++ b/lecture_06/bisect.m @@ -0,0 +1,37 @@ +function [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,varargin) +% bisect: root location zeroes +% [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,p1,p2,...): +% uses bisection method to find the root of func +% input: +% func = name of function +% xl, xu = lower and upper guesses +% es = desired relative error (default = 0.0001%) +% maxit = maximum allowable iterations (default = 50) +% p1,p2,... = additional parameters used by func +% output: +% root = real root +% fx = function value at root +% ea = approximate relative error (%) +% iter = number of iterations +if nargin<3,error('at least 3 input arguments required'),end +test = func(xl,varargin{:})*func(xu,varargin{:}); +if test>0,error('no sign change'),end +if nargin<4|isempty(es), es=0.0001;end +if nargin<5|isempty(maxit), maxit=50;end +iter = 0; xr = xl; ea = 100; +while (1) + xrold = xr; + xr = (xl + xu)/2; + iter = iter + 1; + if xr ~= 0,ea = abs((xr - xrold)/xr) * 100;end + test = func(xl,varargin{:})*func(xr,varargin{:}); + if test < 0 + xu = xr; + elseif test > 0 + xl = xr; + else + ea = 0; + end + if ea <= es | iter >= maxit,break,end +end +root = xr; fx = func(xr, varargin{:}); \ No newline at end of file diff --git a/lecture_06/falsepos.m b/lecture_06/falsepos.m new file mode 100644 index 0000000..0a3477c --- /dev/null +++ b/lecture_06/falsepos.m @@ -0,0 +1,39 @@ +function [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,varargin) +% bisect: root location zeroes +% [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,p1,p2,...): +% uses bisection method to find the root of func +% input: +% func = name of function +% xl, xu = lower and upper guesses +% es = desired relative error (default = 0.0001%) +% maxit = maximum allowable iterations (default = 50) +% p1,p2,... = additional parameters used by func +% output: +% root = real root +% fx = function value at root +% ea = approximate relative error (%) +% iter = number of iterations +if nargin<3,error('at least 3 input arguments required'),end +test = func(xl,varargin{:})*func(xu,varargin{:}); +if test>0,error('no sign change'),end +if nargin<4|isempty(es), es=0.0001;end +if nargin<5|isempty(maxit), maxit=50;end +iter = 0; xr = xl; ea = 100; +while (1) + xrold = xr; + xr = (xl + xu)/2; + % xr = (xl + xu)/2; % bisect method + xr=xu - (f_m(xu)*(xl-xu))/(f_m(xl)-f_m(xu)); % false position method + iter = iter + 1; + if xr ~= 0,ea = abs((xr - xrold)/xr) * 100;end + test = func(xl,varargin{:})*func(xr,varargin{:}); + if test < 0 + xu = xr; + elseif test > 0 + xl = xr; + else + ea = 0; + end + if ea <= es | iter >= maxit,break,end +end +root = xr; fx = func(xr, varargin{:}); diff --git a/lecture_06/incsearch.m b/lecture_06/incsearch.m new file mode 100644 index 0000000..bd82554 --- /dev/null +++ b/lecture_06/incsearch.m @@ -0,0 +1,37 @@ +function xb = incsearch(func,xmin,xmax,ns) +% incsearch: incremental search root locator +% xb = incsearch(func,xmin,xmax,ns): +% finds brackets of x that contain sign changes +% of a function on an interval +% input: +% func = name of function +% xmin, xmax = endpoints of interval +% ns = number of subintervals (default = 50) +% output: +% xb(k,1) is the lower bound of the kth sign change +% xb(k,2) is the upper bound of the kth sign change +% If no brackets found, xb = []. +if nargin < 3, error('at least 3 arguments required'), end +if nargin < 4, ns = 50; end %if ns blank set to 50 +% Incremental search +x = linspace(xmin,xmax,ns); +f = func(x); +nb = 0; xb = []; %xb is null unless sign change detected +%for k = 1:length(x)-1 +% if sign(f(k)) ~= sign(f(k+1)) %check for sign change +% nb = nb + 1; +% xb(nb,1) = x(k); +% xb(nb,2) = x(k+1); +% end +%end +sign_change = diff(sign(f)); +[~,i_change] = find(sign_change~=0); +nb=length(i_change); +xb=[x(i_change)',x(i_change+1)']; + +if isempty(xb) %display that no brackets were found + fprintf('no brackets found\n') + fprintf('check interval or increase ns\n') +else + fprintf('number of brackets: %i\n',nb) %display number of brackets +end diff --git a/lecture_06/lecture_06.ipynb b/lecture_06/lecture_06.ipynb new file mode 100644 index 0000000..f44f84c --- /dev/null +++ b/lecture_06/lecture_06.ipynb @@ -0,0 +1,834 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "my_caller.m\n", + "```matlab\n", + "function [vx,vy] = my_caller(max_time)\n", + " N=100;\n", + " t=linspace(0,max_time,N);\n", + " [x,y]=my_function(max_time);\n", + " vx=diff(x)./diff(t);\n", + " vy=diff(y)./diff(t);\n", + "end\n", + "```\n", + "\n", + "my_function.m\n", + "```matlab\n", + "function [x,y] = my_function(max_time)\n", + " N=100;\n", + " t=linspace(0,max_time,N);\n", + " x=t.^2;\n", + " y=2*t;\n", + "end\n", + "```\n", + "\n", + "In order to use `my_caller.m` where does `my_function.m` need to be saved?\n", + "![responses](q1.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "What cool personal projects are you working on?\n", + "While we delve deeper into Matlab functions, could we review some of the basic logic\n", + "operators it uses and command codes. \n", + "\n", + "I still dont know when these forms are technically due. \n", + " \n", + " -by the following lecture\n", + "\n", + "I'm having trouble interfacing Atom with GitHub. Is there a simple tutorial for this?\n", + " \n", + " -Mac? Seems there could be a bug that folks are working on\n", + "\n", + "What are the bear necessities of life? \n", + "please go over how to \"submit\" the homeworks because it is still confusing\n", + "\n", + "Do you prefer Matlab or Octave?\n", + " \n", + " -octave is my preference, but Matlab has some benefits\n", + "\n", + "Would you consider a country to be open-source?\n", + " \n", + " -??\n", + "\n", + "Is there a way to download matlab for free?\n", + " \n", + " -not legally\n", + "\n", + "how do you add files to current folder in matlab?\n", + " \n", + " -you can do this either through a file browser or cli\n", + "\n", + "How should Homework 2 be submitted? By simply putting the function into the homework_1\n", + "repository?\n", + " \n", + " -yes\n", + " \n", + "How can we tell that these forms are being received?\n", + " \n", + " -when you hit submit, the form says \"form received\"\n", + " \n", + "can you save scripted outputs from matlab/octave as an excel file?\n", + " \n", + " -yes, easy way is open a file with a .csv extension then fprintf and separate everything with commas, harder way is to use the `xlswrite`\n", + " \n", + "\n", + "Also, can you update your notes to show what happens when these things are run, as you do\n", + "in class?\"\n", + " \n", + " -I always update the lecture notes after class so they should display what we did in class\n", + " \n", + "I have a little difficulty following along in class on my laptop when you have programs\n", + "pre-written. Maybe if you posted those codes on Github so I could copy them when you\n", + "switch to different desktops I would be able to follow along better.\n", + "\n", + "Kirk or Picard?\n", + " \n", + " -Kirk\n", + " \n", + "Who is our TA?\n", + " \n", + " -Peiyu Zhang peiyu.zhang@uconn.edu\n", + "\n", + "Can we download libraries of data like thermodynamic tables into matlab?\n", + " \n", + "-YES! [Matlab Steam Tables](http://bit.ly/2kZygu8)\n", + "\n", + "Will we use the Simulink addition to Matlab? I found it interesting and useful for\n", + "evaluating ODEs in Linear systems.\n", + " \n", + " -not in this class, everything in simulink has a matlab script/function that can be substituted, but many times its hidden by the gui. Here we want to look directly at our solvers\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Roots and Optimization\n", + "## Bracketing ch. 5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When you are given a function, numerical or analytical, it's not always possible to solve directly for a given variable. \n", + "\n", + "Even for the freefall example we first explored, \n", + "\n", + "$v(t)=\\sqrt{\\frac{gm}{c_{d}}}\\tanh(\\sqrt{\\frac{gc_{d}}{m}}t)$\n", + "\n", + "There is no way to solve for m in terms of the other variables. \n", + "\n", + "Instead, we can solve the problem by creating a new function f(m) where\n", + "\n", + "$f(m)=\\sqrt{\\frac{gm}{c_{d}}}\\tanh(\\sqrt{\\frac{gc_{d}}{m}}t)-v(t)$. \n", + "\n", + "When f(m) = 0, we have solved for m in terms of the other variables (e.g. for a given time, velocity, drag coefficient and acceleration due to gravity)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t60\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t80\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t120\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t140\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t160\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t180\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t200\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_2a\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "setdefaults\n", + "g=9.81; % acceleration due to gravity\n", + "m=linspace(50, 200,100); % possible values for mass 50 to 200 kg\n", + "c_d=0.25; % drag coefficient\n", + "t=4; % at time = 4 seconds\n", + "v=36; % speed must be 36 m/s\n", + "f_m = @(m) sqrt(g*m/c_d).*tanh(sqrt(g*c_d./m)*t)-v; % anonymous function f_m\n", + "\n", + "plot(m,f_m(m),m,zeros(length(m),1))\n", + "axis([45 200 -5 1])" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 0.045626\r\n" + ] + } + ], + "source": [ + "f_m(145)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Brute force method is plot f_m vs m and with smaller and smaller steps until f_m ~ 0\n", + "\n", + "Better methods are the \n", + "1. Bracketing methods\n", + "2. Open methods\n", + "\n", + "Both need an initial guess. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Incremental method (Brute force)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You know that for one value, m_lower, f_m is negative and for another value, m_upper, f_m is positive. \n", + "\n", + "```matlab\n", + "function xb = incsearch(func,xmin,xmax,ns)\n", + "% incsearch: incremental search root locator\n", + "% xb = incsearch(func,xmin,xmax,ns):\n", + "% finds brackets of x that contain sign changes\n", + "% of a function on an interval\n", + "% input:\n", + "% func = name of function\n", + "% xmin, xmax = endpoints of interval\n", + "% ns = number of subintervals (default = 50)\n", + "% output:\n", + "% xb(k,1) is the lower bound of the kth sign change\n", + "% xb(k,2) is the upper bound of the kth sign change\n", + "% If no brackets found, xb = [].\n", + "if nargin < 3, error('at least 3 arguments required'), end\n", + "if nargin < 4, ns = 50; end %if ns blank set to 50\n", + "% Incremental search\n", + "x = linspace(xmin,xmax,ns);\n", + "f = func(x);\n", + "nb = 0; xb = []; %xb is null unless sign change detected\n", + "for k = 1:length(x)-1\n", + " if sign(f(k)) ~= sign(f(k+1)) %check for sign change\n", + " nb = nb + 1;\n", + " xb(nb,1) = x(k);\n", + " xb(nb,2) = x(k+1);\n", + " end\n", + "end\n", + "if isempty(xb) %display that no brackets were found\n", + " fprintf('no brackets found\\n')\n", + " fprintf('check interval or increase ns\\n')\n", + "else\n", + " fprintf('number of brackets: %i\\n',nb) %display number of brackets\n", + "end\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'incsearch' is a function from the file /home/ryan/Documents/UConn/ME3255/me3255_S2017/lecture_06/incsearch.m\n", + "\n", + " incsearch: incremental search root locator\n", + " xb = incsearch(func,xmin,xmax,ns):\n", + " finds brackets of x that contain sign changes\n", + " of a function on an interval\n", + " input:\n", + " func = name of function\n", + " xmin, xmax = endpoints of interval\n", + " ns = number of subintervals (default = 50)\n", + " output:\n", + " xb(k,1) is the lower bound of the kth sign change\n", + " xb(k,2) is the upper bound of the kth sign change\n", + " If no brackets found, xb = [].\n", + "\n", + "\n", + "Additional help for built-in functions and operators is\n", + "available in the online version of the manual. Use the command\n", + "'doc ' to search the manual index.\n", + "\n", + "Help and information about Octave is also available on the WWW\n", + "at http://www.octave.org and via the help@octave.org\n", + "mailing list.\n" + ] + } + ], + "source": [ + "help incsearch" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "no brackets found\n", + "check interval or increase ns\n", + "ans = [](1x0)\n" + ] + } + ], + "source": [ + "incsearch(f_m,50, 200,55)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Bisection method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Divide interval in half until error is reduced to some level\n", + "\n", + "in previous example of freefall, choose x_l=50, x_u=200\n", + "\n", + "x_r = (50+200)/2 = 125\n", + "\n", + "f_m(125) = -0.408\n", + "\n", + "x_r= (125+200)/2 = 162.5\n", + "\n", + "f_m(162.5) = 0.3594\n", + "\n", + "x_r = (125+162.5)/2=143.75\n", + "\n", + "f_m(143.75)= 0.0206" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 0.020577\r\n" + ] + } + ], + "source": [ + "f_m(143.75)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Much better root locator, with 4 iterations, our function is already close to zero\n", + "\n", + "Automate this with a function:\n", + "`bisect.m`\n", + "\n", + "```matlab\n", + "function [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,varargin)\n", + "% bisect: root location zeroes\n", + "% [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,p1,p2,...):\n", + "% uses bisection method to find the root of func\n", + "% input:\n", + "% func = name of function\n", + "% xl, xu = lower and upper guesses\n", + "% es = desired relative error (default = 0.0001%)\n", + "% maxit = maximum allowable iterations (default = 50)\n", + "% p1,p2,... = additional parameters used by func\n", + "% output:\n", + "% root = real root\n", + "% fx = function value at root\n", + "% ea = approximate relative error (%)\n", + "% iter = number of iterations\n", + "if nargin<3,error('at least 3 input arguments required'),end\n", + "test = func(xl,varargin{:})*func(xu,varargin{:});\n", + "if test>0,error('no sign change'),end\n", + "if nargin<4|isempty(es), es=0.0001;end\n", + "if nargin<5|isempty(maxit), maxit=50;end\n", + "iter = 0; xr = xl; ea = 100;\n", + "while (1)\n", + " xrold = xr;\n", + " xr = (xl + xu)/2;\n", + " iter = iter + 1;\n", + " if xr ~= 0,ea = abs((xr - xrold)/xr) * 100;end\n", + " test = func(xl,varargin{:})*func(xr,varargin{:});\n", + " if test < 0\n", + " xu = xr;\n", + " elseif test > 0\n", + " xl = xr;\n", + " else\n", + " ea = 0;\n", + " end\n", + " if ea <= es | iter >= maxit,break,end\n", + "end\n", + "root = xr; fx = func(xr, varargin{:});\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## False position (linear interpolation)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Rather than bisecting each bracket (1/2 each time) we can calculate the slope between the two points and update the xr position in this manner\n", + "\n", + "$ x_{r} = x_{u} - \\frac{f(x_{u})(x_{l}-x_{u})}{f(x_{l})-f(x_{u})}$" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t50\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t150\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t200\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_2a\n", + "\n", + "\t \n", + "\t\n", + "\n", + "\t\n", + "\tgnuplot_plot_3a\n", + "\n", + "\t \n", + "\t\n", + "\n", + "\t\n", + "\tgnuplot_plot_4a\n", + "\n", + "\t\t \n", + "\t\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "xl=50; xu=200; \n", + "xr=xu - (f_m(xu)*(xl-xu))/(f_m(xl)-f_m(xu));\n", + "\n", + "plot(m,f_m(m),xl,f_m(xl),'s',xu,f_m(xu),'s',xr,0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Much better root locator, with 4 iterations, our function is already close to zero\n", + "\n", + "Automate this with a function:\n", + "`falsepos.m`\n", + "\n", + "```matlab\n", + "function [root,fx,ea,iter]=falsepos(func,xl,xu,es,maxit,varargin)\n", + "% falsepos: root location zeroes\n", + "% [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,p1,p2,...):\n", + "% uses false position method to find the root of func\n", + "% input:\n", + "% func = name of function\n", + "% xl, xu = lower and upper guesses\n", + "% es = desired relative error (default = 0.0001%)\n", + "% maxit = maximum allowable iterations (default = 50)\n", + "% p1,p2,... = additional parameters used by func\n", + "% output:\n", + "% root = real root\n", + "% fx = function value at root\n", + "% ea = approximate relative error (%)\n", + "% iter = number of iterations\n", + "if nargin<3,error('at least 3 input arguments required'),end\n", + "test = func(xl,varargin{:})*func(xu,varargin{:});\n", + "if test>0,error('no sign change'),end\n", + "if nargin<4|isempty(es), es=0.0001;end\n", + "if nargin<5|isempty(maxit), maxit=50;end\n", + "iter = 0; xr = xl; ea = 100;\n", + "while (1)\n", + " xrold = xr;\n", + " % xr = (xl + xu)/2; % bisect method\n", + " xr=xu - (f_m(xu)*(xl-xu))/(f_m(xl)-f_m(xu)); % false position method\n", + " iter = iter + 1;\n", + " if xr ~= 0,ea = abs((xr - xrold)/xr) * 100;end\n", + " test = func(xl,varargin{:})*func(xr,varargin{:});\n", + " if test < 0\n", + " xu = xr;\n", + " elseif test > 0\n", + " xl = xr;\n", + " else\n", + " ea = 0;\n", + " end\n", + " if ea <= es | iter >= maxit,break,end\n", + "end\n", + "root = xr; fx = func(xr, varargin{:});\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "file_extension": ".m", + "help_links": [ + { + "text": "MetaKernel Magics", + "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" + } + ], + "mimetype": "text/x-octave", + "name": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_06/lecture_06.md b/lecture_06/lecture_06.md new file mode 100644 index 0000000..b3d2266 --- /dev/null +++ b/lecture_06/lecture_06.md @@ -0,0 +1,373 @@ + + +```octave +%plot --format svg +``` + +my_caller.m +```matlab +function [vx,vy] = my_caller(max_time) + N=100; + t=linspace(0,max_time,N); + [x,y]=my_function(max_time); + vx=diff(x)./diff(t); + vy=diff(y)./diff(t); +end +``` + +my_function.m +```matlab +function [x,y] = my_function(max_time) + N=100; + t=linspace(0,max_time,N); + x=t.^2; + y=2*t; +end +``` + +In order to use `my_caller.m` where does `my_function.m` need to be saved? +![responses](q1.png) + + +What cool personal projects are you working on? +While we delve deeper into Matlab functions, could we review some of the basic logic +operators it uses and command codes. + +I still dont know when these forms are technically due. + + -by the following lecture + +I'm having trouble interfacing Atom with GitHub. Is there a simple tutorial for this? + + -Mac? Seems there could be a bug that folks are working on + +What are the bear necessities of life? +please go over how to "submit" the homeworks because it is still confusing + +Do you prefer Matlab or Octave? + + -octave is my preference, but Matlab has some benefits + +Would you consider a country to be open-source? + + -?? + +Is there a way to download matlab for free? + + -not legally + +how do you add files to current folder in matlab? + + -you can do this either through a file browser or cli + +How should Homework 2 be submitted? By simply putting the function into the homework_1 +repository? + + -yes + +How can we tell that these forms are being received? + + -when you hit submit, the form says "form received" + +can you save scripted outputs from matlab/octave as an excel file? + + -yes, easy way is open a file with a .csv extension then fprintf and separate everything with commas, harder way is to use the `xlswrite` + + +Also, can you update your notes to show what happens when these things are run, as you do +in class?" + + -I always update the lecture notes after class so they should display what we did in class + +I have a little difficulty following along in class on my laptop when you have programs +pre-written. Maybe if you posted those codes on Github so I could copy them when you +switch to different desktops I would be able to follow along better. + +Kirk or Picard? + + -Kirk + +Who is our TA? + + -Peiyu Zhang peiyu.zhang@uconn.edu + +Can we download libraries of data like thermodynamic tables into matlab? + +-YES! [Matlab Steam Tables](http://bit.ly/2kZygu8) + +Will we use the Simulink addition to Matlab? I found it interesting and useful for +evaluating ODEs in Linear systems. + + -not in this class, everything in simulink has a matlab script/function that can be substituted, but many times its hidden by the gui. Here we want to look directly at our solvers + + +# Roots and Optimization +## Bracketing ch. 5 + +When you are given a function, numerical or analytical, it's not always possible to solve directly for a given variable. + +Even for the freefall example we first explored, + +$v(t)=\sqrt{\frac{gm}{c_{d}}}\tanh(\sqrt{\frac{gc_{d}}{m}}t)$ + +There is no way to solve for m in terms of the other variables. + +Instead, we can solve the problem by creating a new function f(m) where + +$f(m)=\sqrt{\frac{gm}{c_{d}}}\tanh(\sqrt{\frac{gc_{d}}{m}}t)-v(t)$. + +When f(m) = 0, we have solved for m in terms of the other variables (e.g. for a given time, velocity, drag coefficient and acceleration due to gravity) + + +```octave +setdefaults +g=9.81; % acceleration due to gravity +m=linspace(50, 200,100); % possible values for mass 50 to 200 kg +c_d=0.25; % drag coefficient +t=4; % at time = 4 seconds +v=36; % speed must be 36 m/s +f_m = @(m) sqrt(g*m/c_d).*tanh(sqrt(g*c_d./m)*t)-v; % anonymous function f_m + +plot(m,f_m(m),m,zeros(length(m),1)) +axis([45 200 -5 1]) +``` + + +![svg](lecture_06_files/lecture_06_5_0.svg) + + + +```octave +f_m(145) +``` + + ans = 0.045626 + + +Brute force method is plot f_m vs m and with smaller and smaller steps until f_m ~ 0 + +Better methods are the +1. Bracketing methods +2. Open methods + +Both need an initial guess. + + +## Incremental method (Brute force) + +You know that for one value, m_lower, f_m is negative and for another value, m_upper, f_m is positive. + +```matlab +function xb = incsearch(func,xmin,xmax,ns) +% incsearch: incremental search root locator +% xb = incsearch(func,xmin,xmax,ns): +% finds brackets of x that contain sign changes +% of a function on an interval +% input: +% func = name of function +% xmin, xmax = endpoints of interval +% ns = number of subintervals (default = 50) +% output: +% xb(k,1) is the lower bound of the kth sign change +% xb(k,2) is the upper bound of the kth sign change +% If no brackets found, xb = []. +if nargin < 3, error('at least 3 arguments required'), end +if nargin < 4, ns = 50; end %if ns blank set to 50 +% Incremental search +x = linspace(xmin,xmax,ns); +f = func(x); +nb = 0; xb = []; %xb is null unless sign change detected +for k = 1:length(x)-1 + if sign(f(k)) ~= sign(f(k+1)) %check for sign change + nb = nb + 1; + xb(nb,1) = x(k); + xb(nb,2) = x(k+1); + end +end +if isempty(xb) %display that no brackets were found + fprintf('no brackets found\n') + fprintf('check interval or increase ns\n') +else + fprintf('number of brackets: %i\n',nb) %display number of brackets +end +``` + + +```octave +help incsearch +``` + + 'incsearch' is a function from the file /home/ryan/Documents/UConn/ME3255/me3255_S2017/lecture_06/incsearch.m + + incsearch: incremental search root locator + xb = incsearch(func,xmin,xmax,ns): + finds brackets of x that contain sign changes + of a function on an interval + input: + func = name of function + xmin, xmax = endpoints of interval + ns = number of subintervals (default = 50) + output: + xb(k,1) is the lower bound of the kth sign change + xb(k,2) is the upper bound of the kth sign change + If no brackets found, xb = []. + + + Additional help for built-in functions and operators is + available in the online version of the manual. Use the command + 'doc ' to search the manual index. + + Help and information about Octave is also available on the WWW + at http://www.octave.org and via the help@octave.org + mailing list. + + + +```octave +incsearch(f_m,50, 200,55) +``` + + no brackets found + check interval or increase ns + ans = [](1x0) + + +## Bisection method + +Divide interval in half until error is reduced to some level + +in previous example of freefall, choose x_l=50, x_u=200 + +x_r = (50+200)/2 = 125 + +f_m(125) = -0.408 + +x_r= (125+200)/2 = 162.5 + +f_m(162.5) = 0.3594 + +x_r = (125+162.5)/2=143.75 + +f_m(143.75)= 0.0206 + + +```octave +f_m(143.75) +``` + + ans = 0.020577 + + +Much better root locator, with 4 iterations, our function is already close to zero + +Automate this with a function: +`bisect.m` + +```matlab +function [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,varargin) +% bisect: root location zeroes +% [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,p1,p2,...): +% uses bisection method to find the root of func +% input: +% func = name of function +% xl, xu = lower and upper guesses +% es = desired relative error (default = 0.0001%) +% maxit = maximum allowable iterations (default = 50) +% p1,p2,... = additional parameters used by func +% output: +% root = real root +% fx = function value at root +% ea = approximate relative error (%) +% iter = number of iterations +if nargin<3,error('at least 3 input arguments required'),end +test = func(xl,varargin{:})*func(xu,varargin{:}); +if test>0,error('no sign change'),end +if nargin<4|isempty(es), es=0.0001;end +if nargin<5|isempty(maxit), maxit=50;end +iter = 0; xr = xl; ea = 100; +while (1) + xrold = xr; + xr = (xl + xu)/2; + iter = iter + 1; + if xr ~= 0,ea = abs((xr - xrold)/xr) * 100;end + test = func(xl,varargin{:})*func(xr,varargin{:}); + if test < 0 + xu = xr; + elseif test > 0 + xl = xr; + else + ea = 0; + end + if ea <= es | iter >= maxit,break,end +end +root = xr; fx = func(xr, varargin{:}); +``` + +## False position (linear interpolation) + +Rather than bisecting each bracket (1/2 each time) we can calculate the slope between the two points and update the xr position in this manner + +$ x_{r} = x_{u} - \frac{f(x_{u})(x_{l}-x_{u})}{f(x_{l})-f(x_{u})}$ + + +```octave +xl=50; xu=200; +xr=xu - (f_m(xu)*(xl-xu))/(f_m(xl)-f_m(xu)); + +plot(m,f_m(m),xl,f_m(xl),'s',xu,f_m(xu),'s',xr,0) +``` + + +![svg](lecture_06_files/lecture_06_18_0.svg) + + +Much better root locator, with 4 iterations, our function is already close to zero + +Automate this with a function: +`falsepos.m` + +```matlab +function [root,fx,ea,iter]=falsepos(func,xl,xu,es,maxit,varargin) +% falsepos: root location zeroes +% [root,fx,ea,iter]=bisect(func,xl,xu,es,maxit,p1,p2,...): +% uses false position method to find the root of func +% input: +% func = name of function +% xl, xu = lower and upper guesses +% es = desired relative error (default = 0.0001%) +% maxit = maximum allowable iterations (default = 50) +% p1,p2,... = additional parameters used by func +% output: +% root = real root +% fx = function value at root +% ea = approximate relative error (%) +% iter = number of iterations +if nargin<3,error('at least 3 input arguments required'),end +test = func(xl,varargin{:})*func(xu,varargin{:}); +if test>0,error('no sign change'),end +if nargin<4|isempty(es), es=0.0001;end +if nargin<5|isempty(maxit), maxit=50;end +iter = 0; xr = xl; ea = 100; +while (1) + xrold = xr; + % xr = (xl + xu)/2; % bisect method + xr=xu - (f_m(xu)*(xl-xu))/(f_m(xl)-f_m(xu)); % false position method + iter = iter + 1; + if xr ~= 0,ea = abs((xr - xrold)/xr) * 100;end + test = func(xl,varargin{:})*func(xr,varargin{:}); + if test < 0 + xu = xr; + elseif test > 0 + xl = xr; + else + ea = 0; + end + if ea <= es | iter >= maxit,break,end +end +root = xr; fx = func(xr, varargin{:}); +``` + + +```octave + +``` diff --git a/lecture_06/lecture_06_files/lecture_06_18_0.svg b/lecture_06/lecture_06_files/lecture_06_18_0.svg new file mode 100644 index 0000000..9652b37 --- /dev/null +++ b/lecture_06/lecture_06_files/lecture_06_18_0.svg @@ -0,0 +1,144 @@ + + +Gnuplot +Produced by GNUPLOT 5.0 patchlevel 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -5 + + + + + -4 + + + + + -3 + + + + + -2 + + + + + -1 + + + + + 0 + + + + + 1 + + + + + 0 + + + + + 50 + + + + + 100 + + + + + 150 + + + + + 200 + + + + + + + + + gnuplot_plot_1a + + + + + + gnuplot_plot_2a + + + + + + gnuplot_plot_3a + + + + + + gnuplot_plot_4a + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lecture_06/lecture_06_files/lecture_06_5_0.svg b/lecture_06/lecture_06_files/lecture_06_5_0.svg new file mode 100644 index 0000000..3ecaecd --- /dev/null +++ b/lecture_06/lecture_06_files/lecture_06_5_0.svg @@ -0,0 +1,145 @@ + + +Gnuplot +Produced by GNUPLOT 5.0 patchlevel 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -5 + + + + + -4 + + + + + -3 + + + + + -2 + + + + + -1 + + + + + 0 + + + + + 1 + + + + + 60 + + + + + 80 + + + + + 100 + + + + + 120 + + + + + 140 + + + + + 160 + + + + + 180 + + + + + 200 + + + + + + + + + gnuplot_plot_1a + + + + + + gnuplot_plot_2a + + + + + + + + + + + + + \ No newline at end of file