To days Outline
Download
Report
Transcript To days Outline
To days Outline
Functions
Strings
Sparse Arrays
Cell Arrays
Structures
Exercises on this days topics
MATLAB and Simulink
lecture 3
1
Functions files
Runs in its own independent workspace
Receives input data through an
Input argument list
Returns data through an
Output argument list
MATLAB and Simulink
lecture 3
2
Functions files
The first word written in the file must be the
word function
function [outarg1,…] = fname(inarg1,…)
%Comment lines
…
(Executable code)
…
(return)
MATLAB and Simulink
lecture 3
3
Functions files
Variable passing
When a function calls occurs.
MATLAB makes a copy of the arguments
If the function modifies the input
argument it will not affect the original
data in the caller.
This apply both scalars and arrays.
MATLAB and Simulink
lecture 3
4
Example
Create a function that adds a value to
the input argument and returns the
new value.
MATLAB and Simulink
lecture 3
5
Example
In command window
>> A=[1 2];
>> B=myfun(A);
Input argument before modifying: [1 2]
Input argument after modifying: [11 12]
>> disp(A)
1
2
>> disp(B)
11 12
MATLAB and Simulink
lecture 3
6
Functions files
Optional Arguments
Many function supports optional input and
output arguments
We have used the plot command with several
different Input argument lists.
The max command accepts different output
arguments
How do MATLAB functions know how many
arguments are present and how do they
adjust their behavior?
MATLAB and Simulink
lecture 3
7
Functions files
MATLAB offers some special functions to get information
about the arguments and to report errors
nargin
Returns the actual number of input
arguments used to call the function.
nargout
error(msg)
warning(msg)
nargchk
MATLAB and Simulink
Returns the actual number of output
arguments used to call the function.
Display error message and abort
the function producing the error.
Display warning message
Execution can continue
Returns a standard error message if a
function is called with to few or to many
arguments
lecture 3
8
Example
The location of a point in the Cartesian plane can be
represented either in rectangular (x,y) or polar coordinates
(r,θ).
x r cos( )
y r sin( )
•
•
•
•
r x2 y 2
tan 1 y
x
Write a function rect2polar that converts rectangular coordinates to polar
coordinates.
The function is design to support two input arguments (x,y)
However if only one input argument is supplied the functions should
suppose that y is equal to zero.
The function normally returns both magnitude and angle but if only one
output argument is present, it returns only the magnitude
MATLAB and Simulink
lecture 3
9
Test the function: In command window:
>> [mag,angle]=rect2polar
??? Error using ==> rect2polar
Not enough input arguments.
>> [mag,angle]=rect2polar(1,-1,2)
??? Error using ==> rect2polar
Too many input arguments.
>> [mag,angle]=rect2polar(1)
mag =
1
angle =
0
>> [mag,angle]=rect2polar(1,1)
mag =
1.4142
angle =
45
>> [mag]=rect2polar(1,1)
mag =
1.4142
Functions files
Global Memory
Provides a way to share data between
functions
A global memory is declared with the
global statement.
global var1 var2 …
MATLAB and Simulink
lecture 3
11
Functions files
Preserving data
When a function finishing executing the
special workspace will be destroyed.
Persistent memory
Only accessed within the function
A persistent variable is declared using the
persistent statement
persistent var1 var2 …
MATLAB and Simulink
lecture 3
12
Functions files
Subfunctions or Internal functions
More than one function in a single file
Top function is the normal function
The ones below are subfunctions or
Internal functions
MATLAB and Simulink
lecture 3
13
Strings
In MATLAB a string is an array of type char.
Creating two-dimensional Character arrays
Each row must have the same length
MATLAB offers a number of string operations
str=’This Is a string’
strcmp(str1,str2)
Compares two strings
Returns 1 if true.
See MATLAB help for more string operations
MATLAB and Simulink
lecture 3
14
Sparse Arrays
Sparse arrays are special arrays in
which memory is only allocated for the
nonzero elements.
using sparse arrays saves memory and
can make a program run faster.
sparse(A)
MATLAB and Simulink
Converts A to a sparse
array
lecture 3
15
Cell Arrays
A cell array is a special array that can
contain different data:
Strings
Complex numbers
vectors
Cell array uses braces {} instead of
parentheses () for selecting cells
To view a cell array graphically use
cellplot(A)
MATLAB and Simulink
lecture 3
16
Structures
Structures can be created in two ways
1.
A field at a time using assignment statements.
>>student.name='Carl';
>>student.addr='Borlänge';
>>student.phone=778858;
student =
name: 'Carl'
addr: 'Borlänge'
phone: 778858
MATLAB and Simulink
lecture 3
17
Structures
A second student can be added to the
structure by using a subscript
>>student(2).name=’John’;
The other field will automatically be
initialized as an empty array.
Accessing field in the structure using
parentheses
MATLAB and Simulink
lecture 3
18
Structures
2.
All at once using the struct function
str_array=struct(field1,val1,field2,val2)
Example:
student=struct('Name',{'Carl','John'},'Addr',...
'Borlänge','Falun'},'Phone',{778858,123456})
This will construct a 1x2 structure.
MATLAB and Simulink
lecture 3
19
Exercises on this days topics
5.1 , 5.2, 5.10(8) , 5.16(13) ,
5.19(16), 5.24(20)
6.1 , 6.20(18)
7.6
The exercise numbers are referring
to the book MATLAB Programming
for engineers, third edition
20(second edition).
MATLAB and Simulink
lecture 3
20