主要内容

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

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

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

命令格式和函数格式

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

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

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

所有函数都支持这个标准函数语法:

(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) 打开(文件名)
等于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”)

取消“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使用命令语法实现。

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

另请参阅

|

Baidu
map