![MATLAB 8.5基础教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/310/31304310/b_31304310.jpg)
2.2 一维数值数组及其操作
一维数值数组即为向量。日常应用中的大量数据都可以看成一个数值向量,可以对向量进行分析、运算等处理。
2.2.1 数组创建
创建简单的一维数值数组常用方法:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-11.jpg?sign=1738901221-lNKrgLh9kWDyTn5Z57M3maiNzi3a6KEX-0-75dc861b8a77e63e23c81073ab441708)
说明:若要创造列向量,只需将行向量进行转置即可,使用命令“'”,如x'表示x的转置。
【例2-7】 用linspace产生0~π的10个等距数组。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-12.jpg?sign=1738901221-9f3N56gFUOzA65V249IUUs24cwRlRY9R-0-52fb68a713b919ac6083365e94242b69)
【例2-8】 用logspace产生10~100的8个等距数组。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-13.jpg?sign=1738901221-Dawt8zKiyXmN4W0xeLmHA3VwAgW00bAJ-0-514c9c3fa5fb0c35e6fcb9f15cdb79f1)
2.2.2 数组的保存和装载
1.在命令行窗口保存数组
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-14.jpg?sign=1738901221-tRmCwRkSKKe2OrbTXStv8J56DNjXCtpH-0-82518f49967e5e2c1abd8a9c1dd74732)
2.利用存取数据文件的方式保存数组
先建立一个M文件,名称为“abc.m”,其程序为:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-15.jpg?sign=1738901221-vf0vtGUj9HX2uEsBVLmCKYUPosDky4Mu-0-d4050ed549ca81183b48f2ce36662351)
这样就将数组A、B保存在文件名为xyz的数据文件,即xyz.mat文件。
3.利用Workspace菜单保存数组
若Workspace内存变量中已有数组A、B,可单击操作界面HOME选项卡下的按钮,在弹出的对话框中进行操作。
4.数组的装载
若要调用数组A、B,只需在MATLAB命令行窗口输入命令:
>>load xyz
即可将数组A、B导入工作区Workspace中。
2.2.3 数组寻址和赋值
1.数组寻址
由于数组是由多个元素组成,因此在访问数组中单个或多个元素时,有必要对数组进行寻址运算。
1)访问一个元素:x(i)表示访问数组x的第i个元素。
2)访问一块元素:x(a:b:c)表示访问数组x的从第a个元素开始,以步长为b,到第c个元素(但不超过c)结束的一块元素,b可以为负数,默认为1。
3)直接使用元素编址序号:x([a b c d])表示提取数组x的第a、b、c、d个元素构成一个新的数组[x(a)x(b)x(c)x(d)]。
4)用end参数表示数组的结尾,如x(5:end)。
5)利用索引函数find()寻址,如x(find(x>c))。
【例2-9】 查找数组位置及对应的值。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-17.jpg?sign=1738901221-SoGjlRBUr7lbqbnyEAWVanRVbjtXKxsp-0-cf16d162c1dafd0b57a388b9e58e6284)
注:a表示数组所处的位置,b为a对应的值。
2.数组的赋值
通过数组赋值,可以修改原始数组中的数据。例如对【例2-9】中的数组x,输入命令:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-18.jpg?sign=1738901221-zJ5XmDEgDTsttYSUaCszc1VzYJGWO2aT-0-5749edeadaddd47761275a93c4643911)
2.2.4 数组排序及维数
1.数组排序
对于任意一个数组,其元素大小没有规律。在实际应用中,往往需要对数组元素进行排序。对数组排序的命令是sort()函数。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-19.jpg?sign=1738901221-qLfiydRm0RDKizWcyLz8cmblBon5duDQ-0-2911347f7b42fd3592c7861d03800577)
例如,对于【例2-9】中的原始数据x,输入命令:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-20.jpg?sign=1738901221-JlNbRzoUgiY3LFru5M36c8lB1vMxGxjt-0-2f7e5d31ab0bee4e92945d10d44e5332)
2.数组维数
数组维数是指数组包含元素的个数。向量中元素的数量是向量的长度,用函数length()来求得。例如,对于【例2-9】中的原始数据x,输入命令:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-21.jpg?sign=1738901221-AyDA8mkq4oEg8NIwNfuLspXPswox4L1W-0-c828cf286ab089bd78e980e4cd682d8c)
2.2.5 数组运算
1.数组运算指令
数组运算指令及含义如表2-3所示。
表2-3 数组运算指令及含义
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-22.jpg?sign=1738901221-fFcXEyaqzkMTkZBl7E2chrlr5BNDbFZA-0-3a4715874c8a5367e7d7bbeb7d33c45c)
2.标量-数组运算
数组对标量的加、减、乘、除、幂运算是指数组的每个元素对该标量施加相应的加、减、乘、除、幂运算。
设a=[a1,a2,…,an],c=标量
则a+c=[a1+c,a2+c,…,an+c]
a.*c=[a1*c,a2*c,…,an*c](点乘)
a./c=[a1/c,a2/c,…,an/c](右点除)
a.\c=[c/a1,c/a2,…,c/an](左点除)
a.^c=[a1^c,a2^c,…,an^c](点幂)
c.^a=[c^a1,c^a2,…,c^an]
3.数组-数组运算
当两个数组有相同维数时,加、减、乘、除、幂运算可按元素对元素方式进行,不同大小或维数的数组是不能进行运算的。
设a=[a1,a2,…,an],b=[b1,b2,…,bn]
则a+b=[a1+b1,a2+b2,…,an+bn]
a.*b=[a1*b1,a2*b2,…,an*bn]
a./b=[a1/b1,a2/b2,…,an/bn]
a.\b=[b1/a1,b2/a2,…,bn/an]
a.^b=[a1^b1,a2^b2,…,an^bn]
4.向量的常用函数
一维数组(向量)的常用函数及其含义如表2-4所示。
表2-4 向量的常用命令及含义
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-23.jpg?sign=1738901221-xyLAbRgrdjK7QY030KJG3BJcWUw2ZpZn-0-7a1f6d788e50176fc91764842879d48a)