2.1.6 命令、函数、表达式和语句

有了常量、变量、数组和矩阵,再加上各种运算符即可编写出多种MATLAB的表达式和语句。但在MATLAB的表达式或语句中,还有一类对象会时常出现,那便是命令和函数。

1.命令

命令通常就是一个动词,在第1章中已经有过接触,例如clear命令,用于清除工作空间。还有的可能在动词后带有参数,例如“addpath F:\ MATLAB文件\M文件-end”命令,用于添加新的搜索路径。在MATLAB中,命令与函数都组织在函数库里,有一个专门的函数库general就是用来存放通用命令的。一个命令也是一条语句。

2.函数

函数对MATLAB而言,有相当特殊的意义,这不仅因为函数在MATLAB中应用面广,更在于其多。仅就MATLAB的基本部分而言,其所包括的函数类别就达二十多种,而每一类中又有少则几个,多则几十个函数。

基本部分之外,还有各种工具箱,而工具箱实际上也是由一组组用于解决专门问题的函数构成。不包括MATLAB网站上外挂的工具箱函数,就目前MATLAB自带的工具箱已多达几十种,可见MATLAB其函数之多。从某种意义上说,函数就代表了MATLAB, MATLAB全靠函数来解决问题。

函数最一般的引用格式是:

函数名(参数1,参数2, …)

例如,引用正弦函数就书写成sin(A), A就是一个参数,它可以是一个标量,也可以是一个数组,而对数组求其正弦是针对其中各元素求正弦,这是由数组的特征决定的,2.4.5节会有详细的举例。

3.表达式

用多种运算符将常量、变量(含标量、向量、矩阵和数组等)、函数等多种运算对象连接起来构成的运算式子就是MATLAB的表达式。例如

A+B&C-sin(A*pi)

就是一个表达式。请分析它与表达式(A+B)&C-sin(A*pi)有无区别。

4.语句

在MATLAB中,表达式本身即可视为一个语句。而典型的MATLAB语句是赋值语句,其一般的结构是:

变量名=表达式

例如F=(A+B)&C-sin(A*pi)就是一个赋值语句。

除赋值语句外,MATLAB还有函数调用语句、循环控制语句、条件分支语句等。这些语句将会在后面章节逐步介绍。

2.2.1 向量的生成

在MATLAB中,生成向量主要有3种方案:直接输入法、冒号表达式法和函数法,现分述如下。

1.直接输入法

在命令提示符之后直接输入一个向量,其格式是:向量名=[a1, a2, a3, …]

【例2.1】 直接法输入向量。

          >>A=[2,3,4,5,6], B=[1;2;3;4;5], C=[4 5 6 7 8 9];  %最后一个分号表示执行后不
                                                            显示C

其运行结果为

        A =
            2    3    4    5    6
        B =
            1
            2
            3
            4
            5

2.冒号表达式法

利用冒号表达式a1:step:an也能生成向量,式中a1为向量的第一个元素,an为向量最后一个元素的限定值,step是变化步长,省略步长时系统默认为1。

【例2.2】 用冒号表达式生成向量。

        >>A=1:2:10, B=1:10, C=10:-1:1, D=10:2:4, E=2:-1:10

其运行结果为

        A =
            1    3    5    7    9
        B =
            1    2    3    4    5    6    7    8    9   10
        C =
            10    9    8    7    6    5    4    3    2    1
        D =
          Empty matrix: 1-by-0
        E =
          Empty matrix: 1-by-0

试分析D、E不能生成的原因。

3.函数法

有两个函数可用来直接生成向量。一个实现线性等分——linspace( );另一个实现对数等分——logspace( )。

线性等分的通用格式为A=linspace(a1, an , n),其中a1是向量的首元素,an是向量的尾元素,n把a1至an之间的区间分成向量的首尾之外的其他n-2个元素。省略n则默认生成100个元素的向量。

【例2.3】 请在MATLAB命令窗口输入以下语句,观察用线性等分函数生成向量的结果。

        >>A=linspace(1,50), B=linspace(1,30,10)

对数等分的通用格式为A=logspace(a1, an , n),其中a1是向量首元素的幂,即A(1)=10a1;an是向量尾元素的幂,即A(n)=10an。n是向量的维数。省略n则默认生成50个元素的对数等分向量。

【例2.4】 请在MATLAB命令窗口输入以下语句,观察用对数等分函数生成向量的结果。

        >>A=logspace(0,49), B=logspace(0,4,5)

尽管用冒号表达式和线性等分函数都能生成线性等分向量,但在使用时有几点区别值得注意:

(1)an在冒号表达式中,它不一定恰好是向量的最后一个元素,只有当向量的倒数第二个元素加步长等于an时,an才正好构成尾元素。如果一定要构成一个以an为末尾元素的向量,那么最可靠的生成方法是用线性等分函数。

(2)在使用线性等分函数前,必须先确定生成向量的元素个数,但使用冒号表达式将依着步长和an的限制去生成向量,用不着去考虑元素个数的多少。

(3)实际应用时,同时限定尾元素和步长去生成向量,有时可能会出现矛盾,此时必须做出取舍。要么坚持步长优先,调整尾元素限制;要么坚持尾元素限制,去修改等分步长。