第3章 数据类型及基本操作_第1页
第3章 数据类型及基本操作_第2页
第3章 数据类型及基本操作_第3页
第3章 数据类型及基本操作_第4页
第3章 数据类型及基本操作_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第第3章章 MATLAB数据类型与数值计算数据类型与数值计算2主要内容主要内容 3.1 变量和数据变量和数据 3.2 矩阵和数组矩阵和数组 3.3稀疏矩阵稀疏矩阵 3.4多项式多项式 3.5元胞数组和结构数组元胞数组和结构数组 33.1 数据类型数据类型 MATLAB7.0 定义了定义了15种基本的数据类型种基本的数据类型 ,包括整型、浮点型、字符型和逻辑型等包括整型、浮点型、字符型和逻辑型等 。4数值采用十进制表示,可以用带小数点数值采用十进制表示,可以用带小数点的形式直接表示,也可以用科学计数法的形式直接表示,也可以用科学计数法,数值的表示范围是数值的表示范围是10-30910309 。

2、例如:例如:-2-2、5.675.67、3.56e-56(3.56e-56(表示表示3.563.561010-56-56) )、4.68e4.68e204204( (表示表示4.684.681010204204) )1. 数值的表达方式数值的表达方式52. 2. 矩阵和数组的概念矩阵和数组的概念标量(标量(Scalar):是指):是指1 11 1的矩阵,即只含一个的矩阵,即只含一个数的矩阵。数的矩阵。向量(向量(Vector):是指):是指1 1n n或或n n1 1的矩阵,即的矩阵,即只有一行或者一列的矩阵。只有一行或者一列的矩阵。矩阵(矩阵(Matrix):是一个矩形的数组,即二维):是一

