MATLAB script and function M-files

advertisement
Engineering H192 - Computer Programming
MATLAB: Script and Function Files
Lecture 19
Winter Quarter
The Ohio State University
Gateway Engineering Education Coalition
Lect 19
P. 1
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
Gateway Engineering Education Coalition
Lect 19
P. 2
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
Gateway Engineering Education Coalition
Lect 19
P. 3
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
Gateway Engineering Education Coalition
Lect 19
P. 4
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
Gateway Engineering Education Coalition
Lect 19
P. 5
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
Gateway Engineering Education Coalition
Lect 19
P. 6
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
Gateway Engineering Education Coalition
Lect 19
P. 7
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
Gateway Engineering Education Coalition
Lect 19
P. 8
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
Gateway Engineering Education Coalition
Lect 19
P. 9
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
Gateway Engineering Education Coalition
Lect 19
P. 10
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
Gateway Engineering Education Coalition
Lect 19
P. 11
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
Gateway Engineering Education Coalition
Lect 19
P. 12
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
Gateway Engineering Education Coalition
Lect 19
P. 13
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
Gateway Engineering Education Coalition
Lect 19
P. 14
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
Gateway Engineering Education Coalition
Lect 19
P. 15
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
Gateway Engineering Education Coalition
Lect 19
P. 16
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
Gateway Engineering Education Coalition
Lect 19
P. 17
Download