创建矩阵有以下规则:
A。 矩阵元素必须在“[ ]”内;
b. 矩阵的行元素之间用空格(或“,”)分隔;
C。 矩阵的行由“;”分隔 (或回车);
d. 矩阵的元素可以是值、变量、表达式或函数;
e. 矩阵的大小不需要提前定义。
2. 矩阵的创建:
1.直接输入法
创建矩阵最简单的方法是直接从键盘输入矩阵的元素。 输入法遵循上述规则。 创建向量时可以使用冒号表达式。 冒号表达式可以生成行向量。 一般格式为:e1:e2:e3,其中e1为初始值,e2为步长,e3为终止值。 还可以使用函数生成行向量,其调用格式为:(a,b,n),其中a和b是生成向量的第一个和最后一个元素,n是元素总数。
2. 使用函数创建矩阵
基本矩阵函数如下:
(1)ones()函数:生成全1的矩阵,ones(n):生成n*n维全1矩阵,ones(m,n):生成m*n维全1矩阵;
(2)zeros()函数:生成全零的矩阵;
(3) rand()函数:生成在(0, 1)区间均匀分布的随机数组;
(4)eye()函数:生成单位矩阵;
(5) randn()函数:生成均值为0、方差为1的标准正态分布随机矩阵。
3. 使用文件创建矩阵
当矩阵规模较大或者是经常使用的数据矩阵时,可以将矩阵保存为文件,需要时可以使用load命令直接将文件调入工作环境中使用。 同时,可以使用命令重新排列传输的矩阵。 (A,m,n),在矩阵总元素不变的前提下,将矩阵A重新排列成m*n的二维矩阵。
2. 矩阵的简单运算
1.获取矩阵元素
矩阵的元素可以通过下标(列和列索引)引用,例如 (m,n)。
矩阵元素也可以通过其序列号来引用。
矩阵元素的序号是对应元素在内存中的排列顺序。
在 中,矩阵元素按列存储。
序号(Index)与下标( )一一对应。 以m*n矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。
利用sum函数也可以得到它们的相互换算关系。
2.矩阵分裂
使用冒号表达式获取子矩阵:
(1) A(:,j)表示取A矩阵第j列的所有元素; A(i,:)表示取A矩阵第i行的所有元素; A(i,j)表示取第i行,j列的元素。
(2) A(i:i+m,:)表示取A矩阵第i~i+m行的所有元素; A(:,k:k+m)表示取A矩阵的k~k+m列。 所有元素,A(i:i+m,k:k+m)表示取A矩阵第i~i+m行、第k~k+m列的所有元素。 此外,还可以使用通用向量和结束运算符来表示矩阵下标以获得子矩阵。 end表示某个维度的结束元素下标。
使用空矩阵删除矩阵的元素:
中,将[]定义为空矩阵。 将空矩阵赋给变量 X 的语句是 X=[]。 请注意,X=[] 与clear 不同
3、特殊矩阵
(1)魔方矩阵魔方矩阵有一个有趣的性质。 每行、每列和两条对角线上的元素之和相等。 对于一个n阶幻方矩阵,它的元素总共由n2个整数1,2,3,...,n2组成。 提供了求魔方矩阵的函数magic(n),其作用是生成n阶魔方矩阵。
(2) 矩阵 ()矩阵的最后一列全为1,倒数第二列是指定向量,其他列是后续列与倒数第二列的点积。 范德蒙矩阵可以从指定的向量生成。 在 中,函数 (V) 生成以向量 V 作为基向量的 矩阵。
(3)希尔伯特矩阵中,生成希尔伯特矩阵的函数是hilb(n)。 由于原始数据的微小扰动,使用一般的反演方法可能会产生不可靠的计算结果。 在 中,有一个函数 (n) 专门求希尔伯特矩阵的逆矩阵。 它的作用是求n阶希尔伯特矩阵的逆矩阵。
(4) 矩阵 矩阵除第一行第一列外,其余元素与左上角元素相同。 生成矩阵的函数是(x,y),它生成一个以x为第一列,y为第一行的矩阵。 这里 x 和 y 都是向量,并且它们的长度不必相等。 (x) 使用向量 x 生成对称 矩阵。
(5) 从伴随矩阵生成伴随矩阵的函数为(p),其中p是多项式系数向量,高阶幂系数排在前面,低阶幂系数排在最后。
(6) 帕斯卡矩阵 我们知道,二次项(x+y)n的展开式系数随着n的增加形成一个三角表,称为杨辉三角形。 由杨辉三角表组成的矩阵称为()矩阵。 函数 (n) 生成 n 阶帕斯卡矩阵。
3. 矩阵运算
1. 算术运算
基本算术运算有:+(加法)、-(减法)、*(乘法)、/(右除)、\(左除)、^(幂)、'(转置)。 运算是在矩阵意义上进行的,对单个数据的算术运算只是一种特殊情况。
(1) 矩阵加法和减法运算 假设有两个矩阵A和B,那么可以通过A+B和AB来实现矩阵加法和减法运算。 运算规则为:如果A、B矩阵的维数相同,则可以进行矩阵加减运算,将A、B矩阵对应的元素进行加减。 如果A和B的维数不同,就会给出错误信息,提示用户两个矩阵的维数不匹配。
(2)矩阵乘法假设有两个矩阵A和B。如果A是m*n矩阵,B是n*p矩阵,则C=A*B是m*p矩阵。
(3) 矩阵除法 中,有两种矩阵除法运算:\和/,分别表示左除和右除。 如果A矩阵是非奇异方阵,则可以实现A\B和B/A运算。 A\B相当于A的B矩阵的左逆乘,即inv(A)*B,B/A相当于A矩阵的B矩阵的右乘逆,即B*inv(A)。 对于涉及标量的运算,两次除法运算的结果是相同的。 对于矩阵来说,左除和右除代表了除数矩阵和被除数矩阵的两种不同关系。 一般来说,A\B≠B/A。
(4) 矩阵求幂 矩阵的求幂运算可以表示为A^x,要求A为方阵,x为标量。
(5) 矩阵的转置交换实数矩阵的行和列。 对于复矩阵,共轭转置是一个特殊的算子。 '共轭不转置(见点运算);
(6) 点运算 在 中,有一种特殊的运算。 因为它的运算符是在相关算术运算符前面加一个点,所以称为点运算。 点运算符为 .*、./、.\ 和 .^。 对两个矩阵进行点运算,就是对它们对应的元素进行相关运算,这要求两个矩阵的维数参数相同。
2. 关系运算
提供了六个关系运算符:=(大于或等于)、==(等于)、~=(不等于)。 关系运算符的运算规则为:
(1)当两个比较量为标量时,直接比较两个数的大小。 如果关系成立,则关系式的结果为1,否则为0;
(2) 当比较涉及的量为两个维度相同的矩阵时,根据标量关系运算规则对两个矩阵中相同位置的元素进行一一比较,元素比较结果为给予。 关系运算的最终结果是一个与原矩阵同维的矩阵,其元素由0或1组成;
(3)当参与比较的对象之一是标量,另一个是矩阵时,按照标量关系运算规则将标量和矩阵的每个元素一一进行比较,元素比较结果为给予。 关系运算的最终结果是一个与原矩阵维度相同的矩阵,其元素由0或1组成。
3. 逻辑运算
提供了三个逻辑运算符:&(与)、| (或)和〜(不)。 逻辑运算的算法为:
(1)逻辑运算中,如果确认非零元素为真,则用1表示,如果零元素为假,则用0表示;
(2) 假设逻辑运算涉及两个标量a和b。 那么,当a&b a和b均非0时,运算结果为1,否则为0。只要a|ba和b其中之一非0,运算结果为1。 ~a 当a为0,运算结果为1; 当a非零时,运算结果为0。
(3) 如果涉及两个相同维度的矩阵进行逻辑运算,则按照标量规则对矩阵中相同位置的元素进行一一运算。 最终运算结果是一个与原矩阵同维的矩阵,其元素由1或0组成;
(4) 如果逻辑运算其中一个是标量,另一个是矩阵,则标量与矩阵中各元素之间将按照标量规则一一进行运算。 最终运算结果是一个与矩阵同维的矩阵,其元素由1或0组成;
(5)逻辑非是一元运算符,也遵守矩阵运算规则;
(6)算术运算、关系运算和逻辑运算中,算术运算的优先级最高,逻辑运算的优先级最低。
4. 矩阵分析
1. 对角阵列
(1) 对角矩阵 对角线上只有非零元素的矩阵称为对角矩阵。 对角线上元素相等的对角矩阵称为数量矩阵。 对角线上所有元素都为 1 的对角矩阵。角矩阵称为单位矩阵。
(1)提取矩阵的对角线元素。 设 A 为 m*n 矩阵。 diag(A) 函数用于提取矩阵 A 的主对角线元素,生成具有 min(m,n) 个元素的列向量。 diag(A)函数还有另一种形式diag(A,k),其作用是提取第k条对角线的元素。
(2)构造对角矩阵。 令 V 为具有 m 个元素的向量。 diag(V) 会产生一个 m*m 对角矩阵,其主对角线元素是向量 V 的元素。 diag(V) 函数还有另一种形式 diag(V,k),其功能是生成一个 n* n(n=m+k)个对角矩阵,第m个对角线的元素是向量V元素。
2、三角阵
三角矩阵又分为上三角矩阵和下三角矩阵。 所谓上三角矩阵,就是矩阵对角线以下元素全为0的矩阵,而下三角矩阵,就是对角线以上元素全为0的矩阵。 0。
(1) 上三角矩阵 求矩阵A的上三角矩阵的函数是triu(A)。 triu(A)函数还有另一种形式triu(A,k),其功能是查找矩阵A的第k条对角线上方的元素。
(2) 下三角矩阵在 中。 提取矩阵 A 的下三角矩阵的函数是 tril(A) 和 tril(A,k)。 它们的用法与函数 triu(A) 和 triu(A,k) 相同,用于提取上三角矩阵。 ) 完全相同。
3.矩阵的转置和旋转
(1)矩阵的转置运算符是单个撇号(')。
(2)矩阵的旋转使用函数rot90(A,k)将矩阵A旋转k乘90o。 当k为1时,可省略。
4. 矩阵翻转
左右翻转矩阵就是交换原矩阵的第一列和最后一列,交换第二列和倒数第二列,……,以此类推。 将矩阵A左右翻转的函数为(A),将矩阵A上下翻转的函数为(A)。
5. 矩阵的逆和伪逆
(1)矩阵的逆 对于方阵A,若存在同阶方阵B,使得:AB=BA=I(I为单位矩阵),则B称为A的逆矩阵当然,A也是B的逆矩阵。 要求方阵 A 的逆矩阵,可以调用函数 inv(A)。
(2) 矩阵的伪逆 如果矩阵 A 不是方阵,或者 A 是非满秩方阵,则矩阵 A 没有逆矩阵,而是有一个与转置同类型的矩阵 B可以求出A的矩阵A', 使得: ABA=A, BAB=B 此时矩阵B称为矩阵A的伪逆矩阵,也称为广义逆矩阵。 在 中,求矩阵伪逆的函数是 pinv(A)。
6. 方阵的行列式
将方阵视为行列式,并根据行列式的规则对其求值。 这个值称为矩阵对应的行列式的值。 在 中,求方阵 A 对应的行列式值的函数是 det(A)。
7. 矩阵的秩和迹
(1)矩阵的秩 与矩阵线性无关的行数和列数称为矩阵的秩。 在 中,求矩阵秩的函数是rank(A)。
(2)矩阵的迹矩阵的迹等于矩阵对角线元素之和,也等于矩阵特征值之和。 在 中,求矩阵迹的函数是trace(A)。
8.向量和矩阵的范数
矩阵或向量的范数在某种意义上是矩阵或向量长度的度量。 定义规范的方法有很多种。 不同的定义有不同的标准值。
(1) 常用的三种向量范数及其计算函数在 中。 求向量范数的函数是:
A。 norm(V) 或norm(V,2):计算向量V的2-范数;
b. norm(V,1):计算向量V的1-范数;
C。 norm(V,inf):计算向量V的∞-范数。
(2)矩阵范数及其计算函数提供求三种矩阵范数的函数。 函数调用格式与求向量范数的函数完全相同。
(3) 矩阵的条件数为in,计算矩阵A的三个条件数的函数为:
A。 cond(A,1) 计算 A 的 1-范数下的条件数;
b. cond(A) 或 cond(A,2) 计算 A 的 2-范数下的条件数;
C。 cond(A,inf) 计算 A 的 ∞ 范数下的条件数。
9.矩阵的特征值和特征向量
中,计算矩阵A的特征值和特征向量的函数是eig(A)。 常用的调用格式有以下三种:
(1) E=eig(A):求矩阵A的所有特征值,形成向量E。
(2)[V,D]=eig(A):求矩阵A的所有特征值,构成对角矩阵D,求A的特征向量,构成V的列向量。
(3) [V,D]=eig(A,''):与第二种格式类似,但第二种格式中,首先对A进行类似的变换,然后得到矩阵A的特征值和特征向量找到了,而格式3直接求矩阵A的特征值和特征向量。
5. 字符串
在 中,字符串是用单个撇号括起来的字符序列。 将字符串视为行向量,每个元素对应一个字符,其识别方法与数值向量相同。 还可以创建多行字符串矩阵。 字符串以 ASCII 代码存储。 使用abs和函数都可以获取字符串矩阵对应的ASCII码数值矩阵。 相反,char函数可以将ASCII码矩阵转换为字符串矩阵。 另一个与字符串相关的重要函数是eval,其调用格式为: (t) 其中t是字符串。 其作用是将字符串的内容作为对应的语句执行。
6.其他
查看矩阵spy(A)非零元素的分布;
第二部分 矩阵的应用
1.稀疏矩阵
对于n阶矩阵,通常需要n2的存储空间。 当n很大时,矩阵运算会占用大量的内存空间和运算时间。 许多实际问题中遇到的大规模矩阵通常包含大量0元素,这样的矩阵称为稀疏矩阵。 支持稀疏矩阵,仅存储矩阵的非零元素。 由于不存储或操作那些“0”元素,因此节省了存储空间和计算时间。 计算的复杂度和成本仅取决于稀疏矩阵的非零元素数量,而稀疏矩阵的非零元素数量又取决于矩阵的存储空间和计算时间。 在计算时间上有很大的优势。
矩阵的密度定义为矩阵中非零元素的数量除以矩阵中元素的总数。 对于低密度矩阵,稀疏存储是一个不错的选择。
1. 稀疏矩阵的创建
(1) 将完全存储模式转换为稀疏存储模式 函数A=(S)将矩阵S转换为稀疏存储模式下的矩阵A。 当矩阵S稀疏存储时,函数调用等价于A=S。 该函数还有其他调用格式: (m,n):生成一个 m*n 的稀疏矩阵,所有元素均为 0。 (u,v,S)--:u,v,S 是 3 个等长向量。 S为要建立的稀疏矩阵的非零元素。 u(i)和v(i)分别是S(i)的行下标和列下标。 此函数创建 max(u) 行和 max(v) 列。 以 S 作为稀疏元素的稀疏矩阵。 此外,还有一些与稀疏矩阵运算相关的函数。 full(A):返回稀疏存储矩阵A对应的全存储矩阵。
(2) 直接创建稀疏矩阵S=(i,j,s,m,n),其中i和j分别为矩阵非零元素的行和列索引向量,s为非零元素value向量,m,n分别是矩阵的行数和列数。
(3) 使用 load 和函数从包含一系列下标和非零元素的文本文件输入稀疏矩阵,从文件创建稀疏矩阵。 示例:假设文本文件T.txt 有三列内容。 第一列是一些行下标,第二列是列下标,第三列是非零元素值。 加载 T.txt S=(T)。
(4) 创建稀疏带状矩阵S=(B,d,m,n),其中m和n分别是矩阵的行数和列数; d是长度为p的整数向量,指定矩阵S的对角线位置; B 是一个全元素矩阵,用于给出 S 对角位置的元素。行数为 min(m,n),列数为 p。
(5)其他稀疏矩阵创建函数
S=斯派(m,n)
S=speye(size(A)) % 与A大小相同
S=buchy % 内置稀疏矩阵(邻接矩阵)
ETC。
2. 稀疏矩阵运算
稀疏存储矩阵只是矩阵的一种不同的存储方式。 其运算规则与普通矩阵相同,可以直接参与运算。 因此,满矩阵的相同运算和函数可以用于稀疏矩阵。 结果是稀疏矩阵还是满矩阵取决于运算符或函数。 当运算涉及的对象不全是稀疏存储矩阵时,结果一般是全存储形式。
3.其他
(1)非零元素信息
nnz(S) % 返回非零元素的数量
(S) % 返回包含所有非零元素的列向量
nzmax(S) % 返回分配给稀疏矩阵中非零条目的总存储空间
(2) 检查稀疏矩阵spy(S)的形状
(3)求函数和稀疏矩阵
[i,j,s]=查找(S)
[i,j]=查找(S)
返回S中所有非零元素的下标和值,可以是稀疏矩阵,也可以是满矩阵。