主要内容

选择“命令格式”或“函数格式”

MATLAB®有两种方法调用函数,调用函数的语法而且命令语法.本页讨论这些语法格式之间的差异,以及如何避免与命令语法相关的常见错误。

有关调用函数的介绍信息,请参见调用函数.有关定义函数的信息,请参见在文件中创建函数

命令格式和函数格式

在MATLAB中,这些语句是等价的:

杜勒负载。load('durer.mat') %命令语法

这种等价性有时被称为command-function二元性

所有函数都支持这个标准函数语万博1manbetx法:

(output1,……,outputM] = functionName(input1, ..., inputN)

在函数语法中,输入可以是数据、变量,甚至MATLAB表达式。如果输入是数据,比如数值2或者字符串数组[a" b" c"], MATLAB将其原样传递给函数。如果输入是一个变量,MATLAB将传递分配给它的值。如果输入是一个表达式,比如2 + 2sin(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(“hello world”)

Disp 'hello world'

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使用命令语法函数。

最佳实践是避免定义与通用函数冲突的变量名,以防止任何歧义。

另请参阅

|