Command and Function Syntaxes in MATLAB
There is a fairly constant stream of questions in many MATLAB venues, including the MATLAB newsgroup that boil down to not understanding the difference between command and function syntaxes in MATLAB. Today I try to set the record straight.
Contents
Typical Question
Why is MATLAB giving me the wrong answer here?
A = 1:4;
disp A
A
Why don't I see the values 1,...,4 found in variable A?
MATLAB Documentation
Before answering the user's question and discussing the details, I must admit that I think the documentation on MATLAB Calling Syntax is very clear on this topic. Nonetheless, I will give my own take here.
MATLAB Function Syntax
We call MATLAB functions by listing their input arguments inside parentheses and separated by commas. For example,
sin(pi*(0:5)/5)
gives us a crudely sampled half sine wave. To put that into a variable, use a variable name (or index into an existing variable) followed by an equal sign (=) and then the expression being computed.
hs = sin(pi*(0:5)/5)
hs = 0 0.5878 0.9511 0.9511 0.5878 0.0000
For multiple output variables, use a variables separated by commas and surrounded by square brackets for the output arguments:
[a,b,c] = deal(17)
a = 17 b = 17 c = 17
Instead of explicit inputs, we can use variables and variable expressions.
tpoints = (0:25)/5; halfsine = sin(pi*tpoints(1:6))
halfsine = 0 0.5878 0.9511 0.9511 0.5878 0.0000
and if we wanted to compute this in single precision instead of using doubles, we can do something like this:
tps = single(tpoints); halfsines = sin(pi*tps(1:6))
halfsines = 0 0.5878 0.9511 0.9511 0.5878 -0.0000
If we have a function that takes a string input, such as dir, we can either pass in the string explicitly:
dir('D:\Loren\BootCamp')
. .. fromDoug fromStuart
or we can pass in a string variable.
dirname = 'D:\Loren\BootCamp'
dir(dirname)
dirname = D:\Loren\BootCamp . .. fromDoug fromStuart
MATLAB Command Syntax
Command syntax doesn't use parentheses, frequently doesn't place output in a variable, can't return multiple variables, and handles only literal string inputs. For example,
disp(dirname)
D:\Loren\BootCamp
displays the string value of the variable dirname, while
disp dirname
dirname
displays the literal string dirname.
Similarly, we can see the difference between the following 2 statements:
disp A
disp(A)
A 1 2 3 4
where the first statement displays the literal string A and the second statement displays the values that A contains.
Equivalent MATLAB Statements Using Command and Function Syntax
Here are some equivalent MATLAB statements for combining a string and a number to create a filename to pass to load.
load('file4')
load file4
fn = 'file4'; load(fn)
fn = 'file'; nfiles = 4; load([fn int2str(nfiles)])
How to Help Users Not Trip on Command vs. Function Syntax
Do you have any thoughts on how we can prevent users from tripping over command vs. function syntax in MATLAB? If so, please let me know.
Published with MATLAB® 7.2
- Category:
- Common Errors,
- Strings
Comments
To leave a comment, please click here to sign in to your MathWorks Account or create a new one.