![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=1739258094-eHBFH4k0zsnWiYS2nFHpRQwJiD3743po-0-0754c39cd70406df8eaf6b8a01a67213)
说明:若要创造列向量,只需将行向量进行转置即可,使用命令“'”,如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=1739258094-64jGRYaSx3Lo3fNa6z1q0Ez7dwKkphIg-0-f867c9b6a47919a09c9a9558e5798df2)
【例2-8】 用logspace产生10~100的8个等距数组。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-13.jpg?sign=1739258094-tfOA9krAyEn5BvblzoXOa33EuW6arwvP-0-21cffa6f46e74b672bdb76501ee6d488)
2.2.2 数组的保存和装载
1.在命令行窗口保存数组
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-14.jpg?sign=1739258094-JaRluj1vIPiB6BqqLNlKuOYFJsnrjjaf-0-73091613e3adb893b730716b754ef0f1)
2.利用存取数据文件的方式保存数组
先建立一个M文件,名称为“abc.m”,其程序为:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-15.jpg?sign=1739258094-KWfvpVV79WBeqPKHPfrLWDTNbsKXNvJh-0-06fbcd72985f60f2e824dd8035233f9a)
这样就将数组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=1739258094-f2XltBq0x8z8dLXTypLexyGOXSdN5TOH-0-120dbe380af3210755ff3c624d467ed9)
注: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=1739258094-w2NpGFv4RU7UlAvADsAvkS0b121XIpJZ-0-ad5e79d880a3bfb8ec1f69828f0c34ec)
2.2.4 数组排序及维数
1.数组排序
对于任意一个数组,其元素大小没有规律。在实际应用中,往往需要对数组元素进行排序。对数组排序的命令是sort()函数。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-19.jpg?sign=1739258094-8ClXvHUsKnOpKzJgMfd3jT57i25vQrhU-0-06c615216f4414d858c455c24fc9b5b4)
例如,对于【例2-9】中的原始数据x,输入命令:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-20.jpg?sign=1739258094-kCoEtjkhVMRTkO3iwvMYtDrKC16J5Zz5-0-d6fb98646d799bac4d2869b0bbcf4707)
2.数组维数
数组维数是指数组包含元素的个数。向量中元素的数量是向量的长度,用函数length()来求得。例如,对于【例2-9】中的原始数据x,输入命令:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-21.jpg?sign=1739258094-S6yzlfhdC2epECIKZo4v0Ut8hcq3GxWy-0-88e9927bb17fa1dc82ece91ab59d5b77)
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=1739258094-b2IuVmVJGy8F1IoKB6hgLWL8kRKLsflB-0-ba7f2f3202fe7faea7c19172fbeb9040)
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=1739258094-Fi23mgfNNxTpa76MbBkhYCpfCnWeeyRC-0-4f048f4f878b164dc0170be5d8571ece)