matlab矩阵的表示和简单操作.doc

上传人:99****p 文档编号:1449421 上传时间:2019-02-27 格式:DOC 页数:9 大小:24.36KB
下载 相关 举报
matlab矩阵的表示和简单操作.doc_第1页
第1页 / 共9页
matlab矩阵的表示和简单操作.doc_第2页
第2页 / 共9页
matlab矩阵的表示和简单操作.doc_第3页
第3页 / 共9页
matlab矩阵的表示和简单操作.doc_第4页
第4页 / 共9页
matlab矩阵的表示和简单操作.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、matlab 矩阵的表示和简单操作一、矩阵的表示在 MATLAB 中创建矩阵有以下规则:a、矩阵元素必须在” ”内;b、矩阵的同行元素之间用空格(或”,”)隔开;c、矩阵的行与行之间用”;”(或回车符)隔开;d、矩阵的元素可以是数值、变量、表达式或函数;e、矩阵的尺寸不必预先定义。二,矩阵的创建:1、直接输入法最简单的建立矩阵的方法是从键盘直接输入矩阵的元素,输入的方法按照上面的规则。建立向量的时候可以利用冒号表达式,冒号表达式可以产生一个行向量,一般格式是: e1:e2:e3,其中 e1 为初始值, e2 为步长, e3 为终止值。还可以用 linspace 函数产生行向量,其调用格式为:l

2、inspace(a,b,n) ,其中 a 和 b 是生成向量的第一个和最后一个元素,n 是元素总数。2、利用 MATLAB 函数创建矩阵基本矩阵函数如下:(1) ones()函数:产生全为 1 的矩阵,ones(n) :产生 n*n 维的全 1 矩阵,ones(m,n) :产生 m*n 维的全 1 矩阵;(2) zeros()函数:产生全为 0 的矩阵;(3) rand()函数:产生在(0 ,1)区间均匀分布的随机阵;(4) eye()函数:产生单位阵;(5) randn()函数:产生均值为 0,方差为 1 的标准正态分布随机矩阵。3、利用文件建立矩阵当矩阵尺寸较大或为经常使用的数据矩阵,则可

3、以将此矩阵保存为文件,在需要时直接将文件利用 load 命令调入工作环境中使用即可。同时可以利用命令 reshape 对调入的矩阵进行重排。reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵 A 重新排成 m*n 的二维矩阵。二、矩阵的简单操作1获取矩阵元素可以通过下标(行列索引)引用矩阵的元素,如 Matrix(m,n)。也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素的序号就是相应元素在内存中的排列顺序。在 MATLAB 中,矩阵元素按列存储。序号(Index)与下标(Subscript )是一一对应的,以 m*n 矩阵 A 为例,矩阵元素 A(i,j)的序号为(j-1)

4、*m+i。其相互转换关系也可利用 sub2ind 和 ind2sub 函数求得。2矩阵拆分利用冒号表达式获得子矩阵:(1) A(:,j)表示取 A 矩阵的第 j 列全部元素;A(i,:)表示 A 矩阵第 i 行的全部元素;A(i,j)表示取 A 矩阵第 i 行、第 j 列的元素。(2) A(i:i+m,:)表示取 A 矩阵第 ii+m 行的全部元素;A(:,k:k+m)表示取 A 矩阵第kk+m 列的全部元素,A(i:i+m,k:k+m)表示取 A 矩阵第 ii+m 行内,并在第 kk+m 列中的所有元素。此外,还可利用一般向量和 end 运算符来表示矩阵下标,从而获得子矩阵。end 表示某一

5、维的末尾元素下标。利用空矩阵删除矩阵的元素:在 MATLAB 中,定义为空矩阵。给变量 X 赋空矩阵的语句为 X=。注意,X=与 clear X 不同, clear 是将 X 从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为 0。3、特殊矩阵(1) 魔方矩阵魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于 n 阶魔方阵,其元素由 1,2,3,n2 共 n2 个整数组成。 MATLAB 提供了求魔方矩阵的函数magic(n),其功能是生成一个 n 阶魔方阵。(2) 范得蒙矩阵范得蒙 (Vandermonde)矩阵最后一列全为 1,倒数第二列为一个指定的向量,其他各

