![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=1739411276-tg29kh8ZyPALwMGRTxM7L11knCACxiSK-0-0a5c5a85d4659e342be4a409bcffab39)
2.特殊矩阵的生成
(1)全零阵
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-25.jpg?sign=1739411276-qHv2E0VQ8zYb5Z5osRY28MGJBsNwr5Wv-0-7b0783dbd5109bd1e312ccbad25b0c4f)
(2)全1阵
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-26.jpg?sign=1739411276-mxcDfzBdqZJpkj699Td0wEYaB9K7XzUi-0-da637035570964f020dfb8a5813cd8b3)
(3)单位阵
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-27.jpg?sign=1739411276-fJypvuragr4GoTbEuDHPsZjZZqpcZWsi-0-220e2922c65c0f88215baccf6c4eff65)
(4)产生以输入元素为对角线元素的矩阵
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-28.jpg?sign=1739411276-7X9yMOcOPZUxzMsM76tgLkMU7kWg3VHM-0-84c2156e85b198be57e4f6fc4d957559)
说明:将向量v写入矩阵X的主对角线上,而矩阵其他元素为0。k表示上移或下移行数,正数表上移,负数表下移,0(默认值)表在对角线上。
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-29.jpg?sign=1739411276-fLmaiGZ6wbFOeLpgVnVFlUsMVh0cm3FF-0-5a9f6ad1a8e9703f597c7b59cd47b32f)
(5)Magic(魔方)矩阵
格式:M=magic(n) %产生n阶魔方矩阵
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-30.jpg?sign=1739411276-GOPtyxrbpx6DBGDTD7W2VUU1XZid0Vxe-0-46965347d18d9418e7fd5b5a845e9287)
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=1739411276-J9bT33NKpSWfcWoa1vKEAHY3OB1KXF1l-0-35a4d343dac71c50b470973f2a530c15)
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-32.jpg?sign=1739411276-KuQmWGIrFnOtFdZHKEArx3KCjyk9w6wG-0-4d7b5ca066d4bd9619442f5194da4025)
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=1739411276-UhrscKtH06haw2zArR4U3PesjVaqvJb0-0-6b6bfa1487b7c39c55ea03ca50dad7a8)
2.3.5 矩阵元素及重排
1.矩阵元素
在MATLAB中,也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素的序号就是相应元素在内存中的排列顺序。在MATLAB中,矩阵元素按列存储,先存储第一列,再存储第二列,依此类推。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-35.jpg?sign=1739411276-Jl2lRlQgnh1RwTlN3GGX4t1EZuLGLl56-0-626ea3d3ca1574154db7266d302c4bdc)
这与人们常用的取法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=1739411276-2ZjRg3Zh0RCJ42F1OQRqWMagrqPTRnrF-0-0c961cc6a522143ca93d04e3c1f4632e)
注: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=1739411276-cGQYlHmEEMBOxXxSVoxAGuso55hKXtTm-0-ba0b6992ab8d3b9c2db6d4f54cbd666d)
2.3.7 矩阵元素的查找
用find命令查找矩阵元素所在的位置及其对应的值。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-38.jpg?sign=1739411276-PbwuhNAnTotCjMUdw17u2yCjkD8Fqsbv-0-f090e45fdb9e4fabc2e0d4b586e42b99)
【例2-11】 己知,分别找出矩阵中大于0、等于20、大于等于30的位置。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-40.jpg?sign=1739411276-JBzQjxLkxzOOwrBMNsd4YnoKnC6EFQDL-0-b3e4cc321fc73b64ac4750363b2b2927)
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-41.jpg?sign=1739411276-c5eiDFzF1HRX5oyR9hJbd23YCrubJi5I-0-42bd805c659fbb007e510abfa3669904)
2.3.8 稀疏矩阵
当矩阵的大部分元素是零,只有少数元素为非零元素时,这种矩阵称为稀疏矩阵。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-42.jpg?sign=1739411276-pIuAbG40FkkxhAfLtovmJcftHHF9a9ha-0-0040510505342bf39eaff16635fe4c2d)
例如,对【例2-11】给定的矩阵A,试求出其稀疏矩阵B,再转换成全矩阵C,并绘出稀疏矩阵B的标示图。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-43.jpg?sign=1739411276-g61ajgGfDIXOj6rP4XI4Yjyowm9gFu6Z-0-cc620456d39e7ad3d8a2a1ddcbf3909a)
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-44.jpg?sign=1739411276-92imgNnNrjRXjF3w9NyCYGuWmAruzrY6-0-76a53daddabec81421b90e3ecbb149fe)
图2-1 稀释矩阵图
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter02-45.jpg?sign=1739411276-dN8pjDG8RnxAyAx9xyDoiokhZzQOxGjB-0-8ab67da660e45fed798ca52381e7e2ca)
图2-2 稀释矩阵标示图