250 likes | 266 Views
Learn to create scripts, functions, and manipulate variables in MATLAB for efficient programming. Practice examples included.
E N D
Lecture 7 Sept 17 • Goals: • Complete Chapter 4 • Chapters 5 and 6
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:
Files, path, working directory etc. • We can save the values of the current variables using the save command. • >> 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:
Files, path, working directory etc. • We can load a file using the load command. • Example:
Importing and exporting data We can read from an Excel spreadsheet using the command: >> tab = xlsread(‘my_file.xls’); Now tab becomes a matrix. Example:
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.
function c = hyp(a, b) • c = sqrt(a*a + b * b); • This file should be stored in the current directory that is visible to Matlab. • Then we can perform: • >> hyp(3, 4) • ans = • 5
Example 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: >> B = [1, 2, 8, 4, 7, 5, 6]; >> C = swap(B); >> C Ans = [8, 2, 1, 4, 7, 5, 6]; Etc.
Function 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;
Example 3: Write a function GCD that outputs the greatest common divisor of two positive integers n and m. Recall Euclid’s 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.
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.
GCD function function m = gcd(a, b) while ~(b==0) rem = mod(a, b); a = b; b = rem; end; m = a;
Exercise: 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).
Exercise: 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;
Exercise 6.1: Write a function, powersum, that computes for any specified values of z and n.
Exercise 6.1: Write a function, powersum, that computes for any specified values of z and n. Solution:
Exercise 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: >> eliminate(‘TherE’) ans = Th*r*
Exercise 6.2 (d) Write a function eliminatethat 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:
Exercise 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.
Exercise 6.6 >> BooleanToTF([1 0 0 1 1 0 1 0]) ans = ‘TFFTTFTF’ etc.
Exercise 6.6 >> 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';
Exercise: write a function in Matlab to convert from decimal to binary. The output should be a string.
Exercise: 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 ~(n==0) if mod(n,2)==0 bit = '0' else bit = '1'; end; bin= strcat(bin, bit); n = floor(n/2); end; end;