{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Loops, Conditions, and Programming" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Logical and Relational Operations" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ans =\n", " 0\n" ] } ], "source": [ "% less than\n", "format compact\n", "x = 2;\n", "y = -2;\n", "x < y % test if x is smaller than y (0 is flase, 1 is true)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ans =\n", " 0\n" ] } ], "source": [ "% greater than\n", "y > x" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ans =\n", " 0 1 1 0 0\n" ] } ], "source": [ "% for vectors\n", "x = [-1 2 0 4 6];\n", "y = [2 1 -1 5 9];\n", "x > y % evaluates each element" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ans =\n", " 1 0 0 1 1\n" ] } ], "source": [ "% less-than or equal to\n", "x <= y" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ans =\n", " 0 1 1 0 0\n" ] } ], "source": [ "% greater-than or equal to\n", "x >= y" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ans =\n", " 0 0 0 0 0\n" ] } ], "source": [ "% equal to\n", "x == y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Logical Operators" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "& AND
\n", "~ NOT
\n", "| OR
\n", "XOR Exclusive OR" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": true }, "outputs": [], "source": [ "x = [1 0 1 1 0 0];\n", "y = [0 1 0 1 0 1];" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ans =\n", " 0 0 0 1 0 0\n" ] } ], "source": [ "% AND\n", "x & y" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ans =\n", " 0 1 0 0 1 1\n" ] } ], "source": [ "% NOT\n", "~x" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ans =\n", " 1 1 1 1 0 1\n" ] } ], "source": [ "% OR\n", "x | y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Conditions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### If and Else" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hello World!!\n", " 3\n" ] } ], "source": [ "% if statements are handled much the same as any other language\n", "clear all\n", "x = 3;\n", "if x < 4\n", " disp('Hello World!!')\n", " disp(x)\n", "end" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "y =\n", " 1.0986\n" ] } ], "source": [ "% same goes for if-else\n", "if x > 0\n", " y = log(x)\n", "else\n", " disp('Log args can not be <= zero!')\n", "end" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Log args can not be <= zero!\n" ] } ], "source": [ "x = -3;\n", "if x > 0\n", " y = log(x)\n", "else\n", " disp('Log args can not be <= zero!')\n", "end" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Log args can not be <= zero!\n" ] } ], "source": [ "% we can also output an audible alert using 'beep'\n", "if x > 0\n", " y = log(x)\n", "else\n", " beep\n", " disp('Log args can not be <= zero!')\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Else-If" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Youre good to go!!!\n" ] } ], "source": [ "clear all\n", "age = 37;\n", "if age < 16\n", " disp('You are too young to apply!')\n", "elseif age < 18\n", " disp('You can apply for a learners permit')\n", "elseif age < 70\n", " disp('Youre good to go!!!')\n", "else\n", " disp('You need a provisional license')\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### While Loops" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3\n" ] } ], "source": [ "% simple example\n", "clear all\n", "k = 0;\n", "while k < 3\n", " k = k +1;\n", "end\n", "disp(k)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### For Loops" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "i =\n", " 1\n", "i =\n", " 2\n", "i =\n", " 3\n" ] } ], "source": [ "% here is a simple for loop\n", "for i = [1 2 3]\n", " i\n", "end" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "i =\n", " 3\n" ] } ], "source": [ "% the variable i is now 3\n", "i" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ans =\n", " 1\n", "ans =\n", " 2\n", "ans =\n", " 4\n", "ans =\n", " 8\n", "ans =\n", " 16\n", "ans =\n", " 32\n", "ans =\n", " 64\n", "ans =\n", " 128\n", "ans =\n", " 256\n" ] } ], "source": [ "% another example\n", "for k = 0:8\n", " 2^k\n", "end" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "v =\n", " 1 4 7 10\n", "v =\n", " 1 2 3 4\n" ] } ], "source": [ "% another example \n", "v = [1:3:10]\n", "for j = 1:4\n", " v(j) = j;\n", "end\n", "v" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Notes on for loop methodology" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The previous example illustrates how a for loop works, but it is not the most efficient manner in which to iterate through a matrix an perform calculations on each element." ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A =\n", " 1 3 2\n", " 2 2 1\n", " 3 1 3\n" ] } ], "source": [ "% this is the preferred manner\n", "clear all\n", "A = [[1 2 3]' [3 2 1]' [2 1 3]']" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A =\n", " 1 3 2\n", " 1 -1 -1\n", " 3 1 3\n", "A =\n", " 1 3 2\n", " 1 -1 -1\n", " 2 2 4\n" ] } ], "source": [ "B = A;\n", "for j = 2:3\n", " A(j,:) = A(j,:) - A(j-1,:)\n", "end" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "7\n" ] } ], "source": [ "clear all\n", "scores = [30 65 90 87 56 34 82 99 90];\n", "count = 0;\n", "for k = 1:length(scores)\n", " if scores(k) > 50\n", " count = count + 1;\n", " end\n", "end\n", "disp(count)" ] } ], "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-matlab", "name": "matlab", "version": "0.8.0" } }, "nbformat": 4, "nbformat_minor": 0 }