6、列是其后列与倒数第二列的点乘积。可以用一个指定向量生成一个范得蒙矩阵。在MATLAB 中,函数 vander(V)生成以向量 V 为基础向量的范得蒙矩阵。(3) 希尔伯特矩阵在 MATLAB 中,生成希尔伯特矩阵的函数是 hilb(n)。使用一般方法求逆会因为原始数据的微小扰动而产生不可靠的计算结果。MATLAB 中,有一个专门求希尔伯特矩阵的逆的函数 invhilb(n),其功能是求 n 阶的希尔伯特矩阵的逆矩阵。(4) 托普利兹矩阵托普利兹 (Toeplitz)矩阵除第一行第一列外,其他每个元素都与左上角的元素相同。生成托普利兹矩阵的函数是 toeplitz(x,y),它生成一个以 x 为

7、第一列,y 为第一行的托普利兹矩阵。这里 x, y 均为向量,两者不必等长。 toeplitz(x)用向量 x 生成一个对称的托普利兹矩阵。(5) 伴随矩阵 MATLAB 生成伴随矩阵的函数是 compan(p),其中 p 是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。(6) 帕斯卡矩阵我们知道,二次项(x+y)n 展开后的系数随 n 的增大组成一个三角形表,称为杨辉三角形。由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵。函数 pascal(n)生成一个n 阶帕斯卡矩阵。三、矩阵的运算1、算术运算MATLAB 的基本算术运算有: (加)、(减)、*(乘)、/(右除 )、(左除

8、)、(乘方) 、(转置)。运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。(1) 矩阵加减运算假定有两个矩阵 A 和 B,则可以由 A+B 和 A-B 实现矩阵的加减运算。运算规则是:若 A 和 B 矩阵的维数相同,则可以执行矩阵的加减运算,A 和 B 矩阵的相应元素相加减。如果 A 与 B 的维数不相同,则 MATLAB 将给出错误信息,提示用户两个矩阵的维数不匹配。(2) 矩阵乘法 假定有两个矩阵 A 和 B,若 A 为 m*n 矩阵,B 为 n*p 矩阵,则 C=A*B 为m*p 矩阵。(3) 矩阵除法在 MATLAB 中,有两种矩阵除法运算:和/,分别表示左除和右除。如果 A

9、 矩阵是非奇异方阵,则 AB 和 B/A 运算可以实现。AB 等效于 A 的逆左乘 B 矩阵,也就是inv(A)*B,而 B/A 等效于 A 矩阵的逆右乘 B 矩阵,也就是 B*inv(A)。对于含有标量的运算,两种除法运算的结果相同。对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系,一般 ABB/A。(4) 矩阵的乘方 一个矩阵的乘方运算可以表示成 Ax,要求 A 为方阵,x 为标量。(5) 矩阵的转置 对实数矩阵进行行列互换,对复数矩阵,共轭转置,特殊的,操作符.共轭不转置(见点运算);(6) 点运算在 MATLAB 中,有一种特殊的运算,因为其运算符是在有关算术运算符前面

10、加点,所以叫点运算。点运算符有.*、./、.和.。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。2、关系运算MATLAB 提供了 6 种关系运算符:( 大于) 、=(大于或等于) 、=(等于)、=(不等于)。关系运算符的运算法则为:(1) 当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为 1,否则为 0;(2) 当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由 0 或 1 组成;(3) 当参与比较的一个是标量,而另一个是矩

11、阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由 0 或 1 组成。3、逻辑运算MATLAB 提供了 3 种逻辑运算符:&(与)、|( 或)和(非)。 逻辑运算的运算法则为:(1) 在逻辑运算中,确认非零元素为真,用 1 表示,零元素为假,用 0 表示;(2) 设参与逻辑运算的是两个标量 a 和 b,那么,a&b a,b 全为非零时,运算结果为 1,否则为 0。 a|b a,b 中只要有一个非零,运算结果为 1。a 当 a 是零时,运算结果为 1;当 a 非零时,运算结果为 0。(3) 若参与逻辑运算的