3、个矩形的数组,即二维数组,其中向量和标量都是矩阵的特例,数组,其中向量和标量都是矩阵的特例,0 00 0矩阵矩阵为空矩阵为空矩阵()()。数组(数组(Array):是指):是指n n维的数组,为矩阵的延维的数组,为矩阵的延伸,其中矩阵和向量都是数组的特例。伸,其中矩阵和向量都是数组的特例。63.3.复数(复数(Complex)复数由实部和虚部组成,复数由实部和虚部组成,MATLAB用特殊变量用特殊变量“i”和和“j”表示虚数的单位。表示虚数的单位。z=a+bz=a+b* *i i或或z=a+bz=a+b* *j jz=a+biz=a+bi或或z=a+bjz=a+bj( (当当b b为常量时为常

4、量时) )z=rz=r* *exp(iexp(i* *theta)theta)得出一个复数的实部、虚部、幅值和相角。得出一个复数的实部、虚部、幅值和相角。a=real(z) a=real(z) % %计算实部计算实部b=imag(zb=imag(z) ) % %计算虚部计算虚部r=abs(z) r=abs(z) % %计算幅值计算幅值t=angle(zt=angle(z) ) % %计算相角计算相角73.2 变量变量(Variables)1. 变量的命名规则变量的命名规则u变量名区分字母的大小写。变量名区分字母的大小写。u变量名不能超过变量名不能超过6363个字符,第个字符,第6363个字符后

5、的字个字符后的字符被忽略。符被忽略。u变量名必须以字母开头,变量名的组成可以是变量名必须以字母开头,变量名的组成可以是任意字母、数字或者下划线,但不能含有空格和任意字母、数字或者下划线,但不能含有空格和标点符号标点符号( (如,。如,。% %等等) )。u关键字关键字( (如如ifif、whilewhile等等) )不能作为变量名。不能作为变量名。82. 特殊变量特殊变量93.3 矩阵和数组矩阵和数组(1) (1) 矩阵元素应用方括号矩阵元素应用方括号()()括住;括住;(2) (2) 每行内的元素间用逗号或空格隔开;每行内的元素间用逗号或空格隔开;(3) (3) 行与行之间用分号或回车键隔开

6、;行与行之间用分号或回车键隔开;(4) (4) 元素可以是数值或表达式。元素可以是数值或表达式。矩阵表示应遵循以下基本常规:矩阵表示应遵循以下基本常规:3.3.1矩阵输入矩阵输入101. 通过显式元素列表输入矩阵通过显式元素列表输入矩阵例如: c=1 2;3 4;5 3*2 % 表示构成矩阵,分号分隔行,空格分隔元素2.2.通过语句生成矩阵通过语句生成矩阵(1) (1) 使用使用from:step:tofrom:step:to方式生成向量方式生成向量fromfrom、stepstep和和toto分别表示开始值、步长和结束值分别表示开始值、步长和结束值。当。当stepstep省略时则默认为省略时

7、则默认为step=1step=1。 11(2) (2) 使用使用linspacelinspace和和logspacelogspace函数函数linspace(a,b,nlinspace(a,b,n) )a a、b b、n n分别表示开始值、结束值和元素个分别表示开始值、结束值和元素个数,数,n n如果省略则默认值为如果省略则默认值为100 100 。 logspace(a,b,nlogspace(a,b,n) )a a、b b、n n分别表示开始值分别表示开始值1010a a 、结束值、结束值1010b b和和数据个数,数据个数,n,n,如果省略则默认值为如果省略则默认值为50 50 。123

8、. 3. 由矩阵生成函数产生特殊矩阵由矩阵生成函数产生特殊矩阵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

9、,n)eye(m,n)产生产生m mn n的单位矩阵的单位矩阵131. 1. 矩阵的下标矩阵的下标(Subscript)(1) (1) 全下标方式全下标方式一个一个mn的的a矩阵的第矩阵的第i行第行第j列的元素表示列的元素表示为为a(i,j)。 (2) (2) 单下标方式单下标方式以以m mn n的矩阵的矩阵a a为例,若元素为例,若元素a(i,j)a(i,j)则对应则对应的的“单下标单下标”为为s= (j-1)s= (j-1)m mi i。 3.3.2 3.3.2 矩阵元素矩阵元素a(1,2)a(4)a(2,3)a(8)142.2.子矩阵块的产生子矩阵块的产生(Multiple elemen

10、ts)子矩阵是从对应矩阵中取出一部分元素构成子矩阵是从对应矩阵中取出一部分元素构成的。的。子矩阵也可以利用逻辑矩阵(子矩阵也可以利用逻辑矩阵(logical matrix)来标识。)来标识。a(1 2,2 3)a(4 5;7 8)a(:,3)a(1:3,end)a(:,end)a(7:9)a(7:end)153. 3. 矩阵的赋值矩阵的赋值 矩阵的赋值有:全下标方式、单下标方式和全元矩阵的赋值有:全下标方式、单下标方式和全元素方式。素方式。4. 4. 矩阵元素的删除矩阵元素的删除 可以对矩阵的单个元素、子矩阵块和所有元素赋可以对矩阵的单个元素、子矩阵块和所有元素赋值为空矩阵进行删除操作值为空矩

11、阵进行删除操作 ,就是简单地将其赋值为就是简单地将其赋值为空矩阵空矩阵(用用表示表示)。EX:EX:a(:,3)= a(:,3)= % %删除一列元素删除一列元素a(1)= a(1)= % %删除一个元素,矩阵变为向量删除一个元素,矩阵变为向量a= a= % %删除所有元素为空矩阵删除所有元素为空矩阵 165. 生成大矩阵生成大矩阵(Concatenating Matrices)可以通过方括号可以通过方括号“”实现将小矩阵生成一实现将小矩阵生成一个较大的矩阵。个较大的矩阵。 例:例:a;a a;a 与与a,aa,a的区别的区别6. 矩阵的翻转矩阵的翻转可以通过矩阵翻转函数对矩阵进行翻转。可以通

12、过矩阵翻转函数对矩阵进行翻转。reshape flipdim rot90 transpose fliplr ctranspose flipud 173.3.3 字符串字符串(Character Arrays)一个字符串由多个字符组成,用单引号一个字符串由多个字符组成,用单引号()来界定。字符来界定。字符串是按行向量进行存储的。串是按行向量进行存储的。 1. 字符串占用的字节字符串占用的字节每一个字符会占用两个字节。每一个字符会占用两个字节。 str2=I like MATLAB str2=I like MATLAB % %重复单引号来输入含有单引号的字符串重复单引号来输入含有单引号的字符串3.

