You are on page 1of 17

Engineering H192 - Computer Programming

MATLAB: Script and Function Files

Lecture 19

Winter Quarter The Ohio State University Lect 19 P. 1


Gateway Engineering Education Coalition
Engineering H192 - Computer Programming

MATLAB Script Files


• A MATLAB script file (Called an M-file) is a text
(plain ASCII) file that contains one or more
MATLAB commands and, optionally, comments.
• The file is saved with the extension ".m".
• When the filename (without the extension) is
issued as a command in MATLAB, the file is
opened, read, and the commands are executed as
if input from the keyboard. The result is similar
to running a program in C. The following slide is
the contents of an M-file. Note that there are no
prompts (>>).

Winter Quarter The Ohio State University Lect 19 P. 2


Gateway Engineering Education Coalition
Engineering H192 - Computer Programming

MATLAB Script Files


% This is a MATLAB script file.
% It has been saved as “g13.m".
load g13.dat; %Load data file
voltage = g13( : , 4); %Extract volts vector
time = .005*[1:length(voltage)]; %Create time vector
plot (time, voltage) %Plot volts vs time
xlabel ('Time in Seconds') % Label x axis
ylabel ('Voltage') % Label y axis
title ('Bike Strain Gage Voltage vs Time')
grid %Put a grid on graph
Winter Quarter The Ohio State University Lect 19 P. 3
Gateway Engineering Education Coalition
Engineering H192 - Computer Programming

MATLAB Script Files

• The preceding file is executed by issuing a


MATLAB command:
>> g13
• This single command causes MATLAB to look in
the current directory, and if a file g13.m is found,
open it and execute all of the commands. The
result, in this case, is a plot of the data from
g13.dat.
• If MATLAB cannot find the file in the current
working directory, an error message will appear.

Winter Quarter The Ohio State University Lect 19 P. 4


Gateway Engineering Education Coalition
Engineering H192 - Computer Programming

MATLAB Script Files

• When the file is not in the current working


directory, a cd or chdir command may be issued
to change the directory.

>> cd a:\ % Make a:\ the current working directory


>> g13

Winter Quarter The Ohio State University Lect 19 P. 5


Gateway Engineering Education Coalition
Engineering H192 - Computer Programming

MATLAB Demo
%MATLAB Example use of ginput
clear, clf, hold off
axis ([0, 10, 0, 10])
hold on
plot ([1, 2, 2, 1, 1],[2, 2, 3, 3, 2])
text (1, 1.6, 'Click inside box to quit')
while 1
[x, y, buttun] = ginput (1)
if buttun == 1, plot (x, y, '+r'), end
if buttun == 2, plot (x, y, 'oy'), end
if buttun == 3, plot (x, y, '*g'), end
if x > 1 & x < 2 & y > 2 & y < 3, break;
end
end
hold off
Winter Quarter The Ohio State University Lect 19 P. 6
Gateway Engineering Education Coalition
Engineering H192 - Computer Programming

MATLAB Function Files

• A MATLAB function file (called an M-file) is a text


(plain ASCII) file that contains a MATLAB function
and, optionally, comments.

• The file is saved with the function name and the


usual MATLAB script file extension, ".m".

• A MATLAB function may be called from the


command line or from any other M-file.

Winter Quarter The Ohio State University Lect 19 P. 7


Gateway Engineering Education Coalition
Engineering H192 - Computer Programming

MATLAB Function Files

• When the function is called in MATLAB, the file is


accessed, the function is executed, and control is
returned to the MATLAB workspace.

• Since the function is not part of the MATLAB


workspace, its variables and their values are not
known after control is returned.

• Any values to be returned must be specified in


the function syntax.
Winter Quarter The Ohio State University Lect 19 P. 8
Gateway Engineering Education Coalition
Engineering H192 - Computer Programming

MATLAB Function Files


• The syntax for a MATLAB function definition is:
function [val1, … , valn] = myfunc (arg1, … , argk)
where val1 through valn are the specified
returned values from the function and arg1
through argk are the values sent to the function.

• Since variables are local in MATLAB (as they are


in C), the function has its own memory locations
for all of the variables and only the values (not
their addresses) are passed between the
MATLAB workspace and the function.

Winter Quarter The Ohio State University Lect 19 P. 9


Gateway Engineering Education Coalition
Engineering H192 - Computer Programming

MATLAB Function Files

• It is OK to use the same variable names in the


returned value list as in the argument. The effect
is to assign new values to those variables. As an
example, the following slide shows a function
that swaps two values.

Winter Quarter The Ohio State University Lect 19 P. 10


Gateway Engineering Education Coalition
Engineering H192 - Computer Programming

Example of a MATLAB Function File


function [ a , b ] = swap ( a , b )
% The function swap receives two values, swaps them,
% and returns the result. The syntax for the call is
% [a, b] = swap (a, b) where the a and b in the ( ) are the
% values sent to the function and the a and b in the [ ] are
% returned values which are assigned to corresponding
% variables in your program.
temp=a;
a=b;
b=temp;

Winter Quarter The Ohio State University Lect 19 P. 11


Gateway Engineering Education Coalition
Engineering H192 - Computer Programming

Example of a MATLAB Function File

• To use the function a MATLAB program could


assign values to two variables (the names do not
have to be a and b) and then call the function to
swap them. For instance the MATLAB commands:
>> x = 5 ; y = 6 ; [ x , y ] = swap ( x , y )
result in:
x=
6
y=
5
Winter Quarter The Ohio State University Lect 19 P. 12
Gateway Engineering Education Coalition
Engineering H192 - Computer Programming

MATLAB Function Files


• Referring to the function, the comments immediately
following the function definition statement are the
"help" for the function. The MATLAB command:
>>help swap %displays:
The function swap receives two values, swaps them,
and returns the result. The syntax for the call is
[a, b] = swap (a, b) where the a and b in the ( ) are the
values sent to the function and the a and b in the [ ] are
returned values which are assigned to corresponding
variables in your program.

Winter Quarter The Ohio State University Lect 19 P. 13


Gateway Engineering Education Coalition
Engineering H192 - Computer Programming

MATLAB Function Files

• The MATLAB function must be in the current


working directory. If it is not, the directory must
be changed before calling the function.

• If MATLAB cannot find the function or its syntax


does not match the function call, an error
message will appear. Failure to change
directories often results in the error message:

Undefined function or improper matrix assignment.


Winter Quarter The Ohio State University Lect 19 P. 14
Gateway Engineering Education Coalition
Engineering H192 - Computer Programming

MATLAB Function Files

• When the function file is not in the current


working directory, a cd or chdir command may be
issued to change the directory.

>> cd a:\ % Make a:\ the current working directory

Winter Quarter The Ohio State University Lect 19 P. 15


Gateway Engineering Education Coalition
Engineering H192 - Computer Programming

MATLAB Function Files

• Unlike C, a MATLAB variable does not have to be


declared before being used, and its data type can
be changed by assigning a new value to it.

• For example, the function factorial ( ) on the next


slide returns an integer when a positive value is
sent to it as an argument, but returns a character
string if the argument is negative.

Winter Quarter The Ohio State University Lect 19 P. 16


Gateway Engineering Education Coalition
Engineering H192 - Computer Programming

MATLAB Function Files


function [n] = factorial (k)
% The function [n] = factorial(k) calculates and
% returns the value of k factorial. If k is negative,
% an error message is returned.
if (k < 0) n = 'Error, negative argument';
elseif k<2 n=1;
else
n = 1;
for j = [2:k] n = n * j; end
end
Winter Quarter The Ohio State University Lect 19 P. 17
Gateway Engineering Education Coalition

You might also like