Library Functions

advertisement
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
Download