选择“命令格式”或“函数格式”
MATLAB®有两种方法调用函数,调用函数的语法而且命令语法.本页讨论这些语法格式之间的差异,以及如何避免与命令语法相关的常见错误。
有关调用函数的介绍信息,请参见调用函数.有关定义函数的信息,请参见在文件中创建函数.
命令格式和函数格式
在MATLAB中,这些语句是等价的:
杜勒负载。load('durer.mat') %命令语法
这种等价性有时被称为command-function二元性.
所有函数都支持这个标准函数语万博1manbetx法:
(output1,……,outputM] = functionName(input1, ..., inputN)
在函数语法中,输入可以是数据、变量,甚至MATLAB表达式。如果输入是数据,比如数值2
或者字符串数组[a" b" c"]
, MATLAB将其原样传递给函数。如果输入是一个变量,MATLAB将传递分配给它的值。如果输入是一个表达式,比如2 + 2
或sin(2 *π)
, MATLAB先求值,然后将结果传递给函数。如果函数有输出,您可以将它们分配给变量,如上面的示例语法所示。
命令语法更简单,但限制更大。要使用它,请使用空格而不是逗号分隔输入,并且不要将它们括在括号中。
functionName input1…inputN
使用命令语法,MATLAB将所有输入作为字符向量传递(也就是说,就好像它们被括在单引号中一样),而不将输出分配给变量。若要传递字符向量以外的数据类型,请使用函数语法。要传递包含空格的值,有两个选项。一种是使用函数语法。另一种方法是在值周围加上单引号。否则,MATLAB将空间视为将值分割为多个输入。
如果将值赋给变量,则必须使用函数语法将值传递给函数。命令语法总是将输入作为字符向量传递,而不能传递变量值。例如,创建一个变量并调用disp
使用函数语法来传递变量的值:
A = 123;disp (A)
这段代码返回预期的结果,
123
的值不能使用命令语法传递一个
,因为这个电话
disp一个
等于
disp (“一个”)
并返回
一个
避免常见语法错误
假设你的工作空间包含这些变量:
Filename = 'accounts.txt';A = int8(1:8);B = a;
下表说明了命令语法的常见错误应用。
这个命令…… | 相当于…… | 传递值的正确语法 |
---|---|---|
打开文件名 |
open (filename) |
打开(文件名) |
isequal A B |
isequal(“A”、“B”) |
isequal (A, B) |
strcmp类(A) int8 |
比较字符串(“类(A)”,“int8”) |
比较字符串(类(A),“int8”) |
cd tempdir |
cd(“tempdir”) |
cd (tempdir) |
isnumeric 500 |
isnumeric(“500”) |
isnumeric (500) |
3.499圆 |
圆的(“3.499”) ,等于轮([51 46 52 57 57]) |
轮(3.499) |
Disp hello world |
disp('你好','世界') |
或
|
disp“字符串” |
disp(“字符串”) |
disp(“字符串”) |
传递变量名
有些函数需要变量名的字符向量,例如保存
,负载
,清晰的
,谁
.例如,
档案丢勒。垫X
请求关于变量的信息X
在示例文件中durer.mat
.该命令相当于
谁(' - file ', ' durer.mat ', ' X ')
如何MATLAB识别命令格式
考虑一下这个可能模棱两可的说法
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
使用命令语法函数。
最佳实践是避免定义与通用函数冲突的变量名,以防止任何歧义。