Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in...

22
Functions 1 ENGR 1181 MATLAB 14

Transcript of Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in...

Page 1: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

Functions 1ENGR 1181MATLAB 14

Page 2: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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.

Page 3: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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.

Page 4: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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.

Page 5: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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.

Page 6: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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.

Page 7: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

Opening a function fileOpen a function file (not a script file)

Page 8: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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

Page 9: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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

Page 10: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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

Page 11: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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

Page 12: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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'.

Page 13: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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

Page 14: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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

Page 15: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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

Page 16: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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

Page 17: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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

Page 18: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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

Page 19: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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

Page 20: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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.

Page 21: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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

Page 22: Functions 1 ENGR 1181 MATLAB 14. User-defined Functions in Real Life Using available built-in functions in our calculators and MATLAB is great, but often.

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.