![MATLAB R2020a智能算法及实例分析](https://wfqqreader-1252317822.image.myqcloud.com/cover/824/38601824/b_38601824.jpg)
1.5 MATLAB的编程基础
MATLAB是一门计算语言,它的运算指令和语法基于一系列基本的矩阵运算及它们的扩展运算,还支持复数这一数值元素,这也是MATLAB区别于其他高级语言的最大特点之一,因此给许多领域的计算带来了极大的方便。
1.5.1 变量
变量是保存数据信息的一种最基本的数据类型。变量的命名应遵循以下规则。
● 变量名区分大小写,因此,A与a表示的是不同的变量,初学者尤其要注意这一点。
● 变量名以英文字母开始,第一个字母后可以使用字母、数字、下画线,但不能使用空格和标点符号。
● 变量名长度不得超过31位,超过的部分将被忽略。
● 某些常量也可以作为变量使用。例如,i在MATLAB中表示虚数单位,但它也可以作为变量使用。
常量是指那些在MATLAB中已预先定义其数值的变量。MATLAB默认的常量如表1-4所示。
表1-4 MATLAB默认的常量
![img](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_26.jpg?sign=1738840601-XTQxwmTMNfgvfR2SgbiTZDuRPhPV8GOW-0-759416bfbc0ba0297d4df7f25ec07882)
注意:A和a表示的是不同的变量,在编程时要注意。
1.5.2 赋值语句
MATLAB采用的是命令行形式的表达式语言,每个命令行就是一条语句,其格式与书写数学表达式的格式十分相近,非常容易掌握。读者在命令窗口输入语句并按Enter键后,该语句就会由MATLAB系统解释运行,并给出运行结果。MATLAB的赋值语句有下面两种结构。
1.直接赋值语句
直接赋值语句的基本格式为:
赋值变量=赋值表达式
其中,等号右边的赋值表达式由变量名、常数、函数和运算符构成,直接赋值语句把赋值表达式的值直接赋给了赋值变量,并将返回值显示在MATLAB的命令窗口中。
【例1-6】对A进行赋值,实现A=2*3+110。
在MATLAB命令窗口中输入直接赋值语句并按Enter键:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_27.jpg?sign=1738840601-H5cpozcBxZXmz7wGqTxclcxNEgbJbQPz-0-fefb4143dac7348246d1172a3fb59820)
运行程序,输出如下:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_28.jpg?sign=1738840601-bDJSCK0hDAcqYVtWDJC9OykqHYmYaCfz-0-887f39eaf3255c65702e361894bb08b0)
注意:
(1)如果直接赋值语句后面没有分号“;”,那么MATLAB命令窗口中将显示表达式的运算结果;如果不想显示运算结果,则应该在直接赋值语句末尾加上分号。
(2)如果省略直接赋值语句左边的赋值变量和等号,则表达式运算结果将默认赋值给系统保留变量ans。
(3)如果等号右边的赋值表达式不是数值,而是字符串,则字符串两边应加单引号。
2.函数调用语句
函数调用语句的基本结构为:
[返回变量列表]=函数名(输入变量列表)
其中,等号右边的函数名对应一个存放在合适路径中的MATLAB文本文件。函数可以分为两大类:一类是MATLAB内核中已经存在的内置函数;另一类是读者根据需要自定义的函数。
返回变量列表和输入变量列表均可以由若干变量名组成。
注意:如果返回变量个数大于1,则它们之间应该用逗号或空格进行分隔;如果输入变量个数大于1,则它们之间只能用逗号进行分隔。
【例1-7】通过调用cos函数求的值。
在MATLAB命令窗口中输入以下语句并按Enter键:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_30.jpg?sign=1738840601-zIp3jiaKbvhUeBh1fgWjllbjUfk0W6cQ-0-9b0cac5f4176759bf356367a868b0c24)
运行程序,输出如下:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_31.jpg?sign=1738840601-gvMy6qZOma0oT2wIxY7ZWZMl4VhwpY3O-0-0993a5f366132b7c88523fd9507a064e)
注意:
(1)函数名的命名规则与变量名的命名规则一致,读者在命名自定义函数时,必须避免与MATLAB已有的内置函数重名。
(2)对于内置函数,读者可以直接调用;对于自定义函数,该函数对应的M文件应当保存在MATLAB可以搜索的目录中。
1.5.3 矩阵及其元素表示
矩阵是MATLAB中数据存储的最佳形式,尽管MATLAB还可以采用其他的存储方式,但采用矩阵存储方式有利于各类数据的运算和操作。
1.矩阵的表示
用MATLAB语言表示一个矩阵非常容易。在MATLAB命令窗口中输入下面的语句并按Enter键:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_32.jpg?sign=1738840601-EIs5695LVwpS03syRqO6fluxDPEcw6cM-0-2d97b4a8e87d422e6f443e6b76aa784f)
运行程序,输出如下:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_33.jpg?sign=1738840601-akjzP8gmvxlPX2kbCH1RgnfbqWUHZQRQ-0-1a5daa5e96c9548f024fa996f59cd96e)
可见矩阵A被成功赋值,并在MATLAB的工作空间中建立了一个名为A的矩阵变量,读者可以在后续的命令和函数中随意调用该矩阵。在输入矩阵的过程中,必须遵循以下规则。
(1)必须使用方括号“[]”将矩阵的所有元素括起来。
(2)矩阵中不同行之间必须用分号或换行符隔开。
(3)矩阵中同一行的各元素之间必须用逗号或空格隔开。
为了方便用户使用,提高编程效率,除了最基本的直接输入方法,MATLAB还给用户提供了一些可以直接调用的内置基本矩阵函数,有时可以成为创建矩阵的捷径。
表1-5为MATLAB提供的主要内置基本矩阵函数。
表1-5 MATLAB提供的主要内置基本矩阵函数
![img](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_34.jpg?sign=1738840601-Fn76NdJ0U1gn0t72Ef9pZ0mZzh9qtg8Z-0-0620fd8d2e635c23d9a124f26b317d28)
注意:向量是矩阵的一种特例,前面介绍的有关矩阵的表示方法完全适用于向量,只是在表示矩阵行/列数的n和m中,有一个为1。
【例1-8】实现矩阵的创建。
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_35.jpg?sign=1738840601-WHVQg02nXZlhDBHg2cUHbuqsu4sZTjrF-0-4ac01788e11ff9171d80f9265f9cb6cc)
MATLAB还提供了一个便利且高效的表达式,用来给等步长的行向量赋值,即冒号表达式。冒号表达式的基本调用格式为:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_36.jpg?sign=1738840601-rlRIdaSW2DgNRaNt3MQfbJyUA1gBHBQ8-0-bf33ab19e121b7a49b251a18b1962f12)
其中,s、e为标量,分别代表向量的起始值和终止值;h代表向量元素之间的步长值。例如:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_37.jpg?sign=1738840601-IgCC6Vk6OdH8Wg7DxXKfbeLy25RL41LB-0-38d13595d2901688d311a56f2363a2d2)
2.矩阵元素的表示和赋值
矩阵元素的行号和列号称为该元素的下标,是通过“()”中的数字(行、列的标量)来标识的。矩阵元素可以通过其下标被引用,如A(i,j)表示矩阵A的第i行第j列的元素。
【例1-9】矩阵元素的表示。
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_38.jpg?sign=1738840601-uPeewUV2i7vE6F0vdxLo0cJC9tPnvj3P-0-329ad6ef794faebcee0f9afc428962bf)
注意:冒号“:”在此能发挥很大的作用。A(2,:)表示矩阵A的第2行的全部元素,A(:,2)表示矩阵A的第2列的全部元素,A(1,1:2)表示矩阵A的第1~2列的全部元素。