12、是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由 1 或 0 组成;(4) 若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。最终运算结果是一个与矩阵同维的矩阵,其元素由 1 或 0 组成;(5) 逻辑非是单目运算符,也服从矩阵运算规则;(6) 在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。四、矩阵分析1、对角阵(1) 对角阵只有对角线上有非 0 元素的矩阵称为对角矩阵,对角线上的元素相等的对角矩阵称为数量矩阵,对角线上的元素都为 1 的对角矩阵称为单位矩阵。(

13、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、三角阵三角阵又进一步分为上三角阵和下三角阵,所谓上三角阵,即矩阵的对角线以下的元素

14、全为 0的一种矩阵,而下三角阵则是对角线以上的元素全为 0 的一种矩阵。(1) 上三角矩阵 求矩阵 A 的上三角阵的 MATLAB 函数是 triu(A)。 triu(A)函数也有另一种形式 triu(A,k),其功能是求矩阵 A 的第 k 条对角线以上的元素。(2) 下三角矩阵在 MATLAB 中,提取矩阵 A 的下三角矩阵的函数是 tril(A)和 tril(A,k),其用法与提取上三角矩阵的函数 triu(A)和 triu(A,k)完全相同。3、矩阵的转置与旋转(1) 矩阵的转置 转置运算符是单撇号()。(2) 矩阵的旋转 利用函数 rot90(A,k)将矩阵 A 旋转 90o 的 k

15、倍,当 k 为 1 时可省略。4、矩阵的翻转对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,依次类推。矩阵 A 实施左右翻转的函数是 fliplr(A),对矩阵 A 实施上下翻转的函数是 flipud(A)。5、矩阵的逆与伪逆(1) 矩阵的逆 对于一个方阵 A,如果存在一个与其同阶的方阵 B,使得:AB=BA=I (I 为单位矩阵) 则称 B 为 A 的逆矩阵,当然,A 也是 B 的逆矩阵。求方阵 A 的逆矩阵可调用函数inv(A)。(2) 矩阵的伪逆如果矩阵 A 不是一个方阵,或者 A 是一个非满秩的方阵时,矩阵 A 没有逆矩阵,但可以找到一个与 A 的转置矩阵

16、A同型的矩阵 B,使得:ABA=A,BAB=B 此时称矩阵B 为矩阵 A 的伪逆,也称为广义逆矩阵。在 MATLAB 中,求一个矩阵伪逆的函数是 pinv(A)。6、方阵的行列式把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为矩阵所对应的行列式的值。在 MATLAB 中,求方阵 A 所对应的行列式的值的函数是 det(A)。7、矩阵的秩与迹(1) 矩阵的秩 矩阵线性无关的行数与列数称为矩阵的秩。在 MATLAB 中,求矩阵秩的函数是rank(A)。(2) 矩阵的迹矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和。在 MATLAB中,求矩阵的迹的函数是 trace(A)。

17、8、向量和矩阵的范数矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度。范数有多种方法定义,其定义不同,范数值也就不同。(1) 向量的 3 种常用范数及其计算函数 在 MATLAB 中,求向量范数的函数为:a、norm(V)或 norm(V,2):计算向量 V 的 2-范数;b、norm(V,1):计算向量 V 的 1-范数;c、norm(V,inf):计算向量 V 的-范数。(2) 矩阵的范数及其计算函数 MATLAB 提供了求 3 种矩阵范数的函数,其函数调用格式与求向量的范数的函数完全相同。(3) 矩阵的条件数 在 MATLAB 中,计算矩阵 A 的 3 种条件数的函数是:a、cond

18、(A,1) 计算 A 的 1-范数下的条件数;b、cond(A)或 cond(A,2) 计算 A 的 2-范数数下的条件数;c、cond(A,inf) 计算 A 的 -范数下的条件数。9、 矩阵的特征值与特征向量在 MATLAB 中,计算矩阵 A 的特征值和特征向量的函数是 eig(A),常用的调用格式有 3 种:(1) E=eig(A):求矩阵 A 的全部特征值,构成向量 E。(2) V,D=eig(A):求矩阵 A 的全部特征值,构成对角阵 D,并求 A 的特征向量构成 V 的列向量。(3) V,D=eig(A,nobalance):与第 2 种格式类似,但第 2 种格式中先对 A 作相似

19、变换后求矩阵 A 的特征值和特征向量,而格式 3 直接求矩阵 A 的特征值和特征向量。五、字符串在 MATLAB 中,字符串是用单撇号括起来的字符序列。 MATLAB 将字符串当作一个行向量,每个元素对应一个字符,其标识方法和数值向量相同。也可以建立多行字符串矩阵。字符串是以 ASCII 码形式存储的。abs 和 double 函数都可以用来获取字符串矩阵所对应的 ASCII 码数值矩阵。相反,char 函数可以把 ASCII 码矩阵转换为字符串矩阵。与字符串有关的另一个重要函数是 eval,其调用格式为: eval_r(t) 其中 t 为字符串。它的作用是把字符串的内容作为对应的 MATLA

20、B 语句来执行。六、其他查看矩阵非零元素的分布 spy(A);第二部分 矩阵的应用一、稀疏矩阵对于一个 n 阶矩阵,通常需要 n2 的存储空间,当 n 很大时,进行矩阵运算时会占用大量的内存空间和运算时间。在许多实际问题中遇到的大规模矩阵中通常含有大量 0 元素,这样的矩阵称为稀疏矩阵。Matlab 支持稀疏矩阵,只存储矩阵的非零元素。由于不存储那些”0 元素,也不对它们进行操作,从而节省内存空间和计算时间,其计算的复杂性和代价仅仅取决于稀疏矩阵的非零元素的个数,这在矩阵的存储空间和计算时间上都有很大的优点。矩阵的密度定义为矩阵中非零元素的个数除以矩阵中总的元素个数。对于低密度的矩阵,采用稀疏

21、方式存储是一种很好的选择。1、稀疏矩阵的创建(1) 将完全存储方式转化为稀疏存储方式函数 A=sparse(S)将矩阵 S 转化为稀疏存储方式的矩阵 A。当矩阵 S 是稀疏存储方式时,则函数调用相当于 A=S。 sparse 函数还有其他一些调用格式: sparse(m,n):生成一个 m*n 的所有元素都是 0 的稀疏矩阵。 sparse(u,v,S)-:u,v,S 是 3 个等长的向量。S 是要建立的稀疏矩阵的非 0 元素,u(i)、v(i) 分别是 S(i)的行和列下标,该函数建立一个 max(u)行、max(v)列并以 S 为稀疏元素的稀疏矩阵。此外,还有一些和稀疏矩阵操作有关的函数。

22、full(A):返回和稀疏存储矩阵 A 对应的完全存储方式矩阵。(2) 直接创建稀疏矩阵 S=sparse(i,j,s,m,n),其中 i 和 j 分别是矩阵非零元素的行和列指标向量,s 是非零元素值向量, m,n 分别是矩阵的行数和列数。(3) 从文件中创建稀疏矩阵利用 load 和 spconvert 函数可以从包含一系列下标和非零元素的文本文件中输入稀疏矩阵。例:设文本文件 T.txt 中有三列内容,第一列是一些行下标,第二列是列下标,第三列是非零元素值。load T.txt S=spconvert(T)。(4) 稀疏带状矩阵的创建 S=spdiags(B,d,m,n) 其中 m 和 n

23、 分别是矩阵的行数和列数;d是长度为 p 的整数向量,它指定矩阵 S 的对角线位置;B 是全元素矩阵,用来给定 S 对角线位置上的元素,行数为 min(m,n),列数为 p 。(5) 其它稀疏矩阵创建函数S=speye(m,n)S=speye(size(A) % has the same size as AS=buchy % 一个内置的稀疏矩阵(邻接矩阵)等等2、稀疏矩阵的运算稀疏存储矩阵只是矩阵的存储方式不同,它的运算规则与普通矩阵是一样的,可以直接参与运算。所以,Matlab 中对满矩阵的运算和函数同样可用在稀疏矩阵中。结果是稀疏矩阵还是满矩阵,取决于运算符或者函数。当参与运算的对象不全是稀疏存储矩阵时,所得结果一般是完全存储形式。3、其他(1) 非零元素信息nnz(S) % 返回非零元素的个数nonzeros(S) % 返回列向量,包含所有的非零元素nzmax(S) % 返回分配给稀疏矩阵中非零项的总的存储空间(2) 查看稀疏矩阵的形状 spy(S)(3) find 函数与稀疏矩阵i,j,s=find(S)i,j=find(S)返回 S 中所有非零元素的下标和数值,S 可以是稀疏矩阵或满矩阵。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。