马铃薯草®有两种调用函数的方法,称为函数语法和命令语法。此页面讨论了这些语法格式与如何避免与命令语法相关的常见错误之间的差异。
有关调用函数的介绍信息,请参阅调用函数。有关定义函数的信息,请参阅在文件中创建函数。
在MATLAB中,这些语句是等效的:
load durematmat%command语法加载('dureer.mat')%函数语法
此等价有时被称为命令函数二元性。
所有功能都支持此标准函数语法金宝app:
[Output1,...,Outputm] = functionName(Input1,...,Inputn)
在函数语法中,输入可以是数据、变量,甚至是MATLAB表达式2
或字符串数组[“a”“b”“c”]
,MATLAB将其传递给函数。如果输入是变量MATLAB将传递分配给它的值。如果输入是表达式,就像2 + 2
或sin(2*pi)
,MATLAB首先对其求值,并将结果传递给函数。如果函数有输出,则可以将其分配给变量,如上面的示例语法所示。
命令语法更简单但更有限。要使用它,用空格而不是逗号分隔输入,也不会将它们括在括号中。
functionName Input1 ... Inputn
使用命令语法,MATLAB将所有输入作为字符向量(即,好像它们被单引号括起来),并且不会将输出分配给变量。要通过字符向量以外的数据类型,请使用函数语法。要传递包含空格的值,您有两个选项。一个是使用函数语法。另一个是将单引号放在值周围。否则,MATLAB将空格视为将值拆分为多个输入。
如果为变量赋值,则必须使用函数语法将值传递给函数。命令语法始终将输入作为字符向量传递,不能传递变量值。例如,创建一个变量并调用disp
使用函数语法来传递变量的值:
a = 123;DISP(a)
此代码返回预期结果,
123.
不能使用命令语法传递的值一种
,因为这个电话
disp一种
相当于
disp('一种'的)
返回
一种
假设您的工作区包含这些变量:
filename ='帐户.txt';a = int8(1:8);b = a;
下表说明了命令语法的常见违规。
这个命令...... | 相当于...... | 对传递值的正确语法 |
---|---|---|
打开文件名 |
打开('filename') |
打开(文件名) |
等位A B |
Isequal('A','B') |
Isequal(A,B) |
strcmp(A)级int8 |
Strcmp('(a)','int8') |
Strcmp(类(a),'Int8') |
cd tempdir |
CD('tempdir') |
CD(Tempdir) |
数字500 |
Isnumeric('500') |
Isnumeric(500) |
第3.499圈 |
圆形('3.499') ,这相当于圈([51 46 52 57 57]) |
圆形(3.499) |
尽管如荼的世界 |
disp(‘你好’、‘世界’) |
或
|
DISP“字符串” |
disp('字符串“') |
disp(“字符串”) |
某些功能预计变量名称的字符向量,例如拯救
那加载
那清楚的
和谁是
。例如,
whos -file durem.mat x
请求有关变量的信息X
在示例文件中杜尔.MAT
。此命令相当于
谁(' - 文件','duremat','x')
考虑潜在的暧昧声明
ls ./d.
这可能是对此ls
功能'./d'
作为它的参数。它还可以表示数组上的元素级除法ls
,使用变量D.
作为除数。
如果在命令行发出此语句,MATLAB可以访问当前工作空间和路径,以确定ls
和D.
是函数或变量。但是,某些组件(例如代码分析器和编辑器/调试器)在不引用路径或工作区的情况下操作。当您使用这些组件时,MATLAB使用语法规则来确定使用命令语法是否是函数调用。
通常,当MATLAB识别标识符(可能命名函数或变量)时,它会分析标识符后面的字符以确定表达式的类型,如下所示:
等标志(=
)意味着分配。例如:
LS = D.
标识符后的开括号表示函数调用。例如:
ls('./d')
标识符后面的空格(而不是潜在运算符后面的空格)表示使用命令语法的函数调用。例如:
ls ./d.
潜在操作员两侧的空间,或操作员两侧的空格,意味着变量的操作。例如,这些语句是等效的:
ls ./ d ls./d
因此,MATLAB将处理可能存在歧义的语句ls ./d.
呼唤着ls
使用命令语法函数。
最好的做法是避免定义与常用功能冲突的变量名称,以防止任何歧义。