13、 字符串函数字符串函数length:用来计算字符串的长度。:用来计算字符串的长度。double:用来查看字符串的:用来查看字符串的ASCII码储存内容。码储存内容。char:用来将:用来将ASCII码转换成字符串形式。码转换成字符串形式。class或或ischar:用来判断某一个变量是否为字符串。:用来判断某一个变量是否为字符串。183. 3. 使用一个变量来储存多个字符串使用一个变量来储存多个字符串(1) (1) 多个字符串组成一个新的行向量多个字符串组成一个新的行向量将多个字符串变量直接用将多个字符串变量直接用“, ,”连接。连接。(2) (2) 使用二维字符数组使用二维字符数组每个字符串

14、放在一行构成二维字符。每个字符串放在一行构成二维字符。(3) (3) 使用使用str2matstr2mat、strvcatstrvcat和和charchar函数,函数,总是按总是按最长的设置,不足的末尾用空格补齐。最长的设置,不足的末尾用空格补齐。 例如:例如: str6=str2mat(str1,str2,str3) str6=str2mat(str1,str2,str3) 195. 5. 执行字符串执行字符串使用使用eval命令直接命令直接“执行执行”某一字符串。某一字符串。EX: str9=a=2EX: str9=a=2* *55 eval(str9) eval(str9) % %执行字

15、符串执行字符串a =a = 10 106. 6. 显示字符串显示字符串直接使用直接使用dispdisp命令显示字符串。命令显示字符串。 disp disp(请输入请输入2 2* *2 2的矩阵的矩阵a)a)203.3.43.3.4矩阵和数组运算矩阵和数组运算1. 1. 矩阵运算的函数矩阵运算的函数pdet(Xdet(X) ):计算方阵行列式:计算方阵行列式prank(X)rank(X):求矩阵的秩。:求矩阵的秩。pinv(X)inv(X):求矩阵的逆阵。:求矩阵的逆阵。 inv(Xinv(X)=X)=X-1-1pv,d=eig(Xv,d=eig(X) ):计算矩阵特征值和特征向:计算矩阵特征值

16、和特征向量量pdiag(Xdiag(X) ):产生:产生X X矩阵的对角阵矩阵的对角阵212. 2. 矩阵和数组的算术运算矩阵和数组的算术运算(1) (1) 矩阵和数组的加矩阵和数组的加(addition)、减运算、减运算(subtraction)矩阵加、减运算表达式分别为矩阵加、减运算表达式分别为“A+BA+B”、“A-BA-B”。(2) (2) 矩阵和数组的乘法运算矩阵和数组的乘法运算(muliplication)l矩阵的乘法运算表达式为矩阵的乘法运算表达式为“A A* *B B” 。矩阵矩阵A A的列数必须等于矩阵的列数必须等于矩阵B B的行数,除非其中有的行数,除非其中有一个是标量。一

17、个是标量。l数组的乘法运算表达式为数组的乘法运算表达式为“A.A.* *B” B” ,表示数组,表示数组A A和和B B中的对应元素相乘。中的对应元素相乘。A A和和B B数组必须大小相同,除数组必须大小相同,除非其中有一个是标量。非其中有一个是标量。22(3) (3) 矩阵和数组的除法矩阵和数组的除法(division)矩阵的除法运算表达式有两种:矩阵的除法运算表达式有两种:“ABAB”和和“A/BA/B”,运算符为,运算符为“ ”和和“/ /”分别表示左除和右除。分别表示左除和右除。pX=A/B是是X*A=B的解,的解,A/B=A*B-1。pX=AB是方程是方程A*X=B的解,的解,AB=

