![MATLAB 8.5基础教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/310/31304310/b_31304310.jpg)
2.3 矩阵及其操作
MATLAB是基于矩阵运算的软件,所有数据都以矩阵形式存储。最基本的数据结构是二维的m×n矩阵(1×1的矩阵为标量、1×n的矩阵为向量),矩阵的创建及操作非常灵活、简便。
2.3.1 矩阵的创建
1.数值矩阵的生成
矩阵可直接按行输入每个元素来生成。同一行中的元素用逗号“,”或者空格符来分隔,且空格个数不限;不同的行用分号“;”分隔;所有元素在同一方括号“[]”内。
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-24.jpg?sign=1739187816-19RuuYkg6lslSdFqqBxiBgbfK5n5Q3mb-0-1c8dcf1a642b6b9482bd5764c96020fe)
2.特殊矩阵的生成
(1)全零阵
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-25.jpg?sign=1739187816-tq3TXPzxqu6qdIaKLzA7CeAV5cHAF29d-0-cbdc59f5746af9c5fc6fa23151d03833)
(2)全1阵
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-26.jpg?sign=1739187816-EppYBjzVTKft3vyM0iF1xmm4ERK1yF8m-0-79ccf5e7434fb155afbcf81191ca9cf8)
(3)单位阵
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-27.jpg?sign=1739187816-VUmi5BFlmKghgpQv8NpW7H3EeLubY7YK-0-955c1c4aa243fe98d9359937eed71d6b)
(4)产生以输入元素为对角线元素的矩阵
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-28.jpg?sign=1739187816-W3mJ2fqPobkpr917b7uLpnnPBQT2iWUY-0-68d3fe0d09a369930b68933144af0475)
说明:将向量v写入矩阵X的主对角线上,而矩阵其他元素为0。k表示上移或下移行数,正数表上移,负数表下移,0(默认值)表在对角线上。
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-29.jpg?sign=1739187816-fUecr4GjlxNxfNqK3MBUo0INm8Euh9XW-0-d814171f0a839d30aff0f57bd8c18859)
(5)Magic(魔方)矩阵
格式:M=magic(n) %产生n阶魔方矩阵
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-30.jpg?sign=1739187816-2JjYF5xJB8p5DAPL1zbAcqXxGmbH9XT6-0-f05ce1bfffbac6e9933f9d1a212d57b4)
2.3.2 矩阵元素操作
1)矩阵A的第r行:A(r,:)。
2)矩阵A的第r列:A(:,r)。
3)依次提取矩阵A的每一列,将A拉伸为一个列向量:A(:)。
4)取矩阵A的第i1~i2行、第j1~j2列构成新矩阵:A(i1:i2,j1:j2)。
5)以逆序提取矩阵A的第i1~i2行,构成新矩阵:A(i2:-1:i1,:)。
6)以逆序提取矩阵A的第j1~j2列,构成新矩阵:A(:,j2:-1:j1)。
7)删除A的第i1~i2行,构成新矩阵:A(i1:i2,:)=[]。
8)删除A的第j1~j2列,构成新矩阵:A(:,j1:j2)=[]。
9)将矩阵A和B拼接成新矩阵(A和B的维数要适当):[A B];[A;B]。
2.3.3 矩阵的维数
对于m×n的矩阵A,可以使用函数size获得A的维数。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-31.jpg?sign=1739187816-klk84A0ouMxe4qCjgoZvfkA0njueXBIl-0-7983e220d7e5c8a4d7b4b9bcfe648487)
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-32.jpg?sign=1739187816-7qzSgLdgowqpKms1UaomzaSIKtsJdY8E-0-e2a17accefe0eafd2dfa26558f8d437c)
2.3.4 矩阵赋值与扩展
MATLAB允许用户对一个矩阵的单个元素进行赋值和操作。例如,如果要将矩阵A中第2行第3列的元素赋为10,则可以通过下面的语句来完成:
>>A(2,3)=10
这时将只改变该元素的值,而不影响其他元素的值。如果给出的行下标或列下标大于原来矩阵的行数和列数,则MATLAB将自动扩展原来的矩阵,并将扩展后未赋值的矩阵元素置为0。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-33.jpg?sign=1739187816-TI7elnbh6UYS15qX8Mihlck94WPKRs3r-0-dc96b694c6ccede65a6c5f6a7976d788)
2.3.5 矩阵元素及重排
1.矩阵元素
在MATLAB中,也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素的序号就是相应元素在内存中的排列顺序。在MATLAB中,矩阵元素按列存储,先存储第一列,再存储第二列,依此类推。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-35.jpg?sign=1739187816-tR0sDBf421yYRmSpVVfDgwS0xNxZUx6u-0-bee84ebdfa8e3a4fb67ee25e133d77eb)
这与人们常用的取法A(3,1),A(1,3)的结果相同。
2.矩阵重排
当向量的元素个数能表示成m×n的形式时,可以将其排为矩阵形式。
格式:A-reshape(x,m,n) %将向量x重新排成mXn的矩阵A
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-36.jpg?sign=1739187816-NKLr9ANOg69rS5Xn1DEIRZZVDHo87bMa-0-1e5b7aeca9a96f240ff3986af7cfe6d2)
注:A(:)将矩阵A每一列元素堆叠起来,成为一个列向量,产生一个12×1的矩阵,等价于reshape(A,12,1),其转置A(:)'就是行向量x。
2.3.6 矩阵复制
矩阵的阶次在4阶以下时,矩阵元素的输入可以逐个写入。但是当矩阵阶次较大且结构相同时,用逐个输入的方法太费时间,这时可以用矩阵复制的办法来加快输入的速度,常用函数repmat()来进行矩阵复制。
格式:repmat(A,m,n)%A为待复制的向量或矩阵,m、n为需要复制的行数和列数
【例2-10】 已知A=[1 3 6 9 12],试求:1)写出对向量A复制6行的矩形B。
2)生成对向量A复制6行和两列的矩阵C。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-37.jpg?sign=1739187816-SV5STYcmszyeeDgQ5gPeoR31U6W4tgW0-0-f22899388755476aa75d41b61c2b7c20)
2.3.7 矩阵元素的查找
用find命令查找矩阵元素所在的位置及其对应的值。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-38.jpg?sign=1739187816-F2vAPaD26oYalD2SmPJoPa9MaBrMfx9Y-0-943e2fec1dcca0eced4f965d36ef74bc)
【例2-11】 己知,分别找出矩阵中大于0、等于20、大于等于30的位置。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-40.jpg?sign=1739187816-wUHd296DXo6eeCxqmYz2mmVxrnzvodKG-0-629d5fb2a91920eadb0af01eb9669cf5)
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-41.jpg?sign=1739187816-ljpbuJPonCDT0O0YAJ9iouuFH4fc5PFg-0-d4f3ed72494443ff988b1619da2d1c43)
2.3.8 稀疏矩阵
当矩阵的大部分元素是零,只有少数元素为非零元素时,这种矩阵称为稀疏矩阵。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-42.jpg?sign=1739187816-uecFP7HXEo3bR9nwbp5vhoe0WS65GGzm-0-89bc406566af5bb76e0e5a2dbae9e71e)
例如,对【例2-11】给定的矩阵A,试求出其稀疏矩阵B,再转换成全矩阵C,并绘出稀疏矩阵B的标示图。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-43.jpg?sign=1739187816-GVawyj9rUaCqNEtPuS7zuHA1TNfDm0db-0-d1c32c9d4a1db0b7850aa0f979bd0bef)
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-44.jpg?sign=1739187816-fctLbtiaLRxDKnMNu3YaLpOnG0qU0eWP-0-a5d0c7188d32e259fca8fdd56ab5f6b3)
图2-1 稀释矩阵图
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-45.jpg?sign=1739187816-DS4wlxEN4umqDKKCng08FK1DXOVnJqd3-0-f3fcc0910600a1107d6bea3300ca7574)
图2-2 稀释矩阵标示图