Title: Lecture 7 Sept 17
1- Lecture 7
Sept 17 - Goals
- Complete Chapter 4
- Chapters 5 and 6
2- Scripts
- Sequence of instructions that we may want to run
can be stored in a file (known as script). - by typing the name of the file, Matlab executes
the sequence of operations. - files can be created by any plain text editor
(such as notepad) or the editor that comes with
Matlab. - Example
3- Files, path, working directory etc.
- We can save the values of the current variables
using the save command. - gtgt save(temp, a, b, c)
- Will save variables a, b, c in temp.
- default directory is named work. But this can be
changed by specifying other paths. - Example
4- Files, path, working directory etc.
- We can load a file using the load command.
- Example
5Importing and exporting data We can read from an
Excel spreadsheet using the command gtgt tab
xlsread(my_file.xls) Now tab becomes a
matrix. Example
6Reading a plain text ASCII file
7- Functions
- functions encapsulate computations that are
repeatedly performed. - input and output parameters.
- Example 1 Write a function to compute the
hypotenuse of a right triangle given the two
smaller sides a a and b.
8- function c hyp(a, b)
- c sqrt(aa b b)
- This file should be stored in the current
directory that is visible to Matlab. - Then we can perform
- gtgt hyp(3, 4)
- ans
- 5
9Example 2 Write a function swap that takes as
input an array of integers and returns an array
by swapping the max key and the key in index
1. For example gtgt B 1, 2, 8, 4, 7, 5,
6 gtgt C swap(B) gtgt C Ans 8, 2, 1, 4,
7, 5, 6 Etc.
10Function swap
function B swap (A) temp, id max(A) A(1)
A(1) A(id) A(id) A(1) - A(id) A(1) A(1)
- A(id) B A
11Local vs. global variables
12Example 3 Write a function GCD that outputs the
greatest common divisor of two positive integers
n and m. Recall Euclids algorithm GCD of
52 , 9 compute mod(52, 9) 7 new pair 9,
7 mod(9, 7) 2
7, 2 mod(7, 2) 1
2, 1 mod(2, 1) 0
1, 0 When we reach pair (x, 0), x
is the GCD.
13- GCD function
- We need to know how to create a loop. There are
two ways to do this - for loop
- while loop
- For this problem, we will use the while loop.
14GCD function function m gcd(a, b) while
(b0) rem mod(a, b) a b b
rem end m a
15Exercise Write a function that takes as input a
positive integer n and returns the first prime
number greater than n. Recall the function
isprime in Matlab that returns true (false) if
the input is a prime (is not a prime).
16Exercise Write a function that takes as input a
positive integer n and returns the first prime
number greater than n. Recall the function
isprime in Matlab that returns true (false) if
the input is a prime (is not a prime). function
n nextPrime(m) n m 1 while 1 if
isprime(n) break else n n 1
end end
17Exercise 6.1 Write a function, powersum, that
computes for any specified
values of z and n.
18Exercise 6.1 Write a function, powersum, that
computes for any specified
values of z and n.
Solution
19Exercise 6.2 (d) Write a function eliminate that
takes as input a character string and returns a
string of the same length in which e and E have
been replaced by . Hint Use find and the index
operator. Example gtgt eliminate(TherE) ans
Thr
20Exercise 6.2 (d) Write a function eliminate that
takes as input a character string and returns a
string of the same length in which e and E have
been replaced by . Hint Use find and the index
operator. Solution
21Exercise 6.3 function out addToEnd(a, x) out
a, x Just calling the function with a as
argument does not change its value. a
addToEnd(a, x) will change a as desired.
22Exercise 6.6 gtgt BooleanToTF(1 0 0 1 1 0 1
0) ans TFFTTFTF etc.
23Exercise 6.6 gtgt BooleanToTF(1 0 0 1 1 0 1
0) ans TFFTTFTF etc.
function res BooleanToTF(bool) res char('F'
zeros(size(bool))) res(bool) 'T'
24Exercise write a function in Matlab to convert
from decimal to binary. The output should be a
string.
25Exercise write a function in Matlab to convert
from decimal to binary. The output should be a
string.
function bin dec2bin(n) if n 0 bin '0'
else bin '' while (n0) if
mod(n,2)0 bit '0' else bit '1'
end bin strcat(bin, bit)
n floor(n/2) end end