矩阵运算与数组运算课件

上传人:无*** 文档编号:241649932 上传时间:2024-07-13 格式:PPT 页数:85 大小:12.89MB
返回 下载 相关 举报
矩阵运算与数组运算课件_第1页
第1页 / 共85页
矩阵运算与数组运算课件_第2页
第2页 / 共85页
矩阵运算与数组运算课件_第3页
第3页 / 共85页
点击查看更多>>
资源描述
矩阵运算与数组运算矩阵运算与数组运算第1章第第1章章 矩阵运算与数组运算矩阵运算与数组运算u 1.1 变量和数据变量和数据 u 1.2 矩阵和数组矩阵和数组 u 1.3 稀疏矩阵稀疏矩阵 u 1.5元胞数组和结构数组元胞数组和结构数组 p矩阵是矩阵是MATLAB最基本、最重要的数据最基本、最重要的数据对象,其大部分运算均是基于矩阵的运对象,其大部分运算均是基于矩阵的运算。算。p一般情况下,要求矩阵的每个元素必须一般情况下,要求矩阵的每个元素必须具有相同的数据类型。具有相同的数据类型。p和其他计算机语言相似,其数据类型是和其他计算机语言相似,其数据类型是可以进行转换的。可以进行转换的。1.1 变量和数据 MATLAB7.3定义了定义了15种基本的数据类型种基本的数据类型,包括整型、浮点型、字符型和逻辑型等包括整型、浮点型、字符型和逻辑型等。1.1.1 数据类型数据类型 1.1.2 1.1.2 数据数据 1.1.数数值的表达方式的表达方式 数数值采用十采用十进制表示,可以用制表示,可以用带小数点小数点的形式直接表示,也可以用科学的形式直接表示,也可以用科学计数法数法,数数值的表示范的表示范围是是10-30810308。例如:例如:-2,-2,5.67,5.67,2.56e-56(2.56e-56(表表示示2.562.561010-56-56),),4.68e204(4.68e204(表示表示4.684.681010204204)2.2.矩矩阵和数和数组的概念的概念p标标量量(Scalar):是是指指1 11 1的的矩矩阵阵,即即只只含含一一个个数的矩阵。数的矩阵。p向向量量(Vector):是是指指1 1n n或或n n1 1的的矩矩阵阵,即即只只有一行或者一列的矩阵。有一行或者一列的矩阵。p矩矩阵阵(Matrix):是是一一个个矩矩形形的的数数组组,即即二二维维数数组组,其其中中向向量量和和标标量量都都是是矩矩阵阵的的特特例例,0 00 0矩矩阵阵为空矩阵为空矩阵()()。p数数组组(Array):是是指指n n维维的的数数组组,为为矩矩阵阵的的延延伸伸,其中矩阵和向量都是数组的特例。其中矩阵和向量都是数组的特例。3.3.复数(复数(ComplexComplex)p复数由实部和虚部组成,复数由实部和虚部组成,MATLAB用特殊变量用特殊变量“i”和和“j”表示虚数的单位。表示虚数的单位。z=a+b*i或或z=a+b*jz=a+bi或或z=a+bj(当当b为常量时为常量时)z=r*exp(i*theta)p得出一个复数的实部、虚部、幅值和相角。得出一个复数的实部、虚部、幅值和相角。a=real(z)%计算实部计算实部b=imag(z)%计算虚部计算虚部r=abs(z)%计算幅值计算幅值t=angle(z)%计算相角计算相角1.1.3 变量变量(Variables)p变量名区分字母的大小写。变量名区分字母的大小写。p变变量量名名不不能能超超过过6363个个字字符符,第第6363个个字字符符后后的的字字符被忽略。符被忽略。p变变量量名名必必须须以以字字母母开开头头,变变量量名名的的组组成成可可以以是是任任意意字字母母、数数字字或或者者下下划划线线,但但不不能能含含有有空空格格和标点符号和标点符号(如,。如,。%等等)。p关键字关键字(如如ifif、whilewhile等等)不能作为变量名。不能作为变量名。1.1.变量的命名量的命名规则2.2.特殊特殊变量量i=j=特殊特殊变量量取取值ans运算运算结果的默果的默认变量名量名pi圆周率周率eps计算机的最小数算机的最小数flops浮点运算数浮点运算数inf无无穷大,如大,如1/0NaN或或nan非数,如非数,如0/0、/、0i或或 jnarginnargin函数的函数的输入入变量数目量数目nargout函数的函数的输出出变量数目量数目realmin最小的可用正最小的可用正实数数realmax最大的可用正最大的可用正实数数p变量变量=表达式表达式p表达式表达式第第一一种种形形式式:和和C C语语言言类类似似,先先计计算算右右边边表表达达式式的值,然后将其赋给左边的变量。的值,然后将其赋给左边的变量。第第二二种种形形式式:将将表表达达式式值值赋赋给给MATLAB预预定定义义变量变量ans。语句后可加分号,也可不加分号语句后可加分号,也可不加分号表达式的书写规则同表达式的书写规则同C语言语言以以“%”开头,其后内容为注释内容开头,其后内容为注释内容3.3.赋值语句句1.2 矩阵和数组矩阵和数组 MATLAB最基本、最重要的功能就是进行最基本、最重要的功能就是进行实数或复数矩阵的运算。实数或复数矩阵的运算。1.2.1 矩阵输入矩阵输入(1)(1)矩阵元素应用方括号矩阵元素应用方括号()()括住;括住;(2)(2)每行内的元素间用逗号或空格隔开;每行内的元素间用逗号或空格隔开;(3)(3)行与行之间用分号或回车键隔开;行与行之间用分号或回车键隔开;(4)(4)元素可以是数值或表达式。元素可以是数值或表达式。矩阵表示应遵循以下基本常规:矩阵表示应遵循以下基本常规:p例如:例如:c=1 2;3 4;5 3*2 p 表示构成矩阵表示构成矩阵,分号分隔行分号分隔行,空格分隔元素空格分隔元素1.1.通通过显式元素列表式元素列表输入矩入矩阵p使用from:step:to方式生成向量from、step和to分别表示开始值、步长和结束值。当step省略时则默认为step=1。2.2.通通过语句生成矩句生成矩阵当step省略时则默认为step=1;当step省略或step0而fromto时为空矩阵,当 step0而fromx1=2:5 x1=2 3 4 5 x2=2:0.5:4 x2=2.0000 2.5000 3.0000 3.5000 4.0000 x4=2:-1:3%空矩阵空矩阵 x4=Empty matrix:1-by-0 x5=2:-1:0.5 x5=2 1 x6=1:2:5;1:3:7%两行向量构成矩阵两行向量构成矩阵 x6=1 3 5 1 4 7 p使用使用linspacelinspace和和logspacelogspace函数函数linspace(a,b,nlinspace(a,b,n)a a、b b、n n分分别别表表示示开开始始值值、结结束束值值和和元元素素个个数,数,n n如果省略则默认值为如果省略则默认值为100100生生成成从从a到到b之之间间线线性性分分布布的的n个个元元素素的的行行向向量量logspace(a,b,nlogspace(a,b,n)a a、b b、n n分分别别表表示示开开始始值值1010a a 、结结束束值值1010b b和和数据个数数据个数n,n,如果省略则默认值为如果省略则默认值为5050生成生成对数对数等分向量等分向量 EX:x1=linspace(0,2*pi,5)%从0到2*pi等分成5个点x1=0 1.5708 3.1416 4.7124 6.2832 x2=logspace(0,2,3)%从1到100对数等分成3个点x2=1 10 100 zeros(m,n)zeros(m,n)产生产生m mn n的全的全0 0矩阵矩阵ones(m,n)ones(m,n)产生产生m mn n的全的全1 1矩阵矩阵rand(m,nrand(m,n)产产生生均均匀匀分分布布的的随随机机矩矩阵阵,元元素素取取值范围值范围0.00.01.01.0。randn(m,nrandn(m,n)产生正态分布的随机矩阵产生正态分布的随机矩阵magic(N)magic(N)产产生生N N阶阶魔魔方方矩矩阵阵(矩矩阵阵的的行行、列列和和对对角线上元素的和相等角线上元素的和相等)eye(m,n)eye(m,n)产生产生m mn n的单位矩阵的单位矩阵3.3.由矩由矩阵生成函数生成函数产生特殊矩生特殊矩阵X1=eye(2,3)X1=1 0 0 0 1 0 X2=eye(3,2)X2=1 0 0 1 0 0 EX:a(1,2)a(4)a(2,3)a(8)p全下标方式全下标方式一个一个mn的的a矩阵的第矩阵的第i行第行第j列的元素表示为列的元素表示为a(i,j)。p单下标方式单下标方式以以m mn n的的矩矩阵阵a a为为例例,若若元元素素a(i,j)a(i,j)则则对对应应的的“单单下下标标”为为s=(j-1)s=(j-1)m mi i。1.2.2 1.2.2 矩阵元素矩阵元素1.矩阵的下标矩阵的下标(Subscript)pMATLAB利用矩阵下标可以产生子矩阵利用矩阵下标可以产生子矩阵2.子矩阵块的产生子矩阵块的产生(Multiple elements)有一个矩阵A:矩阵的一个元素。矩阵的一个元素。如果i,j是向量时,a(i,j)表示如果i,j是标量时,则a(i,j)表示矩阵的一个子矩阵块。矩阵的一个子矩阵块。A=1 2 3 4 5 6 7 8 9 10 11 12Example:A=1 2 3 4;5 6 7 8;9 10 11 12;A(1 2,3 4)A(1:3,2:3)ans=2 3 6 7 10 11ans=3 4 7 8A=1 2 3 4 5 6 7 8 9 10 11 12Example:A=1 2 3 4;5 6 7 8;9 10 11 12;A(:,2:3)A(1:3,end)ans=2 3 6 7 10 11ans=4 8 12A=1 2 3 4 5 6 7 8 9 10 11 12Example:A(1 3;2 6)ans=1 9 5 10取单下标1,3,2,6A(1 3:4 6)ans=1 9 2 10p子矩阵也可以利用逻辑矩阵(logical matrix)来标识。逻辑矩阵是大小和对应矩阵相同的,而元素值为0或1的矩阵,用a(l1,l2)来表示,其中l1,l2为逻辑向量,当l1,l2元素为0则不取该位置元素,反之,取该位置的元素。Example:A=1 2 3 4 5 6 7 8 9 10 11 12l1=logical(1 0 1)l2=logical(1 1 0)A(l1,l2)ans=1 2 9 10取出取出1,3行且行且1,2列的元素列的元素3.3.矩矩阵的的赋值矩阵的赋值有:全下标方式、单下标方式和全元素方式。全下标方式:a(i,j)=b,给a矩阵的部分元素赋值则b矩阵的行列数必须等于a矩阵的行列数。clear a a(1:2,1:3)=1 1 1;1 1 1%给第一、二行元素赋值为全1a=1 1 1 1 1 1 单下标方式:a(s)=b,b为向量,元素个数必须等于a矩阵的元素个数。a(5:6)=2 3%给第5、6元素赋值a=1 1 2 1 1 3 全元素方式:a(:)=b,给a矩阵的所有元素赋值则b矩阵的元素总数必须等于a矩阵的元素总数,但行列数不一定相等。a=1 2;3 4;5 6 a=1 2 3 4 5 6 b=1 2 3;4 5 6 b=1 2 3 4 5 6 a(:)=b%按单下标方式给a赋值a=1 5 4 3 2 6 EX:a=1 2 0;3 4 0;5 6 9 a=1 2 0 3 4 0 5 6 9 a(:,3)=%删除一列元素 a=1 2 3 4 5 6 a(1)=%删除一个元素,则矩阵变为行向量a=3 5 2 4 6 a=%删除所有元素为空矩阵 a=4.4.矩矩阵元素的元素的删除除可以对矩阵的单个元素、子矩阵块和所有元素赋值为空矩阵进行删除操作,就是简单地将其赋值为空矩阵(用表示)。5.5.生成大矩生成大矩阵(Concatenating Matrices)(Concatenating Matrices)可以通过方括号可以通过方括号“”实现将小矩阵生成一个实现将小矩阵生成一个较大的矩阵。较大的矩阵。注注:a;a:a;a 与与 a,aa,a 的区别的区别EX:a=1 2 0;3 4 0;5 6 9 a=1 2 0 3 4 0 5 6 9 a;a%联接成63的矩阵 ans=1 2 0 3 4 0 5 6 9 1 2 0 3 4 0 5 6 9 a(1:2,1:2)10*a(1:2,2:3)%计算并联接计算并联接ans=1 2 20 0 3 4 40 0 a a%联接成联接成36的矩阵的矩阵ans=1 2 0 1 2 0 3 4 0 3 4 0 5 6 9 5 6 9 可以通过矩阵翻转函数对矩阵进行翻转。可以通过矩阵翻转函数对矩阵进行翻转。a=1 2 0 3 4 0 5 6 96.6.矩矩阵的翻的翻转函数名函数名功能功能例子例子输入入结果果triu(X)产生生X矩矩阵的上的上三角矩三角矩阵,其,其余元素余元素补0。triu(a)ans=1 2 0 0 4 0 0 0 9 tril(X)产生生X矩矩阵的的下三角矩下三角矩阵,其余元素其余元素补0。tril(a)ans=1 0 0 3 4 0 5 6 9 a=1 2 0 3 4 0 5 6 9flipud(X)使矩使矩阵X沿水平沿水平轴上下翻上下翻转flipud(a)ans=5 6 9 3 4 0 1 2 0 fliplr(X)使矩使矩阵X沿垂直沿垂直轴左右翻左右翻转fliplr(a)ans=0 2 1 0 4 3 9 6 5 a=1 2 0 3 4 0 5 6 9flipdim(X,dim)使矩使矩阵X沿特定沿特定轴翻翻转。dim=1,按行,按行维翻翻转;dim=2,按列,按列维翻翻转。flipdim(a,1)ans=5 6 9 3 4 0 1 2 0 rot90(X)使矩使矩阵X逆逆时针旋旋转900rot90(a)ans=0 0 9 2 4 6 1 3 5 a=1 2 0 3 4 0 5 6 91.2.31.2.3矩阵和数组运算矩阵和数组运算1.1.矩阵运算的函数矩阵运算的函数det(X):计算方阵行列式rank(X):求矩阵的秩。inv(X):求矩阵的逆阵。inv(X)=X-1v,d=eig(X):计算矩阵特征值和特征向量diag(X):产生X矩阵的对角阵函数名函数名功能功能例子例子输入入结果果det(X)计算方算方阵行列式行列式det(a)ans=0 rank(X)求矩求矩阵的秩,得出的秩,得出的行列式不的行列式不为零的零的最大方最大方阵边长。rank(a)ans=2 inv(X)求矩求矩阵的逆的逆阵,当当方方阵X的的det(X)不不等于零,逆等于零,逆阵X-1才存在。才存在。X 与与X-1相乘相乘为单位矩位矩阵。inv(a)v,d=eig(X)计算矩阵特征值和计算矩阵特征值和特征向量特征向量.如果方如果方程程Xv=vd存在非零存在非零解,则解,则v为特征向为特征向量,量,d为特征值为特征值v,d=eig(X)a=1 2 3 4 5 6 7 8 92.矩阵和数组的算术运算矩阵和数组的算术运算p矩矩 阵阵 和和 数数 组组 的的 加加(addition)、减减 运运 算算(subtraction)矩阵加、减运算表达式分别为矩阵加、减运算表达式分别为”A+BA+B”、”A-BA-B”。p矩阵和数组的乘法运算矩阵和数组的乘法运算(muliplication)矩矩阵阵的的乘乘法法运运算算表表达达式式为为”A*BA*B”。矩矩阵阵A A的的列列数数必必须须等等于于矩矩阵阵B B的的行行数数,除除非非其其中中有有一一个个是是标标量。量。数数组组的的乘乘法法运运算算表表达达式式为为”A.*BA.*B”,表表示示数数组组A A和和B B中中的的对对应应元元素素相相乘乘。A A和和B B数数组组必必须须大大小小相相同,除非其中有一个是标量。同,除非其中有一个是标量。p矩阵和数组的除法矩阵和数组的除法(division)矩阵的除法运算表达式有两种:”ABAB”和”A/BA/B”,分别表示左除左除和右除右除。X=ABX=AB是方程是方程A*X=BA*X=B的解,的解,AB=AAB=A-1-1*B*B。X=B/AX=B/A是是X*A=BX*A=B的解,的解,B/A=B*AB/A=B*A-1-1。数组的除法运算表达式有两种:”A.B”和”A./B”,表示数组相应元素左除和右除。注注:A:A和和B B数组必须大小相同,除非其中有一个是数组必须大小相同,除非其中有一个是标量。标量。【例例】已知方程组,已知方程组,用矩阵除法来解线性方程组。用矩阵除法来解线性方程组。X=ABX=2 -1 0将该方程变换成将该方程变换成AX=BAX=B的形式。的形式。A=2-1 3;3 1-5;4-1 1A=2-1 3;3 1-5;4-1 1 B=5;5;9 B=5;5;9 X=AB X=ABp矩阵和数组的乘方矩阵和数组的乘方(power)矩矩阵阵乘乘方方的的运运算算表表达达式式为为”ABAB”,其其中中A A可可以以是矩阵或标量。是矩阵或标量。数组乘方的运算表达式数组乘方的运算表达式”A.BA.B ”。矩阵的转置运算表示为A如果矩阵A是复数矩阵,则为共轭转置数组的转置运算表示为A.如果数组A是复数数组,则不是共轭转置。3.矩阵和数组的转置矩阵和数组的转置(transpose)【例例】矩阵和数组的除法和乘方运算。矩阵和数组的除法和乘方运算。x1=1 2;3 4;x2=eye(2)x2=1 0 0 1 x1/x2%矩阵右除ans=1 2 3 4 inv(x1)%求逆矩阵ans=-2.0000 1.0000 1.5000 -0.5000 x1x2%矩阵左除ans=-2.0000 1.0000 1.5000 -0.5000 x1./x2%数组右除Warning:Divide by zero.(Type warning off MATLAB:divideByZero to suppress this warning.)ans=1 Inf Inf 4 x2=1 0 0 1 x1=1 2 3 4 x1.x2%数组左除ans=1.0000 0 0 0.2500 x12%矩阵乘方ans=7 10 15 22 x1-1%矩阵乘方,指数为-1与inv相同ans=-2.0000 1.0000 1.5000 -0.5000 x2=1 0 0 1 x1=1 2 3 42.x1%数组乘方ans=2 4 8 16 x1.x2%数组乘方ans=1 1 1 4 x2=1 0 0 1 x1=1 2 3 4【例例】矩阵和数组的转置运算。矩阵和数组的转置运算。A=1 2;3 4;A ans=1 3 2 4A%矩阵转置ans=1.0000 2.0000 3.0000-4.0000i 4.0000 A.%数组转置ans=1.0000 2.0000 3.0000+4.0000i 4.0000 A=1 2 3+4*i 4;pMATLABMATLAB中中expexp、sqrtsqrt、sinsin、coscos等等数数学学函函数数可可以以直直接接使使用用在在数数组组上上,这这些些运运算算是是分分别别对对数数组的每个元素组的每个元素进行运算。进行运算。pexpmexpm、sqrtmsqrtm、logmlogm等数学函数用于等数学函数用于矩阵矩阵运算。运算。4.矩阵和数组的数学函数矩阵和数组的数学函数函数名函数名含含义函数名函数名含含义abs绝对值或者复数模rat有理数近似sqrt平方根mod模除求余real实部round4舍5入到整数imag虚部fix向最接近0取整conj复数共轭floor向最接近-取整sin正弦ceil向最接近+取整cos余弦sign符号函数tan正切rem求余数留数asin反正弦exp自然指数acos反余弦log自然对数atan反正切log10以10为底的对数atan2第四象限反正切pow22的幂sinh双曲正弦bessel贝赛尔函数cosh双曲余弦gamma伽吗函数tanh双曲正切数数组运算运算矩矩阵运算运算命令命令含含义命令命令含含义A+B对应元素相加元素相加A+B与数与数组运算相同运算相同A-B对应元素相减元素相减A-B与数与数组运算相同运算相同S.*B标量量S分分别与与B元素的元素的积S*B与数与数组运算相同运算相同A.*B数数组对应元素相乘元素相乘A*B内内维相同矩相同矩阵的乘的乘积S./BS分分别被被B的元素左除的元素左除SBB矩矩阵分分别左除左除SA./BA的元素被的元素被B的的对应元素除元素除A/B矩矩阵A右除右除B即即A的逆的逆阵与与B相乘相乘B.A结果一定与上行相同果一定与上行相同BAA左除左除B(一般与上行不同一般与上行不同)A.SA的每个元素自乘的每个元素自乘S次次ASA矩矩阵为方方阵时,自乘,自乘S次次A.SS为小数小数时,对A各元素分各元素分别求非求非整数整数幂,得出矩,得出矩阵ASS为小数小数时,方,方阵A的非整数乘方的非整数乘方S.B分分别以以B的元素的元素为指数求指数求幂值SBB为方方阵时,标量量S的矩的矩阵乘方乘方A.非共非共轭转置,相当于置,相当于conj(A)A共共轭转置置exp(A)以自然数以自然数e为底,分底,分别以以A的元素的元素为指数求指数求幂expm(A)A的矩的矩阵指数函数指数函数log(A)对A的各元素求的各元素求对数数logm(A)A的矩的矩阵对数函数数函数Sqrt(A)对A的各元素求平方根的各元素求平方根sqrtm(A)A的矩的矩阵平方根函数平方根函数f(A)求求A各个元素的函数各个元素的函数值funm(A,FUN)矩矩阵的函数运算的函数运算5.关系操作和逻辑操作关系操作和逻辑操作p关系运算(关系运算(relational operators)关系运算规则:如果两个标量,则结果为真(1)或假(0)。如果比较的两个数组变量,则必须大小相同,数组的元素为0或1。如果比较一个数组和一个标量,则把数组的每个元素分别与标量比较。、=仅对变量的实部进行比较,而=和=则同时对实部和虚部进行比较。关系操作符有:、=、=(等于)、=(不等于)。p逻辑运算逻辑运算(Logical Operators)逻逻辑辑操操作作符符有有:&(&(与与)、|(|(或或)、(非非)、xor(异或异或)、&(&(先决与先决与)、|(|(先决或先决或)。逻辑运算规则:在逻辑运算中,非0元素表示真(1),0元素表示假 (0),逻辑运算的结果为0或1;两个变量都是标量,则结果为0、1的标量;两个变量都是数组,则必须大小相同,结果也是 同样大小的数组;一个数组和一个标量,则把数组的每个元素分别 与标量比较,结果为与数组大小相同的数组。已知已知a=3,b=6,c=-9a=3,b=6,c=-9aa(a(ac)c)ansans=1 1EX:&与|使用t=linspace(0,3*pi,10);y=sin(t)%计算正弦曲线计算正弦曲线y=Columns 1 through 6 0 0.8660 0.8660 0.0000 -0.8660 -0.8660 Columns 7 through 10 -0.0000 0.8660 0.8660 0.0000 t1=(t2*pi)t1=1 1 1 0 0 0 0 1 1 1【例】数组的关系与逻辑运算y1=t1.*y%得出得出0和和23的半波整流的半波整流y1=Columns 1 through 6 0 0.8660 0.8660 0 0 0 Columns 7 through 10 0 0.8660 0.8660 0.0000 6.运算符优先级运算符优先级在在MATLAB中各种运算符的优先级如下:中各种运算符的优先级如下:(矩阵转置矩阵转置)、(矩阵幂矩阵幂)和和.(数组转置数组转置)、.(数组幂数组幂)(逻辑非逻辑非)*(乘乘)、/(左除左除)、(右除右除)和和.*(点乘点乘)、./(点左除点左除)、.(点右除点右除)+、-(加减加减):(冒号冒号)、=、=&(逻辑与逻辑与)|(逻辑或逻辑或)&(先决与先决与)|(先决或先决或)*2.2.52.2.5多维数组多维数组(Multidementional Arrays)三三维维数数组组用用三三个个下下标标表表示示,在在二二维维数数组组的的基基础础上上增增加加了了一一维维称称为为页页,三三维维数数组组可可以以看看成成“长长方体方体”。三三维维数数组组的的元元素素存存放放遵遵循循“单单下下标标”的的编编号号规规则则:第第一一页页第第一一列列下下接接该该页页的的第第二二列列,下下面面再再接接第第三三列列,依依此此类类推推;第第一一页页的的最最后后列列下下面面接接第二页第一列。第二页第一列。*多维数组的创建多维数组的创建(1)(1)通过通过“全下标全下标”元素赋值方式创建元素赋值方式创建(2)(2)由函数由函数onesones、zeroszeros、randrand和和randnrandn直接创建直接创建(3)(3)利用函数生成数组利用函数生成数组将将一一系系列列数数组组沿沿着着特特定定的的维维连连接接成成一一个个多多维维数数组组。cat(cat(维维,p1,p2,p1,p2,)按按 指指 定定 行行 列列 数数 放放 置置 模模 块块 数数 组组 生生 成成 多多 维维 数数 组组repmat(prepmat(p)。在在总总元元素素的的数数目目不不变变的的前前提提下下重重新新确确定定数数组组的的行行列数来重组数组。列数来重组数组。reshape(p)reshape(p)EX:a(:,:,2)=1 2;3 4a(:,:,1)=0 0 0 0a(:,:,2)=1 2 3 4b=1 1;2 2b=1 1 2 2b(:,:,2)=5b(:,:,1)=1 1 2 2b(:,:,2)=5 5 5 5通过通过“全下标全下标”元素赋值方式创建元素赋值方式创建由函数由函数onesones、zeroszeros、randrand和和randnrandn直接创建直接创建EX:用函数用函数rand直接创建三维随机数组直接创建三维随机数组rand(2,4,3)ans(:,:,1)=0.0274 0.8276 0.1682 0.1301 0.9601 0.4917 0.9761 0.2748ans(:,:,2)=0.1479 0.5472 0.1007 0.3846 0.3808 0.9298 0.9494 0.2671ans(:,:,3)=0.5781 0.6993 0.7838 0.6935 0.5919 0.1170 0.9728 0.33871.3稀疏矩阵(补充)稀疏矩阵(补充)1.3.1稀疏矩阵的建立稀疏矩阵的建立p目的:稀疏矩阵大部分的元素都是0,因此只需储存非零元素的下标和元素值,这种特殊的存储方式可节省大量的存储空间和不必要的运算。p建立方法:使用sparse函数产生稀疏矩阵 用spdiags函数创建稀疏矩阵 用spconvert函数从外部文件输入稀疏矩阵 sparse函数用于创建稀疏矩阵,或将一个函数用于创建稀疏矩阵,或将一个全元素矩阵直接转换成稀疏矩阵。全元素矩阵直接转换成稀疏矩阵。例:例:A=1 0 0 0;0 5 0 0;1 0 0 0 A1=sparse(A)1.1.使用使用sparsesparse函数产生稀疏矩阵函数产生稀疏矩阵A=1 0 0 0 0 5 0 0 1 0 0 0A1=(1,1)1 (3,1)1 (2,2)5在在MATLAB中,稀疏的相关函数:中,稀疏的相关函数: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为稀疏元素的稀疏矩阵。为稀疏元素的稀疏矩阵。u,v,S=find(A):返回矩阵:返回矩阵A中非中非0元素的下元素的下标和元素。这里产生的标和元素。这里产生的u,v,S可作为可作为sparse(u,v,S)的参数。的参数。full(A):返回和稀疏存储矩阵:返回和稀疏存储矩阵A对应的完全存对应的完全存储方式矩阵。储方式矩阵。EX1:u=2 3 5;v=1 6 2;S=1 1 1;A=sparse(u,v,S)A=(2,1)1 (5,2)1 (3,6)1u=2 5 3v=1 2 6S=1 1 1ans=0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0EX2:u,v,S=find(A)EX3:full(A)对于对于1个只包含实数个只包含实数mn的稀疏矩阵,含有的稀疏矩阵,含有nnz个个非零元素,非零元素,MATLAB使用使用3个内部数组来存储此个内部数组来存储此稀疏矩阵的信息:稀疏矩阵的信息:第第1个数组:以个数组:以double方式储存了方式储存了nnz个非零元素,使个非零元素,使用空间为用空间为8nnz(Byte)。第第2个数组:以整数方式储存了个数组:以整数方式储存了nnz个非零元素,每个个非零元素,每个元素的行下标使用空间为元素的行下标使用空间为4nnz(Byte)第第3个数组:以整数方式储存了个数组:以整数方式储存了n个列每个列的起始指个列每个列的起始指针,使用的空间为针,使用的空间为4n(Byte)。)。第第4个数组:复数稀疏矩阵要以个数组:复数稀疏矩阵要以double方式储存方式储存nnz个个非零元素的虚数部分。非零元素的虚数部分。整个稀疏矩阵占用的空间为整个稀疏矩阵占用的空间为8nnz4nnz4n4(Byte)。)。1.3.2稀疏矩阵的存储空间稀疏矩阵的存储空间EX:a=1 0 0 0;2 0 1 0;0 0 0 3;0 5 0 0;b=sparse(a);whos Name Size Bytes Class a 4x4 128 double b 4x4 80 double1.41.4元胞数组和结构数组元胞数组和结构数组p元元胞胞数数组组中中的的基基本本组组成成是是元元胞胞,每每一一个个元元胞胞可可以以看看成成是是一一个个单单元元(Cell),用用来来存存放放各各种种不不同同类类型型的的数数据据,如如矩矩阵阵、多多维维数数组组、字符串、元胞数组以及结构数组。字符串、元胞数组以及结构数组。1.4.1元胞数组(Cell Array)1、元胞数组的创建、元胞数组的创建直接使用直接使用创建。创建。EX:A=This is the first Cell.,1 2;3 4;eye(3),Tom,JaneA=This is the first Cell.,1 2;3 4;eye(3),Tom,JaneA=A=1x23 char 2x2 double 1x23 char 2x2 double 3x3 double 1x2 cell 3x3 double 1x2 cell whoswhos Name Size Bytes Class Attributes Name Size Bytes Class Attributes A 2x2 716 cell A 2x2 716 cell 1、元胞数组的创建、元胞数组的创建由各元胞创建。由各元胞创建。B(1,1)=This is the second cell.B=This is the second cell.B(1,2)=5+3*iB=1x24 char 5.0000+3.0000i B(1,3)=1 2;3 4;5 6B=1x24 char 5.0000+3.0000i 3x2 doubleEX:2、元胞数组的内容显示、元胞数组的内容显示使用使用celldisp命令显示元胞数组的内容命令显示元胞数组的内容 celldisp(B)B1=This is the second cell.B2=5.0000+3.0000iB3=1 2 3 4 5 63、元胞数组的内容获取、元胞数组的内容获取(1)取元胞数组的元素内容取元胞数组的元素内容EX:取出A(1,2)元胞元素的内容以及矩阵中的元素内容 x1=A1,2x1=1 2 3 4 x2=A1,2(2,2)x2=4A=This is the first Cell.,1 2;3 4;eye(3),Tom,JaneA=This is the first Cell.,1 2;3 4;eye(3),Tom,Jane3、元胞数组的内容获取、元胞数组的内容获取(2)取元胞数组的元素取元胞数组的元素 x3=A(1,2)x3=2x2 doubleA=This is the first Cell.,1 2;3 4;eye(3),Tom,JaneA=This is the first Cell.,1 2;3 4;eye(3),Tom,Jane1.4.2 1.4.2 结构数组结构数组p结结构构数数组组的的基基本本组组成成是是结结构构(Structure),每每一一个个结结构构都都包包含含多多个个域域(Fields),结结构构数组只有划分了域以后才能使用。数组只有划分了域以后才能使用。p例例如如多多个个图图形形对对象象构构成成结结构构数数组组,一一个个图图形形对对象象就就是是一一个个结结构构,一一个个属属性性(Name、Color、Position)就是一个域。就是一个域。EX:ps(1)=struct(name,曲线1,color,red,position,0,0,300,300);1、结构数组的创建、结构数组的创建直接创建直接创建 ps(1).name=曲线曲线1ps=name:曲线曲线1 ps(1).color=redps=name:曲线曲线1 color:red ps(1).position=0,0,300,300ps=name:曲线曲线1 color:red position:0 0 300 300 ps(2).name=曲线曲线2;ps(2).color=blue;ps(2).position=100,100,300,300ps=1x2 struct array with fields:name color position1、结构数组的创建、结构数组的创建利用利用struct函数创建函数创建 ps(1)=struct(name,曲线曲线1,color,red,position,0,0,300,300);ps(2)=struct(name,曲线曲线2,color,blue,position,100,100,300,300)ps=1x2 struct array with fields:name color position2、结构数组数据的获取和设置、结构数组数据的获取和设置使用使用“.”符号获取符号获取 x1=ps(1)x1=name:曲线曲线1 color:red position:0 0 300 300 x2=ps(1).positionx2=0 0 300 300 x3=ps(1).position(1,3)x3=300
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!