Matlab中命令与函数语法

目录

命令与函数语法

命令与函数语法

避免常见的语法错误

MATLAB 如何识别命令语法


命令与函数语法

命令与函数语法

        在 MATLAB® 中,以下语句是等效的:

load durer.mat        % Command syntax
load('durer.mat')     % Function syntax

        这种等效有时称为命令-函数二元性。所有函数都支持以下标准函数语法:

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

        如果不需要函数的任何输出,并且所有输入都是字符向量(即置于单引号内的文本),则可以使用以下更为简单的命令语法

functionName input1 ... inputN

        通过命令语法,可以用空格而不是逗号来分隔输入,并且不需要将输入参数括入括号。命令语法始终将输入作为字符向量传递。要使用字符串作为输入,请使用函数语法。如果字符向量包含空格,请使用函数语法。

        当函数输入为变量时,必须使用函数语法来将值传递给函数。命令语法始终将输入作为字符向量传递,不能传递变量值。例如,创建一个变量并通过函数语法调用disp函数,以传递该变量的值:

A = 123;
disp(A)

        该代码返回预期的结果,

123

        不能使用命令语法来传递A的值,因为此调用

disp A

等效于

disp('A')

并返回

A

避免常见的语法错误

        假定的工作区包含以下变量:

filename = 'accounts.txt';
A = int8(1:8);
B = A;

下表说明了常见的命令语法误用情况。

以下命令...等同于...传递值的正确语法
open filenameopen('filename')open(filename)
isequal A Bisequal('A','B')isequal(A,B)
strcmp class(A) int8strcmp('class(A)','int8')strcmp(class(A),'int8')
cd matlabrootcd('matlabroot')cd(matlabroot)
isnumeric 500isnumeric('500')isnumeric(500)
round 3.499round('3.499'),等效于 round([51 46 52 57 57])round(3.499)
disp hello worlddisp('hello','world')disp('hello world')
disp "string"disp('"string"')disp("string")

传递变量名称

        某些函数期望获取变量名称的字符向量,例如 save、load、clear 和 whos。例如,

whos -file durer.mat X

        请求示例文件 durer.mat 中有关变量 X 的信息。此命令等同于

whos('-file','durer.mat','X')

MATLAB 如何识别命令语法

        以下面可能具有多义性的语句为例:

ls ./d

        该语句可能是调用 ls 函数并将文件夹 ./d 作为其参数,也可能是使用变量 d 作为除数请求对数组 ls 执行按元素除法。

        如果在命令行中发出此类命令,MATLAB 可能会访问当前工作区和路径,以确定 ls 和 d 是函数还是变量。但是,某些组件(例如代码分析器和编辑器/调试器)在运行时不需要引用路径或工作区。在这些情况下,MATLAB 会使用语法规则来确定表达式是否为使用命令语法的函数调用。

        通常,当 MATLAB 识别出一个标识符(可能用来命名一个函数或变量)时,它会分析该标识符后面的字符,以确定表达式的类型,如下所示:

  • 等号 (=) 表示赋值。例如:

    ls =d
  • 标识符之后的左括号表示函数调用。例如:

    ls('./d')
  • 标识符后面的空格(但不在潜在的运算符之后)表示使用命令语法的函数调用。例如:

    ls ./d
  • 潜在运算符的两侧带有空格,或者该运算符任意一侧没有空格,均表示变量运算。例如,以下语句是等效的:

    ls ./ d
    
    ls./d

    因此,可能具有多义性的语句 ls ./d 是使用命令语法调用 ls 函数。

    最佳做法是避免定义与公共函数冲突的变量名称,以防止出现任何多义性。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值