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