View
214
Download
0
Category
Tags:
Preview:
Citation preview
Functions 1ENGR 1181MATLAB 14
User-defined Functions in Real LifeUsing available built-in functions in our calculators and MATLAB is great, but often we encounter situations for which there is no pre-defined function. Like adding a quadratic equation solver program to our calculators, we can create our own functions in MATLAB to perform all sorts of calculations.
Today's Learning Objectives After today’s class, students will be
able to:• Demonstrate the proper use of
functions in their programs.• Explain how functions can be used in
multiple places and as an organizational tool.
• Describe purpose and structure of a function definition line.
What is a function? MATLAB has built-in functions that we have been
using all semester such as sum,length,mean, and others.
We will now learn how to create our own functions; these are called user-defined functions.
It is also referred to as a subroutine or a procedure in other programming languages.
What is a function? MATLAB functions can be used to make programs
easier to read and reduce the lines of code.
Allows multiple people to work on the same project seamlessly• Ex: One person's function can be referenced in
another person's script file.
What is a function? Just like a built-in function, a user-defined
function can be used within the command window or your script file.
In order to do this, the function must be saved in your active directory.
Opening a function fileOpen a function file (not a script file)
Basic function structure
function[output variable(s)] = function_name(input variables)
typical code as compared to a script file
end
Required if using nested functions, optional otherwise
**Function definition line
**Must follow this format or MatLab will think it’s a script file and/or you will get an error
Saving a function file
function[fun,outputs] = eng_fun(math,science,physics)
Function files MUST be saved as the name it is called out as in the function definition line as highlighted above. Also, it must be saved as a .m file.
For example, this function file would be saved as:eng_fun.m
Example: One input & outputLet’s calculate how many Oreo® cookies are left in a box using a function file:
1. Open a new function file
2. Complete the function definition line
Function[oreos_left]=oreos(hrs_of_HW)
3. Save file – oreos.m
Example: One input & output
Now that we have the function file defined, we can carry out the calculations to determine how many Oreo® cookies we will eat:
eat_yum=ceil(1/2*exp(hrs_of_HW)); %calculates the number of oreos
% Typical oreos in a package is 30
package=30;
oreos_left= package-eat_yum; %This line calculates the output
Example: One input & output
Let’s test our file now; be sure to save your function file. Go to your command window and type this:
oreos(hrs_of_HW)
What happens?
>> oreos(hrs_of_HW)Undefined function or variable 'hrs_of_HW'.
Example: One input & output
Now try this in the command window:
oreos(3)
What happens?
How about this:
x=3;
box=oreos(x)
ans = 19
Example: Two inputs & one output
Let’s modify our oreo code to account for stress of the number of midterms that week:
function[oreos_left]=oreos_rev(hrs_of_HW,exams)
Modify our equations:
eat_yum=ceil(1/2*exp(hrs_of_HW));
package=30;
bonus_yum=exams*3;
oreos_left= package-eat_yum-bonus_yum;
SAVE YOUR FILE!
oreos_rev.m
Example: Two inputs & one output
Run from the command window where you did 1 hour of homework and have 2 midterms this week:
HW=1; %Hours of homework
MT=2; %Number of midterms this week
box=oreos_rev(HW,MT)
box = 22
Create a script fileusing oreos_rev.m
clcclearhrs=input(‘How many hours of homework have you done today? ’);midterms=input(‘How many midterms do you have this week? ’);box=oreos_rev(hrs,midterms);fprintf(‘\nYou have %i oreos left, you better do more homework!’,box)
Script file
How many hours of homework have you done today? 2How many midterms do you have this week? 1
You have 23 oreos left, you better do some more homework!
Output
Functions with multiple inputs & outputs
Suppose we want to calculate the stress and deflection of a cantilever beam like the one in lab, let’s create a function file for this:
𝛿=𝐹 𝐿3
3𝐸𝐼
𝐼=𝑤𝑡3
12
𝜎=𝐹𝐴
function [stress, deflection] = beam_lab(w, t , F, L, E)
Function definition line
Functions with multiple inputs & outputs Write a function file to
calculate stress and deflection• Hint: When using more
than one output, you must assign the function to multiple outputs. Ex: [s,d]=beam_lab(inputs)
Then write a script file that calls the function file and uses these values.
w = .05 meterst = .01 metersF = 100 newtonsL = 1 meterE = 70 x 109 N/m2
What do you get?
stress = 200,000 N/m2
deflection = 0.1143 m
Functions Examplefunction v = freefall(t,m,cd)%freefall: bungee velocity with second-order drag%v=freefall(t,m,cd) computes the free-fall velocity of an object with%second-order drag %input:%t=time (s)%m=mass(kg)%cd = second-order drag coefficient(kg/m)%output:%v=downward velocity (m/s) g = 9.81; %acceleration due to gravityv=sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t);
Command Window Output:
>>freefall(12,68.1,.25)
ans =50.6175
Now try changing the argument values
Important Takeaways User-defined functions in MATLAB improve
readability and reduces overall amount of code.
They can be used to accomplish calculations or perform subroutines within a program.
Function files must be saved in the same directory as the script file that uses them.
Preview of Next Class Functions 2
• Having to share many function files along with your script file can be tedious
• MATLAB offers a way to condense all this into a single file
What’s Next? Review today’s Quiz #14
Open the in-class activity from the EEIC website and we will go through it together.
Then, start working on MAT-14 homework.
Prepare for the next class by reading about MATLAB Functions 2.
Recommended