18、A-1*B。数组的除法运算表达式有两种:数组的除法运算表达式有两种:“A.BA.B”和和“A./B”A./B”,表示数组相应元素左除和右除。,表示数组相应元素左除和右除。A A和和B B数组必须大小相同,除非其中有一个是标量数组必须大小相同,除非其中有一个是标量。23数学运算符号及标点符号(1)MATLAB的每条命令后,若为逗号或无标点符号,的每条命令后,若为逗号或无标点符号, 则显示命令的结果;若命令后为分号,则禁止显示结果则显示命令的结果;若命令后为分号,则禁止显示结果. (2)“%” 后面所有文字为注释后面所有文字为注释. (3) “.”表示续行表示续行.+ 加法运算,适用于两个数或两个

19、同阶矩阵相加. 减法运算 * 乘法运算 .* 点乘运算 / 除法运算 ./ 点除运算 乘幂运算 . 点乘幂运算 反斜杠表示左除. 24【例【例3.12】已知方程组,】已知方程组,用矩阵除法来解线性方程组。用矩阵除法来解线性方程组。将该方程变换成将该方程变换成AX=B的形式。的形式。 A=2 -1 3;3 1 -5;4 -1 1A=2 -1 3;3 1 -5;4 -1 1B=5;5;9 B=5;5;9 X=AB X=AB9xx4x55xx3x53xx2x321321321114513312A955B X=ABX = 2 -1 025(4) (4) 矩阵和数组的乘方矩阵和数组的乘方(power)矩

20、阵乘方的运算表达式为矩阵乘方的运算表达式为“ABAB”,其中,其中A A可以是可以是矩阵或标量。矩阵或标量。数组乘方的运算表达式数组乘方的运算表达式“A.BA.B”。3. 3. 矩阵和数组的转置矩阵和数组的转置(transpose)矩阵的转置运算表示为矩阵的转置运算表示为AA如果矩阵如果矩阵A A是是复数矩阵,则为共轭转置。复数矩阵,则为共轭转置。数组的转置运算表示为数组的转置运算表示为A.A.如果数组如果数组A A是是复数数组,则不是共轭转置。复数数组,则不是共轭转置。264. 4. 矩阵和数组的数学函数矩阵和数组的数学函数MATLABMATLAB中中expexp、sqrtsqrt、sins

21、in、coscos等数学函数可以等数学函数可以直接使用在数组上,这些运算是分别对数组的每个直接使用在数组上,这些运算是分别对数组的每个元素进行运算。元素进行运算。expmexpm、sqrtmsqrtm、logmlogm等数学函数用于矩阵运算。等数学函数用于矩阵运算。n比较:比较:round 、fix 、floor 、ceil n比较:比较:sqrt、sqrtm275. 5. 关系操作和逻辑操作关系操作和逻辑操作(1) (1) 关系运算(关系运算(relational operators)关系操作符有:关系操作符有: 、= 、=、 = =(= =(等于等于) )、 =(=(不等于不等于) )。关

22、系运算规则:关系运算规则:如果两个标量,则结果为真如果两个标量,则结果为真(1)(1)或假或假(0)(0)。如果比较的两个数组变量,则必须大小相同,数如果比较的两个数组变量,则必须大小相同,数组的元素为组的元素为0 0或或1 1。如果比较一个数组和一个标量,则把数组的每个如果比较一个数组和一个标量,则把数组的每个元素分别与标量比较。元素分别与标量比较。 、= 、=仅对变量的实部进行比较,而仅对变量的实部进行比较,而= = = = 和和 = = 则同时对实部和虚部进行比较。则同时对实部和虚部进行比较。28(2) (2) 逻辑运算逻辑运算(Logical Operators)逻 辑 操 作 符 有

23、 :逻 辑 操 作 符 有 :&(&(and) )、|(|(or) )、(not) )和和xorxor、&(&(先先决与决与) )、| (| (先决或先决或) ) 。【例【例3.16】A=magic(3)B=eyes(3)C=A&BD=A|B296. 6. 运算符优先级运算符优先级在在MATLABMATLAB中各种运算符的优先级如下:中各种运算符的优先级如下:(矩阵转置矩阵转置) )、(矩阵幂矩阵幂) )和和.(.(数组转置数组转置) )、.(.(数组幂数组幂) ) ( (逻辑非逻辑非) ) * *( (乘乘) )、/(/(左除左除) )、(右除右除)

