目录
命令与函数语法
命令与函数语法
在 MATLAB® 中,以下语句是等效的:
load durer.mat % Command syntax
load('durer.mat') % Function syntax
这种等效有时称为命令-函数二元性。所有函数都支持以下标准函数语法:
[output1, ..., outputM] = functionName(input1, ..., inputN)
如果不需要函数的任何输出,并且所有输入都是字符向量(即置于单引号内的文本),则可以使用以下更为简单的命令语法:
functionName input1 ... inputN
通过命令语法,可以用空格而不是逗号来分隔输入,并且不需要将输入参数括入括号。命令语法始终将输入作为字符向量传递。要使用字符串作为输入,请使用函数语法。如果字符向量包含空格,请使用函数语法。
当函数输入为变量时,必须使用函数语法来将值传递给函数。命令语法始终将输入作为字符向量传递,不能传递变量值。例如,创建一个变量并通过函数语法调用disp函数,以传递该变量的值:
A = 123;
disp(A)
该代码返回预期的结果,
123
不能使用命令语法来传递A的值,因为此调用
disp A
等效于
disp('A')
并返回
A
避免常见的语法错误
假定的工作区包含以下变量:
filename = 'accounts.txt';
A = int8(1:8);
B = A;
下表说明了常见的命令语法误用情况。
以下命令... | 等同于... | 传递值的正确语法 |
---|---|---|
open filename | open('filename') | open(filename) |
isequal A B | isequal('A','B') | isequal(A,B) |
strcmp class(A) int8 | strcmp('class(A)','int8') | strcmp(class(A),'int8') |
cd matlabroot | cd('matlabroot') | cd(matlabroot) |
isnumeric 500 | isnumeric('500') | isnumeric(500) |
round 3.499 | round('3.499') ,等效于 round([51 46 52 57 57]) | round(3.499) |
disp hello world | disp('hello','world') | disp('hello world') |
disp "string" | disp('"string"') | disp("string") |
传递变量名称
某些函数期望获取变量名称的字符向量,例如 save、load、clear 和 whos。例如,
whos -file durer.mat X
请求示例文件 durer.mat 中有关变量 X 的信息。此命令等同于
whos('-file','durer.mat','X')
MATLAB 如何识别命令语法
以下面可能具有多义性的语句为例:
ls ./d
该语句可能是调用 ls 函数并将文件夹 ./d 作为其参数,也可能是使用变量 d 作为除数请求对数组 ls 执行按元素除法。
如果在命令行中发出此类命令,MATLAB 可能会访问当前工作区和路径,以确定 ls 和 d 是函数还是变量。但是,某些组件(例如代码分析器和编辑器/调试器)在运行时不需要引用路径或工作区。在这些情况下,MATLAB 会使用语法规则来确定表达式是否为使用命令语法的函数调用。
通常,当 MATLAB 识别出一个标识符(可能用来命名一个函数或变量)时,它会分析该标识符后面的字符,以确定表达式的类型,如下所示:
-
等号 (
=
) 表示赋值。例如:ls =d
-
标识符之后的左括号表示函数调用。例如:
ls('./d')
-
标识符后面的空格(但不在潜在的运算符之后)表示使用命令语法的函数调用。例如:
ls ./d
-
潜在运算符的两侧带有空格,或者该运算符任意一侧没有空格,均表示变量运算。例如,以下语句是等效的:
ls ./ d ls./d
因此,可能具有多义性的语句 ls ./d 是使用命令语法调用 ls 函数。
最佳做法是避免定义与公共函数冲突的变量名称,以防止出现任何多义性。