选择“命令格式”或“函数格式”
MATLAB®有两种调用方法的函数,叫做函数的语法而且命令语法.本页讨论这些语法格式之间的区别,以及如何避免与命令语法相关的常见错误。
有关调用函数的介绍信息,请参见调用函数.有关定义函数的信息,请参见在文件中创建函数.
命令格式和函数格式
在MATLAB中,这些语句是等价的:
杜勒负载。命令语法加载('durer.mat') %函数语法
这种等价有时被称为command-function二元性.
所有函数都支持这个标准函数语法:
(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) |
打开(文件名) |
等于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
使用命令语法实现。
最佳实践是避免定义与通用函数冲突的变量名,以防止任何歧义。