《第2章矩阵精.ppt》由会员分享,可在线阅读,更多相关《第2章矩阵精.ppt(61页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第2章矩阵第1页,本讲稿共61页2.1 变量和数据操作变量和数据操作2.1.1 变量与赋值变量与赋值1变量命名变量命名在在MATLAB 6.5中,变量名是以字母开头,中,变量名是以字母开头,后接字母、数字或下划线的字符序列,最后接字母、数字或下划线的字符序列,最多多63个字符。在个字符。在MATLAB中,中,变量名区分变量名区分字母的大小写字母的大小写。一般来讲,一般来讲,MATLAB中,数据的存储与计算中,数据的存储与计算都是以双精度进行的。都是以双精度进行的。第2页,本讲稿共61页2赋值语句赋值语句(1)变量变量=表达式表达式 (2)表达式表达式其中表达式是用运算符将有关运算量连接其中表达
2、式是用运算符将有关运算量连接起来的式子,其结果是一个起来的式子,其结果是一个矩阵矩阵。所有的所有的MATLAB变量,包括标量、向量、矩阵、字符串、数组、结变量,包括标量、向量、矩阵、字符串、数组、结构和对象等都以数组形式保存。构和对象等都以数组形式保存。所有所有MATLAB数据都按列存放数据都按列存放第3页,本讲稿共61页例如:字符串数组例如:字符串数组a:a=house;china;hellosize(a)a数组的保存顺序为:数组的保存顺序为:hchoheuilsnleao第4页,本讲稿共61页例例2-1 计算表达式的值,并显示计算结果。计算表达式的值,并显示计算结果。在在MATLAB命令窗
3、口输入命令:命令窗口输入命令:x=1+2i;y=3-sqrt(17);z=(cos(abs(x+y)-sin(78*pi/180)/(x+abs(y)其中其中pi和和i都是都是MATLAB预先定义的变量,分预先定义的变量,分别代表代表圆周率别代表代表圆周率和虚数单位。和虚数单位。输出结果是:输出结果是:z=-0.3488+0.3286i第5页,本讲稿共61页 2.1.2 预定义变量预定义变量在在MATLAB工作空间中,还驻留几个由系统工作空间中,还驻留几个由系统本身定义的变量。例如,用本身定义的变量。例如,用pi表示圆周率表示圆周率的近似值,用的近似值,用i,j表示虚数单位。表示虚数单位。预定
4、义变量有特定的含义,在使用时,应预定义变量有特定的含义,在使用时,应尽量避免对这些变量重新赋值。尽量避免对这些变量重新赋值。第6页,本讲稿共61页2.1.3 内存变量的管理内存变量的管理1内存变量的删除与修改内存变量的删除与修改MATLAB工作空间窗口专门用于内存变量工作空间窗口专门用于内存变量的管理。在工作空间窗口中可以显示所有的管理。在工作空间窗口中可以显示所有内存变量的属性。当选中某些变量后,再内存变量的属性。当选中某些变量后,再单击单击Delete按钮按钮,就能删除这些变量。当选,就能删除这些变量。当选中某些变量后,再单击中某些变量后,再单击Open按钮按钮,将进入,将进入变量编辑器。
5、通过变量编辑器可以直接观变量编辑器。通过变量编辑器可以直接观察变量中的具体元素,也可修改变量中的察变量中的具体元素,也可修改变量中的具体元素。具体元素。第7页,本讲稿共61页clear命令命令用于删除用于删除MATLAB工作空间中的变工作空间中的变量。量。who和和whos这这两个命令两个命令用于显示在用于显示在MATLAB工作空间中已经驻留的变量名清工作空间中已经驻留的变量名清单。单。who命令只显示出驻留变量的名称,命令只显示出驻留变量的名称,whos在给出变量名的同时,还给出它们的在给出变量名的同时,还给出它们的大小、所占字节数及数据类型等信息。大小、所占字节数及数据类型等信息。练习:可
6、在命令行窗口中输入这三个命令,练习:可在命令行窗口中输入这三个命令,看看运行结果看看运行结果第8页,本讲稿共61页2.1.4 MATLAB常用数学函数常用数学函数MATLAB提供了许多数学函数,函数的自提供了许多数学函数,函数的自变量规定为矩阵变量,运算法则是将函数变量规定为矩阵变量,运算法则是将函数逐项作用于矩阵的元素上,因而运算的结逐项作用于矩阵的元素上,因而运算的结果是一个与自变量同维数的矩阵。果是一个与自变量同维数的矩阵。函数使用说明:函数使用说明:(1)三角函数以弧度为单位计算。三角函数以弧度为单位计算。(2)abs函数可以求实数的绝对值函数可以求实数的绝对值 (3)用于取整的函数有
7、用于取整的函数有fix、floor、ceil、round,要注意它们的区别。,要注意它们的区别。第9页,本讲稿共61页1)fix(x):截尾取整截尾取整fix(3.123.12)ans=33(2)floor(x):不超过不超过x的最大整数的最大整数.(高斯取整高斯取整)floor(3.123.12)ans=34(3)ceil(x):大于大于x的最小整数的最小整数ceil(3.123.12)ans=43(4)四舍五入取整四舍五入取整round(3.123.12)ans=33round(3.63.6)ans=44第10页,本讲稿共61页MATLAB中四个取整函数具体使用方法如下:中四个取整函数具体
8、使用方法如下:Matlab取整函数有取整函数有:fix,floor,ceil,round.fix朝零方向取整,如朝零方向取整,如fix(1.3)=1;fix(1.3)=1;floor朝负无穷方向取整,如朝负无穷方向取整,如floor(1.3)=2;floor(1.3)=1;ceil朝正无穷方向取整,如朝正无穷方向取整,如ceil(1.3)=1;ceil(1.3)=2;round四舍五入到最近的整数,如四舍五入到最近的整数,如round(1.3)=1;round(1.52)=2;round(1.3)=1;round(1.52)=2。第11页,本讲稿共61页2.2 MATLAB矩阵矩阵2.2.1
9、矩阵的建立矩阵的建立1直接输入法直接输入法 最简单的建立矩阵的方法是从键盘直接最简单的建立矩阵的方法是从键盘直接输入矩阵的元素。具体方法如下:将矩阵输入矩阵的元素。具体方法如下:将矩阵的元素用方括号括起来,按矩阵行的顺序的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分或逗号分隔,不同行的元素之间用分号分隔。隔。数组或矩阵是数组或矩阵是MATLAB最基础的内容之一,几乎所有的最基础的内容之一,几乎所有的数据都是用数组的形式进行存储的,所有数据都是用数组的形式进行存储的,所有MATLAB数据数据都是按列
10、存放的。都是按列存放的。数组只是一种编程语言数组只是一种编程语言的名词的名词,在,在Matlab可以可以建立任意尺寸和维数建立任意尺寸和维数。矩阵一般特指二维数组矩阵一般特指二维数组,向量是矩阵的特殊形,向量是矩阵的特殊形式(即只有一列,行向式(即只有一列,行向量,或者一行,列向量)量,或者一行,列向量)第12页,本讲稿共61页例例22(1):):x=1 3 4;2,6,5;3 2,4Y=2*xY=26841210648第13页,本讲稿共61页例例22(2):):x_r=1 2 3;4,5,6x_i=7,8,9;10 11,12c=x_r+i*x_ic=1.0000+7.0000i2.0000
11、+8.0000i3.0000+9.0000i4.0000+10.0000i5.0000+11.0000i6.0000+12.0000i创建了一个复数矩阵。也可用直接输入法创建该矩阵第14页,本讲稿共61页2利用冒号表达式建立一个向量利用冒号表达式建立一个向量 冒号表达式可以产生一个行向量,一般格式是:冒号表达式可以产生一个行向量,一般格式是:e1:e2:e3 其中其中e1为初始值,为初始值,e2为步长,为步长,e3为终止值。为终止值。3.在在MATLAB中,还可以用中,还可以用linspace函数产生行向量。其函数产生行向量。其调用格式为:调用格式为:linspace(a,b,n)其中其中a和
12、和b是生成向量的第一个和最后一个元素,是生成向量的第一个和最后一个元素,n是是元素总数。元素总数。显然,显然,linspace(a,b,n)与与a:(b-a)/(n-1):b等价。等价。例:例:t=linspace(0,3*pi,500);y=sin(t)%产生正弦波产生正弦波 plot(t,y)绘制图形绘制图形例如:例如:x=0:0.5:2例如:例如:x=linspace(0,2,5)第15页,本讲稿共61页4利用矩阵编辑器创建和修改大型矩阵利用矩阵编辑器创建和修改大型矩阵view-workspace-双击已创建的矩阵变量弹双击已创建的矩阵变量弹出矩阵编辑器,输入矩阵数据。出矩阵编辑器,输入
13、矩阵数据。利用矩阵编辑器,用户最好先预先定义一个利用矩阵编辑器,用户最好先预先定义一个矩阵变量。矩阵变量。第16页,本讲稿共61页2.2.2 矩阵元素的引用矩阵元素的引用 (1)通过通过下标下标引用矩阵的元素,例如引用矩阵的元素,例如 A(3,2)=200 (2)采用矩阵元素的序号来引用矩阵元素。矩阵元素的序号就采用矩阵元素的序号来引用矩阵元素。矩阵元素的序号就是相应元素在内存中的排列顺序。在是相应元素在内存中的排列顺序。在MATLAB中,矩阵元素中,矩阵元素按列存储,先第一列,再第二列,依次类推。例如按列存储,先第一列,再第二列,依次类推。例如 A=1,2,3;4,5,6;A(3)ans=2
14、显然,序号显然,序号(Index)与下标与下标(Subscript)是一一对应的,以是一一对应的,以mn矩矩阵阵A为例,矩阵元素为例,矩阵元素A(i,j)的序号为的序号为(j-1)*m+i。第17页,本讲稿共61页2子矩阵子矩阵 (1)利用冒号表达式获得子矩阵利用冒号表达式获得子矩阵 A(:,j)表示取表示取A矩阵的第矩阵的第j列全部元素;列全部元素;A(i,:)表示表示A矩阵第矩阵第i行的全部元素;行的全部元素;A(i,j)表示取表示取A矩阵第矩阵第i行、第行、第j列的一个元素。列的一个元素。A(i:i+m,:)表示取表示取A矩阵第矩阵第ii+m行的全部元素;行的全部元素;A(:,k:k+m
15、)表示取表示取A矩阵第矩阵第kk+m列的全部元素,列的全部元素,A(i:i+m,k:k+m)表示取表示取A矩阵第矩阵第ii+m行内,并在第行内,并在第kk+m列中的所有元素。列中的所有元素。此外,还可利用一般向量和此外,还可利用一般向量和end运算符来表示矩阵下标,从而运算符来表示矩阵下标,从而获得子矩阵。获得子矩阵。end表示某一维的末尾元素下标。表示某一维的末尾元素下标。第18页,本讲稿共61页例:例:a=134467;265668;324869;8645365;5456567a(3)%第3个元素a(3,2)第3行第2列的一个元素a(1:3)第1到第3行的三个元素a(3:end)第3到最后
16、行的所有元素a(:,2)第2列的所有元素a(2,:)第2行的所有元素a(1:3,2)第13行,第2列的所有元素a(:,:)%所有元素第19页,本讲稿共61页2.2.3 特殊矩阵特殊矩阵1通用的特殊矩阵通用的特殊矩阵常用的产生通用特殊矩阵的函数有:常用的产生通用特殊矩阵的函数有:zeros(n,m):产生全:产生全0矩阵矩阵(零矩阵零矩阵)。ones(n,m):产生全:产生全1矩阵矩阵(幺矩阵幺矩阵)。eye(n,m):产生单位矩阵。:产生单位矩阵。rand(n,m):产生:产生01间均匀分布的随机矩间均匀分布的随机矩阵。阵。randn(n,m):产生均值为:产生均值为0,方差为,方差为1的标准
17、的标准正态分布随机矩阵。正态分布随机矩阵。第20页,本讲稿共61页例例2-3 分别建立分别建立33、32和与矩阵和与矩阵A同样大小的零矩阵。同样大小的零矩阵。(1)建立一个建立一个33零矩阵。零矩阵。zeros(3)(2)建立一个建立一个32零矩阵。零矩阵。zeros(3,2)(3)设设A为为23矩阵,则可以用矩阵,则可以用zeros(size(A)建立一个与建立一个与矩阵矩阵A同样大小零矩阵。同样大小零矩阵。A=1 2 3;4 5 6;%产生一个产生一个23阶矩阵阶矩阵Azeros(size(A)%产生一个与矩阵产生一个与矩阵A同样大小的零矩同样大小的零矩阵阵第21页,本讲稿共61页例例2-
18、4 建立随机矩阵:建立随机矩阵:(1)在区间在区间20,50内均匀分布的内均匀分布的5阶随机矩阵。阶随机矩阵。命令如下:命令如下:x=20+(50-20)*rand(5)例例2-5建立建立43的单位矩阵的单位矩阵 a=eye(4,3)例例2-6建立建立43的全的全1矩阵矩阵 a=ones(4,3)第22页,本讲稿共61页2用于专门学科的特殊矩阵用于专门学科的特殊矩阵(1)魔方矩阵魔方矩阵魔方矩阵有一个有趣的性质,其每行、每魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由阶魔方阵,其元素由1,2,3,n2共共n2个整
19、数个整数组成。组成。MATLAB提供了求魔方矩阵的函数提供了求魔方矩阵的函数magic(n),其功能是生成一个,其功能是生成一个n阶魔方阵。阶魔方阵。M=magic(5)第23页,本讲稿共61页(2)伴随矩阵伴随矩阵MATLAB生成伴随矩阵的函数是生成伴随矩阵的函数是compan(p),a=1,0,-7,6;p=compan(a)第24页,本讲稿共61页 2.3 MATLAB运算运算 2.3.1算术运算算术运算1基本算术运算基本算术运算 MATLAB的基本算术运算有:的基本算术运算有:(加加)、(减减)、*(乘乘)、/(右除右除)、(左除左除)、(乘方乘方)。注意,运算是在矩阵意义下进行的,单
20、个注意,运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。数据的算术运算只是一种特例。第25页,本讲稿共61页 (1)矩阵加减运算矩阵加减运算 假定有两个矩阵假定有两个矩阵A和和B,则可以由,则可以由A+B和和A-B实现矩阵的加减运算。运算规则是:若实现矩阵的加减运算。运算规则是:若A和和B矩阵的维数相同,则可以执行矩阵的矩阵的维数相同,则可以执行矩阵的加减运算,加减运算,A和和B矩阵的相应元素相加减。矩阵的相应元素相加减。如果如果A与与B的维数不相同,则的维数不相同,则MATLAB将给将给出错误信息,提示用户两个矩阵的维数不出错误信息,提示用户两个矩阵的维数不匹配。匹配。a=134;
21、2,6,5;32,4b=231;412;453c=a+bd=ab第26页,本讲稿共61页(2)矩阵乘法矩阵乘法假定有两个矩阵假定有两个矩阵A和和B,若,若A为为mn矩阵,矩阵,B为为np矩阵,则矩阵,则C=A*B为为mp矩阵。矩阵。a=134;2,6,5;32,4b=231;412;453c=a*bd=ab第27页,本讲稿共61页 (3)矩阵除法矩阵除法在在MATLAB中,有两种矩阵除法运算:中,有两种矩阵除法运算:和和/,分别表示,分别表示左除和右除。如果左除和右除。如果A矩阵是非奇异方阵,则矩阵是非奇异方阵,则AB和和B/A运算可以实现。运算可以实现。对于含有标量的运算,两种除法运算的结果
22、相同,如对于含有标量的运算,两种除法运算的结果相同,如3/4和和43有相同的值,都等于有相同的值,都等于0.75。又如,设。又如,设a=10.5,25,则,则a/5=5a=2.1000 5.0000。对于矩阵来说,左除。对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关和右除表示两种不同的除数矩阵和被除数矩阵的关系。对于矩阵运算,一般系。对于矩阵运算,一般ABB/A。奇异矩阵就是对应的行列式等于0的矩阵,可逆矩阵就是非奇异矩阵 第28页,本讲稿共61页一般情况下:一般情况下:x=ab是方程是方程a*x=b的解,而的解,而x=b/a是方程是方程x*a=b的解的解 AB等效于等效于A的
23、逆左乘的逆左乘B矩阵,也就是矩阵,也就是inv(A)*B,而,而B/A等效于等效于A矩阵的逆右乘矩阵的逆右乘B矩矩阵,也就是阵,也就是B*inv(A)。a=123;4,2,6;74,9b=4;1;2c=abd=inv(a)*b第29页,本讲稿共61页(4)矩阵乘方矩阵乘方 乘方运算符:乘方运算符:“”,运算规则:,运算规则:ap表示表示a自乘自乘p次次a=123;4,5,6;78,9b=a2第30页,本讲稿共61页(5)矩阵的转置、逆运算、行列式运算与秩)矩阵的转置、逆运算、行列式运算与秩运算运算 a=1 2 0;2 5-1;4 10-1 矩阵的转置矩阵的转置 c=a 逆运算逆运算 d=inv
24、(a)行列式运算行列式运算 e=det(a)秩运算秩运算 f=rank(a)第31页,本讲稿共61页2点运算点运算(又称为数组运算)又称为数组运算)在在MATLAB中,有一种特殊的运算,因中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,为其运算符是在有关算术运算符前面加点,所以叫点运算。点运算符有所以叫点运算。点运算符有.*、./、.和和.。两矩阵进行点运算是指它们的对应元素进两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。行相关运算,要求两矩阵的维参数相同。第32页,本讲稿共61页a=134;2,6,5;32,4b=231;412;453c1=a.*bc
25、2=a*bd1=a/bd2=a./bd3=b.ae1=a.2e2=a2点除时,a./b=b.a每个元素的乘方矩阵自乘P次第33页,本讲稿共61页3矩阵与标量(数)间的四则运算矩阵与标量(数)间的四则运算 矩阵与标量间的四则运算即为矩阵中的矩阵与标量间的四则运算即为矩阵中的每个元素与标量进行加、减、乘、除运算,每个元素与标量进行加、减、乘、除运算,当进行除法运算时,标量只能做除数当进行除法运算时,标量只能做除数a=134;2,6,5;32,4b=a+2c=a/2第34页,本讲稿共61页2.3.2 关系运算关系运算 MATLAB提供了提供了6种关系运算符:种关系运算符:(小于小于)、(大于大于)、
26、=(大于等于大于等于)、=(等于等于)、=(不等于不等于)。它们的含义不难。它们的含义不难理解,但要注意其书写方法与数学中的不理解,但要注意其书写方法与数学中的不等式符号不尽相同。等式符号不尽相同。第35页,本讲稿共61页 关系运算符的运算法则为:关系运算符的运算法则为:(1)当两个比较量是标量时,直接比较两当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果数的大小。若关系成立,关系表达式结果为为1,否则为,否则为0。(2)当参与比较的量是两个维数相同的矩当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐
27、个进行,并给出元素标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由维数与原矩阵相同的矩阵,它的元素由0或或1组成。组成。第36页,本讲稿共61页 (3)当参与比较的一个是标量,而另一个是当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由维数与原矩阵相同的矩阵,它的元素由0
28、或或1组成。组成。第37页,本讲稿共61页 a=1 4 3 5 7 b=2 6 9 0 7 (1)c1=a=b (2)c2=a=b第38页,本讲稿共61页 例例2-8 产生产生5阶随机方阵阶随机方阵A,其元素为,其元素为10,90区间的随机区间的随机整数,然后判断整数,然后判断A的元素是否能被的元素是否能被3整除。整除。(1)生成生成5阶随机方阵阶随机方阵A。A=fix(90-10+1)*rand(5)+10)(2)判断判断A的元素是否可以被的元素是否可以被3整除。整除。P=rem(A,3)=0其中,其中,rem(A,3)是矩阵是矩阵A的每个元素除以的每个元素除以3的余数矩阵。的余数矩阵。此时
29、,此时,0被扩展为与被扩展为与A同维数的零矩阵,同维数的零矩阵,P是进行等于是进行等于(=)比较的结果矩阵。比较的结果矩阵。第39页,本讲稿共61页2.3.3 逻辑运算逻辑运算 MATLAB提供了提供了3种逻辑运算符:与运算种逻辑运算符:与运算&(and)、或运算、或运算|(or)、非运算非运算(not)和异或运算和异或运算xor。逻辑运算的运算法则为:逻辑运算的运算法则为:(1)在逻辑运算中,确认非零元素为真,用在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用表示,零元素为假,用0表示。表示。(2)设参与逻辑运算的是两个标量设参与逻辑运算的是两个标量a和和b,那么,那么,a&b或或a
30、nd(a,b)a,b全为非零时,运算结果为全为非零时,运算结果为1,否则为,否则为0。a|b或或or(a,b)a,b中只要有一个非零,运算结果为中只要有一个非零,运算结果为1。a或或not(a)当当a是零时,运算结果为是零时,运算结果为1;当;当a非零时,运算结果为非零时,运算结果为0。第40页,本讲稿共61页 (3)若参与逻辑运算的是两个同维矩阵,那若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由矩阵同维的矩阵,其元素由1或或0组成。组成。
31、(4)若参与逻辑运算的一个是标量,一个是若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。最终运算元素之间按标量规则逐个进行。最终运算结果是一个与矩阵同维的矩阵,其元素由结果是一个与矩阵同维的矩阵,其元素由1或或0组成。组成。第41页,本讲稿共61页 (5)逻辑非是单目运算符,也服从矩阵运算规则。逻辑非是单目运算符,也服从矩阵运算规则。(6)在算术、关系、逻辑运算中,算术运算优先级最在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。高,逻辑运算优先级最低。a=0 0 2 1;b=1 2 0 1;
32、c1=a&b c2=a|b c3=a c4=xor(a,b)第42页,本讲稿共61页 MATLAB/SIMULINK实用教程实用教程张化光张化光,刘鑫蕊刘鑫蕊,孙秋野孙秋野人民邮电出版社人民邮电出版社 第43页,本讲稿共61页例例2-9(1)建立矩阵建立矩阵A,然后找出大于,然后找出大于4的元素的位置。的元素的位置。(1)建立矩阵建立矩阵A。A=4,-65,-54,0,6;56,0,67,-45,0(2)找出大于找出大于4的元素的位置。的元素的位置。find(A4)例例2-9(2)t=linspace(0,3*pi,500);y=sin(t);subplot(1,3,1),plot(t,y),
33、axis(0 10-1 1)z1=(t2*pi).*y;subplot(1,3,2),plot(t,z1),axis(0 10-1 1)w=(tpi/3&t7*pi/3&t=a&ch=z);%找小写字母的位置找小写字母的位置ch(k)=ch(k)-(a-A);%将小写字母变成相应的将小写字母变成相应的大写字母大写字母char(ch)length(k)%统计小写字母的个数统计小写字母的个数第54页,本讲稿共61页稀疏矩阵介绍v 稀疏矩阵q 对对于于一一个个 n 阶阶矩矩阵阵,通通常常需需要要 n2 的的存存储储空空间间,当当 n 很很大大时时,进进行矩阵运算时会占用大量的内存空间和运算时间。行矩
34、阵运算时会占用大量的内存空间和运算时间。q Matlab支持稀疏矩阵,只存储矩阵的非零元素,这在矩阵的存储空支持稀疏矩阵,只存储矩阵的非零元素,这在矩阵的存储空间和计算时间上都有很大的优点。间和计算时间上都有很大的优点。q 在在许许多多实实际际问问题题中中遇遇到到的的大大规规模模矩矩阵阵中中通通常常含含有有大大量量0元元素素,这这样样的的矩矩阵称为阵称为稀疏矩阵稀疏矩阵。q 稀稀疏疏矩矩阵阵及及其其算算法法,就就是是不不存存储储那那些些“0”元元素素,也也不不对对它它们们进进行行操操作作,从从而而节节省省内内存存空空间间和和计计算算时时间间;稀稀疏疏矩矩阵阵计计算算的的复复杂杂性性和和代代价价
35、仅仅仅仅取决于稀疏矩阵的取决于稀疏矩阵的非零元素的个数非零元素的个数。第55页,本讲稿共61页2.8 稀疏矩阵:稀疏矩阵:矩阵中通常只有很少的非零元素矩阵中通常只有很少的非零元素2.8.1 矩阵存储方式矩阵存储方式MATLAB的矩阵有两种存储方式:的矩阵有两种存储方式:完全存完全存储方式储方式和和稀疏存储稀疏存储方式。方式。1完全存储方式完全存储方式完全存储方式是将矩阵的全部元素按列存完全存储方式是将矩阵的全部元素按列存储。以前讲到的矩阵的存储方式都是按这储。以前讲到的矩阵的存储方式都是按这个方式存储的,此存储方式对稀疏矩阵也个方式存储的,此存储方式对稀疏矩阵也适用,但对计算机资源是一种很大的
36、浪费。适用,但对计算机资源是一种很大的浪费。第56页,本讲稿共61页2稀疏存储方式稀疏存储方式稀疏存储方式仅存储矩阵所有的非零元素稀疏存储方式仅存储矩阵所有的非零元素的值及其位置,即行号和列号。在的值及其位置,即行号和列号。在MATLAB中,稀疏存储方式也是按列存储中,稀疏存储方式也是按列存储的。的。注意,在讲稀疏矩阵时,有两个不同的概注意,在讲稀疏矩阵时,有两个不同的概念,一是指矩阵的念,一是指矩阵的0元素较多,该矩阵是一元素较多,该矩阵是一个具有稀疏特征的矩阵,二是指采用稀疏个具有稀疏特征的矩阵,二是指采用稀疏方式存储的矩阵。方式存储的矩阵。第57页,本讲稿共61页稀疏矩阵介绍v 创建稀疏
37、矩阵q 稀稀疏疏矩矩阵阵的的创创建建需需要要用用户户来来决决定定。用用户户需需要要判判断断在在矩矩阵阵中中是是否否有大量的零元素,是否需要采用稀疏存储技术。有大量的零元素,是否需要采用稀疏存储技术。q 矩阵的矩阵的密度密度定义为矩阵中非零元素的个数除以矩阵中总的元素个数。定义为矩阵中非零元素的个数除以矩阵中总的元素个数。对于低密度的矩阵,采用稀疏方式存储是一种很好的选择。对于低密度的矩阵,采用稀疏方式存储是一种很好的选择。q 如如果果某某个个矩矩阵阵以以稀稀疏疏方方式式存存储储,则则它它参参与与运运算算的的结结果果也也将将以以稀稀疏方式存储,除非运算本身使稀疏性消失。疏方式存储,除非运算本身使
38、稀疏性消失。第58页,本讲稿共61页2.8.2 稀疏存储方式的产生稀疏存储方式的产生 函数函数S=sparse(A)将矩阵将矩阵S转化为稀疏存储方式的矩阵转化为稀疏存储方式的矩阵A。当矩阵。当矩阵S是稀疏存储方是稀疏存储方式时,则函数调用相当于式时,则函数调用相当于A=S。full(S):将稀疏存储矩阵将稀疏存储矩阵A转化为完全存储方式矩阵。转化为完全存储方式矩阵。A=0 0 5 0;3 0 3 0;0 0 0 1;0 4 3 0S=sparse(A)whos 满矩阵与稀疏矩阵之间的转化满矩阵与稀疏矩阵之间的转化S=sparse(A)A=full(S)第59页,本讲稿共61页sparse函数还
39、有其他一些调用格式:函数还有其他一些调用格式:sparse(m,n):生成一个:生成一个mn的所有元素都是的所有元素都是0的稀疏矩阵。的稀疏矩阵。sparse(u,v,S):u,v,S是是3个等长的向量。个等长的向量。S是要建立的稀疏矩阵的非是要建立的稀疏矩阵的非0元元素,素,u(i)、v(i)分别是分别是S(i)的行和列下标,该函数建立一个的行和列下标,该函数建立一个max(u)行、行、max(v)列并以列并以S为稀疏元素的稀疏矩阵。为稀疏元素的稀疏矩阵。第60页,本讲稿共61页稀疏矩阵介绍q 直接创建稀疏矩阵直接创建稀疏矩阵例:例:S=sparse(i,j,s,m,n)其中其中i 和和j 分别是矩阵非零元素的分别是矩阵非零元素的行和列指标行和列指标向量,向量,s 是非零元素是非零元素值值向量,向量,m,n 分别是矩阵的行数和列数。分别是矩阵的行数和列数。S2=sparse(1 2 2 3 4 4,3 1 3 4 2 3,.5 3 3 1 4 3,4,4)第61页,本讲稿共61页
限制150内