ENGR 1181 | MATLAB 14: Functions 1 Preparation Material Learning Objectives 1. Demonstrate the proper use of functions in their programs 2. Explain how functions can be used in multiple places and as an organizational tool 3. Describe purpose and structure of a function definition line Topics Students will read Chapter 7.1-7.7 of the MATLAB book before coming to class. This preparation material is provided to supplement this reading. Students will learn a basic understanding of user-defined functions and how to properly code these functions in MATLAB. This material contains the following: 1. 2. 3. 4. 5. Key Definitions Function Fundamentals Creating a Function File Function Syntax General Function Tips 1. Key Definitions User-Defined Function – a program created by the user that can be used like a built-in function. Functions have an input and an output, and can be used many times with different input values. Function File – a separate MATLAB file that contains the code for a user-defined function. 1 ENGR 1181 MATLAB 14: Functions 1 Preparation Material 2. Function Fundamentals Functions work by taking input values and performing operations upon these values (such as addition or multiplication). After the function performs operations on the input values, it then returns the newly updated values as output values. 3. Creating a Function File A function file is created in the Editor/Debugger Window. This is the same window that is used to create script files. To create a function file, begin by clicking New (top left in MATLAB), and then select ‘Function’ or ‘Script’. Selecting Function will create a script file with the following contents (see below). This option provides the basic structure for a function. Notice that MATLAB does not define input arguments, output arguments, or the function name. The code highlighted in yellow will need to be updated by the coder in order to create a working function (covered in the Function Syntax section). function [ output_args ] = Untitled( input_args ) %UNTITLED Summary of this function goes here % Detailed explanation goes here end The second option for creating a function is to select Script on the New menu in MATLAB. This will create a blank script file. The user must then manually enter the function definition line, and other required syntax, such as the end statement. 2 ENGR 1181 MATLAB 14: Functions 1 Preparation Material 4. Function Syntax In order to create a working function, a specific syntax must be followed. The very first line of the MATLAB file must contain a function definition line. A function definition line is a line of code that tells MATLAB the function’s name, defines the input arguments, and defines the output arguments. The function definition line is the first line of code seen below. In addition to the function definition line, all functions require an ‘end’ statement. This is similar to for-loops and if-statements. function [ output_args ] = Untitled( input_args ) % Function body goes here end The text highlighted in yellow above must be changed before the function will operate. Untitled is where the name of the function is placed. input_args is where the names of the variables that will be storing the input values are placed. For example, if an input value is 2 and input_args has been replaced with X, then X will be set equal to 2. X^2 can now be used within the function. output_args is where the names of the variables that the function sends back to the user are placed. For example, if output_args is replaced with Y, then the function will send the user the value stored in Y after the function has completed its calculations. Below is a function with acceptable syntax: function [ Y ] = calculateY( X ) Y = X^2; end 3 ENGR 1181 MATLAB 14: Functions 1 Preparation Material In the previous function, the following highlighted items were changed: Untitled has been changed to calculateY. calculateY is now the name of the function, and will be used to ‘call’ the function. The function file must be saved as this name or it will run. For example, this function file is saved as calculateY.m. Input_args has been changed to X. The variable X will store the input value(s) given to the function by the user. Output_args has been replace with Y. The variable Y holds the value(s) that will be sent back to the user after the function has done its calculations. Here is the command window after running the calculateY function with an input of 3: >> z = calculateY(3) z = 9 The first line is the function call. The code z=calculateY(3) tells MATLAB to run the calculateY function with an input value of 3, and then store the result in z. This is similar to other common function calls such as x=sin(2). Within the calculateY function, the input argument has been set to X. In this case, MATLAB will set X = 3. X can now be used as a variable (containing the value of 3) throughout the rest of the function code. After setting X = 3, MATLAB will then move down to the next line of code in the function. In this case it will move onto Y = X^2. Since X = 3 from the user input, MATLAB will set Y = 3^2. This results in Y=9. Next, MATLAB will reach the end statement at the bottom of the function. At this point, MATLAB will return the values stored within the output argument variables. In this example, the output argument is Y, so MATLAB will return the value stored within Y, which is 9. Finally, MATLAB sets z = 9. It is important to note that MATLAB does not return the variable Y. It only returns the value stored within Y. This means that within the main script file or command window, the variable Y will still have no value. 4 ENGR 1181 MATLAB 14: Functions 1 Preparation Material In summary: In this example the input value is 3. Within the function file, X is set equal to 3. Next, the X=3 value is used to calculate the value of Y = X^2. This results in Y=9. The function then reaches the end statement and return the value of Y, which is equal to 9. Lastly, z will be set equal to the return value of 9. The final result is z=9. Here is an example in which there are two input arguments and two output arguments function [ Y , Z ] = calculateYZ( X1,X2 ) Y = X1^2; Z = X2^2; end In this case, Y and Z are sent back to the user, and the user must enter values for both X1 and X2 This is a command window run of the function calculateYZ >> [a b]= calculateYZ(3 , 4) a = 9 b = 16 In this case, X1 is equal to 3 and X2 is set equal to 4. Next, Y is calculated to be 9 and Z is calculated to be 16 (using the values of X1 and X2). Finally, the values 9 and 16 are returned to the user and set equal to a and b respectively. 5 ENGR 1181 MATLAB 14: Functions 1 Preparation Material 5. General Function Tips Here are some key tips to remember for functions: Use a function to do tasks that need to be repeated a large number of times. Function files must be saved within the same workspace folder that contains the script file, which is calling the functions. A function is not automatically saved. Script files will save when you select “run”, but a function file will not. The user must manually save a function file. The first line of the function file must be the function definition line. Functions must always have an ‘end’ statement. All variables inside of the function are local. This means that these variables and their values only exist within the function, and nowhere else. User-defined functions are used in the same way as built-in functions. Examples of built-in functions include: sin(), tan(), and disp(), max(), etc. When saving a function file, the file must be saved with a name that is identical to the function name in the function definition line. A function can have any number of input arguments and output arguments. This also includes situations in which there are no input arguments, or no output arguments. Remember to save a function before running it. If it is not saved, MATLAB will run the OLD version of the function. 6