Library Functions... 1. 2. 3. 4. 5. 6. 7. 8. Old functions Vocabulary Rounding numbers Generating random numbers mod() Properties of mod() Ex1: even or odd? Ex2: error when not a whole number 1 1. Remember these functions? clc clear sin(), sind() … sqrt(), abs() … input(), fprintf(), disp() MATLAB’s Core System has ~2300 functions This doesn’t include any of the toolboxes 2 But what is a function? • A function is like a box with holes in it. Output Input Magic bazinga floor rand why sqrt sin The _________ function 3 2. Official vocabulary 2. MATLAB is “passing” inputs to the function. variable = functions_name( argument list ); 3. MATLAB “collects” the “return-value” inside this variable. 1. This is a “function call”. MATLAB “calls upon the execution” of the code behind the keyword. • Example: 2. MATLAB “passes” the result of a^2+b^2” hypotenuse = sqrt(a^2+b^2); 3. MATLAB “collects” the “return-value” 1. MATLAB “calls upon the execution” of sqrt() 4 Various uses • While the function’s name is ALWAYS needed, the call may/may not require either one of the other 2 parts. variable = functions_name( arguments); • For example… clc and clear require neither fprintf() requires at least 1 argument (the format string), but typically we do not collect the result. 5 Arguments? Collecting return values? • 1 or many arguments: – Some functions are versatile in how many arguments they need – When there is a list of arguments, separate each with a comma: , 1 argument: a string age = input(‘Enter your age: ’); 2 arguments: both strings username = input(‘Username: ’, ‘s’); ๏ 3 arguments: 1 string and 2 variables fprintf(‘Hello %s! You are %d years old!\n’,… username, age); 6 Rounding functions • Rounding floats to integer Function + Definitions Examples 2.453 12.56 -6.67 round() Rounds *w.r.t 0.5 __?__ 13 -7 ceil() Rounds towards +infinity 3 __?__ -6 floor() Rounds towards -infinity 2 12 __?__ - *w.r.t = with respect to 7 Examples Civil Eng. How many bags of concrete mix are needed to build stairs? Step1: -Givens needed: -Dimensions of one step -How many stairs -How much concrete does one bag of concrete mix make? -Find: -Number of bags needed 8 Civil Eng. Examples Step2 height width depth Step3 ๐๐๐๐ข๐๐๐๐ก 3 = ๐๐๐๐ก๐๐๐๐ ∗ โ๐๐๐โ๐ก ∗ ๐ค๐๐๐กโ ∗ ๐๐๐๐กโ ๐๐๐๐ข๐๐๐๐๐๐๐๐ ๐๐๐ต๐๐๐ = ๐๐๐๐ข๐๐๐๐๐๐๐ต๐ฆ๐๐๐๐ต๐๐ Step4 - Assume there is a support system underneath. Only the steps need to be built. - Assume units are inches for the thickness and depth, and feet for the width - Each 80lbs bag allows for a coverage of 2 sq.ft over a 4 inch height (so 2*4/12โ 0.66 ft^3) 9 Examples Civil Eng. How many bags of concrete are needed to build stairs? Step5: Assuming 6 stairs: 3ft wide, 6in tall, 11in deep totVolume(ft3) = Nb_stairs * width * depth * thick = 6 * 3* 6/12 * 11/12 = 8.25 ft^3 Number of bags = totVolume(ft3)/ volume1bag = 8.25/0.66 = 12.38 There is a need for ______ bags. 10 Try This Tonight! Convert 5632 seconds to a format hrs:min:sec! 5632 secd 3600 (secd/hr) = 1.56444444 hours •Round down: 1 full hour 5623 sec – 1* 3600 sec = 2023 seconds 2023 secd 60(secd/min) = 33.71666 minutes •Round down: 33 full minutes 11 Example2 Hrs/Min/Sec 2023 – 33*60 = 43 seconds Conclusion: 5632seconds is also: 01:33:43 The function used to round down is: ________ Best practice: code this mini-example tonight. Allow the user to enter the initial number of seconds. 12 4. Generating Random Numbers • Generating random numbers rand Generates one float between 0 and 1 both excluded. rand(n) Generates a matrix with n^2 floats between 0 and 1 both excluded. (used in 2 weeks from now) rand(n,m) Generates an n-row by m-column matrix with floats between 0 and 1 both excluded. (used in 2 weeks from now) • rand() is another one of those versatile functions x=rand; x=rand(); %some keep the () to remind themselves it is a function-call vs. a variable name. x=rand(1); %avoid, it’s overdoing it… x=rand(2); %a 2-rows by 2-columns matrix x=rand(2,5); %a 2-rows by 5-columns matrix ๏ 13 rand() and a little bit of algebra: +• What happens to a number k between 0 and 1 if it is added to another number? For example: k 0 What can we say about: 1 2+k ? k 0 What can we say about: 1 2 3 k-4 ? >> The interval shifts left/right. 14 rand() and a little bit of algebra • What happens to a number k between 0 and 1 if it is multiplied by another number? For example: k 0 1 What can we say about: 5*k ? k 0 What can we say about: 5 k/2 ? >> The interval grows/shrinks. 15 rand() and a little bit of algebra • What is the range of values K lies within? K = rand*6; K = rand*45-6; K = 2+rand*3.3; K ? ? K = -6.5+rand/2; K = (rand*3)/2-2; 1) Plug 0 into the formula 2) Plug 1 into the formula 3) Remember that all numbers between those 2 values could be generated, but NOT those 2 values 16 End of algebra • So.. Using a combination of arithmetic operators, how would you generate these values (both excluded): k1 15 20 k1 = rand_______________________; k2 -5.5 5.5 k2 = rand_______________________; 17 Conclusion • To generate 1 float in the interval : (a,b) k = rand*(b-a)+a; This is not a formula worth remembering.. algebra! Just remember (a, b) means the numbers a through b EXCLUDING a and b [a, b] means the numbers a through b INCLUDING a and b Sometimes, square brackets are used and the direction it points also indicates inclusion or exclusion. Ex: ]a, b[ is the same as (a,b) 18 What about generating whole numbers? • If rand generates one float, how do we generate random numbers? – like dice values: 1-6? (included of course) %roll the die die = ____________; 19 Why not round? • What happens with we do this: DiceValue = round(6*rand) (0, 1) becomes (0, 6). Think of this as 0.0001 to 5.9999. Then the number is rounded... ( 0 0 1 0.5 2 1.5 3 2.5 4 3.5 5 4.5 6 5.5 ) 6 20 Rounding functions • Rounding floats to integer Function + Definitions Examples 2.453 12.56 -6.67 round() Rounds *w.r.t 0.5 __?__ 13 -7 ceil() Rounds towards +infinity 3 __?__ -6 floor() Rounds towards -infinity 2 12 __?__ - *w.r.t = with respect to floor( rand*6 + 1 ) % (0-1) ๏ (0-6) ๏ (1-7) = [1.0001-6.9999] ๏ [1 – 6] ceil( rand * 6 ) % (0-1) ๏ (0-6) = [0.0001 – 5.9999] ๏ [1 – 6] 21 1. Modulus • The modulus-function calculates the remainder of a long division >> doc mod 22 1. Modulus • The modulus-function calculates the remainder of a long division >> doc mod • For example: >>result = 77/3 result = 25.6667 >>result = mod(77,3) result = 2 >> 25 3 77 -6 17 -1 5 2 23 1. Modulus • The modulus-function calculates the remainder of a long division >> doc mod • For example: >>result = 77/3 result = 25.6667 >>result = mod(77,3) result = 2 >> mod(..) is a function that REQUIRES TWO ARGUMENTS. (mod(77) is an invalid statement…) 24 1. Modulus • The modulus-function calculates the remainder of a long division >> doc mod • For example: 25 >>result = 77/3 result = 25.6667 >>result = mod(77,3) result = 2 >> How is this ever useful…? 3 77 -6 17 -1 5 2 25 2. Properties of mod() • If x is evenly divisible by y (i.e no left-overs), mod(x,y) will return 0 • “mod” any number with another one “N”, the return-value will be a whole number from 0 to N-1. For example: 0 Mod by 5 mod(2,5) 0 mod(4,3) 1 mod(5,5) 0 0 mod(5,3) 2 mod(6,5) 1 mod(5,2) 1 mod(6,3) 0 mod(7,5) 2 mod(6,2) 0 mod(7,3) 1 mod(8,5) 3 mod(15,2) ? mod(26,3) ? mod(9,5) 4 mod(10,5) ? Mod by 2 mod(2,2) 0 Mod by 3 mod(3,3) mod(3,2) 1 mod(4,2) 26 2. Properties of mod() • If x is evenly divisible by y (i.e no left-overs), mod(x,y) will return 0 • “mod” any number with another one “N”, the return-value will be a whole number from 0 to N-1. For example: 0 Mod by 5 mod(2,5) 0 mod(4,3) 1 mod(5,5) 0 0 mod(5,3) 2 mod(6,5) 1 mod(5,2) 1 mod(6,3) 0 mod(7,5) 2 mod(6,2) 0 mod(7,3) 1 mod(8,5) 3 mod(15,2) ? mod(26,3) ? mod(9,5) 4 mod(10,5) ? Mod by 2 mod(2,2) 0 Mod by 3 mod(3,3) mod(3,2) 1 mod(4,2) 27 2. Properties of mod() • If x is evenly divisible by y (i.e no left-overs), mod(x,y) will return 0 • “mod” any number with another one “N”, the return-value will be a whole number from 0 to N-1. For example: 0 Mod by 5 mod(2,5) 2 mod(4,3) 1 mod(5,5) 0 0 mod(5,3) 2 mod(6,5) 1 mod(5,2) 1 mod(6,3) 0 mod(7,5) 2 mod(6,2) 0 mod(7,3) 1 mod(8,5) 3 mod(15,2) ? mod(26,3) ? mod(9,5) 4 mod(10,5) ? Mod by 2 mod(2,2) 0 Mod by 3 mod(3,3) mod(3,2) 1 mod(4,2) 28 Ex1. Even or Odd? • Prompt the user for a whole number, then display whether that number is even or odd. • Algorithm is rather straightforward! % prompt the user for whole number % mod the number by 2 % if the result is 1 % Display ‘odd’ % if the result is 0 % Display ‘even’ % if the result is something else % Display ‘ERROR’ 29 Ex2: Check for integers • Remember “Who Should Start?” % prompt how many players total totalPlayers = input('How many players (WHOLE number only): '); % generate the one who starts (0-max) startPlayer = ceil(rand*totalPlayers); % continue with game… fprintf('Player #%d will start.\n', startPlayer); • Since there are no error-check, the following can happen! Let’s add an error message when an float is entered!... 30 Check for integers, algorithm %prompt user for total players %if invalid (negative, zero, or not integer) %error message %else %generate 1st player %continue with game 31 Check for integers, code %prompt user for total players totalPlayers = input('How many players (WHOLE number only): '); % if mod( totalPlayers, 1 ) isn’t 0, totalPlayers isn’t a whole number Using mod() in your answer, what does it mean for a number to not-be-an-integer? 32 Key Ideas • Vocabulary – – – – – Function call Arguments Collecting Return-values Versatile • New notions – Rounding up/down/ or w.r.t 0.5 – Generating random numbers – Generating 1 random float value • Manipulating it to desire random range wanted – Generating a zero/one to simulate false/true • Examples – – – – Cement for stairs: Time formatting: Temperature: Rocket: ceil() floor() rand() all of the above!! 33 Key Ideas • mod() is a built-in function that calculates the remainder of a division • >> doc mod <enter> to see help window • Commonly used to check if a number is divisible by another. – In other word, mod can be used to check if a number is a multiple of another. • mod(.., 2) is used to check even/odd • mod(.., 1) is used to check whole/decimal number • mod(.., N) is used to check if a number is divisible by N 34 Exam 1 • Review on Thursday • Exam on Friday in lab • ~10 multiple choice, true false, short answer questions • Programming problem – Open book, open note, open resource. Closed “other people”. 35