![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=1738838803-9AOm7y68KqrVjJ3MTypn0fYXWbTrn5TC-0-61f5cbe8cc4cd3803418847c7ea70c67)
说明:若要创造列向量,只需将行向量进行转置即可,使用命令“'”,如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=1738838803-6FvMBoqbkj2BaMdFhW09e1B8AZ3vEoEX-0-1025972fa2d2c375462f41de9c933363)
【例2-8】 用logspace产生10~100的8个等距数组。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-13.jpg?sign=1738838803-thJ84nYRybTg7vPSiPHC7w4SDSDrzHjL-0-eb7427a8f88c9ffb3056469553e607cf)
2.2.2 数组的保存和装载
1.在命令行窗口保存数组
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-14.jpg?sign=1738838803-hl7hy9pWnm9ZrETeURD3QeJqheY6L0VI-0-d9913bb693bc45ff5a9c0f9def9d5f36)
2.利用存取数据文件的方式保存数组
先建立一个M文件,名称为“abc.m”,其程序为:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-15.jpg?sign=1738838803-7XKSzPj4SDjBYLjjRdMra0fwHuY09PS6-0-6b08e7ae30b61d9ec73ed5442207e25f)
这样就将数组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=1738838803-kTdiwh7AcrSaylOjQPWFeMNhYz5u95TC-0-5493328387d4da3e9427f2b3b5a69561)
注: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=1738838803-x6pplvdGvfoid9YyDSRvFM8daogmqqZC-0-9724b2273fb0824c6f4484a17b770873)
2.2.4 数组排序及维数
1.数组排序
对于任意一个数组,其元素大小没有规律。在实际应用中,往往需要对数组元素进行排序。对数组排序的命令是sort()函数。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-19.jpg?sign=1738838803-gD3SemGYrkIJMIHiHSorecXTZ0uZLs0y-0-bc9102d1ac698336fdcc202fd04edc40)
例如,对于【例2-9】中的原始数据x,输入命令:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-20.jpg?sign=1738838803-5wXWK6CLcC5C7U1OO8CTzFhOeWwXF7AN-0-da381584f2d7dda605e0452ae3a410cc)
2.数组维数
数组维数是指数组包含元素的个数。向量中元素的数量是向量的长度,用函数length()来求得。例如,对于【例2-9】中的原始数据x,输入命令:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-21.jpg?sign=1738838803-ZfdcreKUHZrYpvfaiXCr2ifNfnn48kE4-0-f7f2762eedf6ec9893a8641e3991239a)
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=1738838803-YmgIc3idgqckuGFqotg2TAfbbSV6fPtl-0-37bf963e4f9b35681605623791ca45d2)
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=1738838803-rx95fabcG7Vy31bpWzrPpIKXutXn45Ke-0-88a26128de646997e525f61e96d6aa0f)