{
"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
}