24、)和和. .* *( (点乘点乘) )、./(./(点左除点左除) )、.(.(点右除点右除) ) + +、-(-(加减加减) ): (: (冒号冒号) ) 、= 、=、= = &(&(逻辑与逻辑与) ) |( |(逻辑或逻辑或) ) &( &(先决与先决与) ) |( |(先先决或决或) )303.3.5 3.3.5 多维数组多维数组(Multidementional Arrays) 三维数组用三个下标表示,在二维数组的基三维数组用三个下标表示,在二维数组的基础上增加了一维称为页,三维数组可以看成础上增加了一维称为页,三维数组可以看成“长长方体方体”。 三维数

25、组的元素存放遵循三维数组的元素存放遵循“单下标单下标”的编号的编号规则:规则:第一页第一列下接该页的第二列,下面再第一页第一列下接该页的第二列,下面再接第三列,依此类推;第一页的最后列下面接第接第三列,依此类推;第一页的最后列下面接第二页第一列。二页第一列。31多维数组的创建多维数组的创建(1) (1) 通过通过“全下标全下标”元素赋值方式创建元素赋值方式创建(2) (2) 由函数由函数onesones、zeroszeros、randrand和和randnrandn直接创建直接创建(3) (3) 利用函数生成数组利用函数生成数组 将一系列数组沿着特定的维连接成一个多维数将一系列数组沿着特定的维

26、连接成一个多维数组。组。 cat(cat(维维,p1,p2,),p1,p2,) 按指定行列数放置模块数组生成多维数组按指定行列数放置模块数组生成多维数组repmat(prepmat(p) )。 在总元素的数目不变的前提下重新确定数组在总元素的数目不变的前提下重新确定数组的行列数来重组数组。的行列数来重组数组。reshape(p)reshape(p)323.4 3.4 多项式多项式(polynomial)多项式按降幂排列为:多项式按降幂排列为:p(x)=anxn+an-1xn-1+a1x+a0用行向量表示为:用行向量表示为:p=an an-1 a1 a0即把多项式的各项系数按降幂次序排放成行向量

27、即把多项式的各项系数按降幂次序排放成行向量,如果多项式中缺某幂次项,则用零代替该幂次项,如果多项式中缺某幂次项,则用零代替该幂次项的系数。的系数。 例如: x3+21x2+20 x p1=1 21 20 0 333.4.13.4.1多项式的求值、求根和部分分式多项式的求值、求根和部分分式1. 1. 多项式求值多项式求值函数函数polyval(p,spolyval(p,s) )可以用来计算多项式在给定变可以用来计算多项式在给定变量时的值。量时的值。2. 多项式求根多项式求根Roots:用来计算多项式的根。:用来计算多项式的根。Poly:根据多项式的根来计算多项式的系数。:根据多项式的根来计算多项

28、式的系数。3. 特征多项式特征多项式函数函数poly计算矩阵的特征多项式的系数。计算矩阵的特征多项式的系数。特征值用特征值用roots函数来计算。函数来计算。 344. 部分分式展开部分分式展开用用residue函数来实现将分式表达式进行函数来实现将分式表达式进行多项式的部分分式展开。多项式的部分分式展开。r,p,k=residue(b,a)b,a=residue(r,p,k)例如例如: 展开展开k(s)npsnr2ps2r1ps1rA(s)B(s)s20s21s2)100(s23s101s5.263220s4.7368353.4.23.4.2多项式的乘除和微积分运算多项式的乘除和微积分运算1. 1. 多项式的乘法和除法多项式的乘法和除法多项式的乘法和除法运算分别使用函数多项式的乘法和除法运算分别使用函数convconv和和deconvdeconv来实现,这两个函数也可以对应于卷积和来实现,这两个函数也可以对应于卷积和解卷运算。解卷运算。p=conv(pl,p2) q,r = deconv(v,u)例如,例如,2. 多项式的微分和积分多项式的微分和积分多项式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论