《《MATLAB教程及实训》(教程全集).ppt》由会员分享,可在线阅读,更多相关《《MATLAB教程及实训》(教程全集).ppt(66页珍藏版)》请在金锄头文库上搜索。
1、第第2 2章章 MATLABMATLAB基本运算基本运算2.1 2.1 数据类型数据类型 2.2 2.2 矩阵和数组的算术运算矩阵和数组的算术运算2 .3 2 .3 字符串字符串2.4 2.4 日期和时间日期和时间2.5 2.5 结构体和元胞数组结构体和元胞数组2.6 2.6 多维数组多维数组2.7 2.7 关系运算和逻辑运算关系运算和逻辑运算2.8 2.8 数组的信息获取数组的信息获取2.9 2.9 多项式多项式2.12.1数据类型数据类型MATLAB 7.3MATLAB 7.3定义了定义了1515种基本的数据类型,包括整型、种基本的数据类型,包括整型、浮点型、字符型和逻辑型等,用户甚至可以
2、定义自己的浮点型、字符型和逻辑型等,用户甚至可以定义自己的数据类型。数据类型。 2.1.12.1.1常数和变量常数和变量1. 1. 常数常数2. 2. 变量变量MATLABMATLAB的变量命名规则如下:的变量命名规则如下:变量名区分字母的大小写。例如,变量名区分字母的大小写。例如,“a”a”和和“A”A”是不同的变量。是不同的变量。变量名不能超过变量名不能超过6363个字符,第个字符,第6363个字符后的字个字符后的字符被忽略。符被忽略。变量名必须以字母开头,变量名的组成可以是变量名必须以字母开头,变量名的组成可以是任意字母、数字或者下划线,但不能含有空格和任意字母、数字或者下划线,但不能含
3、有空格和标点符号(如,。标点符号(如,。% %等)。等)。关键字(如关键字(如ifif、whilewhile等)不能作为变量名。等)不能作为变量名。练习练习(2 2)特殊变量)特殊变量2.1.22.1.2整数和浮点数整数和浮点数1. 1. 整数整数练习练习2. 2. 浮点数浮点数数据类型数据类型存储空间存储空间表示范围表示范围类型转换类型转换函数函数单精度型单精度型singlesingle4 4字节字节3.402823.4028210103838 +3.40282+3.4028210103838single()single()双精度型双精度型doubledouble8 8字节字节1.79769
4、1.797691010308308 +1.79769+1.797691010308308double()double()2.1.3 2.1.3 复数复数MATLABMATLAB用特殊变量用特殊变量“i”i”或或“j”j”表示虚表示虚数的单位。数的单位。复数的产生可以有几种方式:复数的产生可以有几种方式:z=z=a+ba+b*i*i或或z=z=a+ba+b*j*jz=z=a+bia+bi或或z=z=a+bja+bj(当(当b b为常数时)为常数时)z=r*z=r*exp(iexp(i*theta)*theta)z=z=complex(a,bcomplex(a,b) )2.2 2.2 矩阵和数组的
5、算术运算矩阵和数组的算术运算空数组(空数组(empty arrayempty array):没有元素的数组;):没有元素的数组;标量(标量(scalarscalar):是指):是指1111的矩阵,即为只含的矩阵,即为只含一个数的矩阵;一个数的矩阵;向量(向量(vectorvector):是指):是指1n1n或或n1n1的矩阵,即的矩阵,即只有一行或者一列的矩阵;只有一行或者一列的矩阵;矩阵(矩阵(matrixmatrix):是一个矩形的):是一个矩形的mnmn数组,即数组,即二维数组;二维数组;数组(数组(arrayarray):是指多维数组):是指多维数组mnkmnk,其中矩阵和向量都是数组
6、的特例。其中矩阵和向量都是数组的特例。2.2.1 2.2.1 数组的创建数组的创建在在MATLABMATLAB中矩阵的创建应遵循以下基本中矩阵的创建应遵循以下基本常规:常规:矩阵元素应用方括号(矩阵元素应用方括号()括住;)括住;每行内的元素间用逗号(每行内的元素间用逗号(, ,)或空格隔开;)或空格隔开;行与行之间用分号(行与行之间用分号(; ;)或回车键隔开;)或回车键隔开;元素可以是数值或表达式。元素可以是数值或表达式。1. 1. 空数组空数组2 2向量向量向量包括行向量(向量包括行向量(row vectorrow vector)和列向量)和列向量(column vectorcolumn
7、 vector),即),即1n1n或或n1n1的矩阵。的矩阵。(1 1)使用)使用from:step:tofrom:step:to方式生成向量方式生成向量如果是等差的行向量,可以使用如果是等差的行向量,可以使用“from:step:tofrom:step:to”方式生成:方式生成:from:step:tofrom:step:to说明:说明:fromfrom、stepstep和和toto分别表示开始值、步长分别表示开始值、步长和结束值;当和结束值;当stepstep省略时则默认为省略时则默认为step=1step=1;当;当stepstep省略或省略或step0step0而而fromtofrom
8、to时为空矩阵,当时为空矩阵,当step0step0而而fromtofrom a=1:4;linspace(2,5,4);9:-1:6 a=1:4;linspace(2,5,4);9:-1:6a =a = 1 2 3 4 1 2 3 4 2 3 4 5 2 3 4 5 9 8 7 6 9 8 7 6 b=1 2 3 b=1 2 34 5 64 5 6% %使用回车分隔行使用回车分隔行b =b = 1 2 3 1 2 3 4 5 6 4 5 62.2.2 2.2.2 数组的操作数组的操作1 1数组的元素数组的元素(1 1)全下标方式)全下标方式全下标方式是指全下标方式是指n n维数组维数组中元素
9、通过中元素通过n n个下标来引用:个下标来引用:a(d1,d2,d3.)a(d1,d2,d3.)(2 2)单下标方式)单下标方式数组元素用单下标引用,就是先把数组的所有数组元素用单下标引用,就是先把数组的所有列按先左后右的次序连接成列按先左后右的次序连接成“一维长列一维长列”,然后,然后对元素位置进行编号。对元素位置进行编号。 以以mnmn的矩阵的矩阵a a为例,元素为例,元素a(i,ja(i,j) )对应的单下对应的单下标标= (j-1)m= (j-1)mi i。2 2子矩阵的产生图子矩阵的产生图2-5 2-5 数组数组a a的子矩阵的子矩阵(1 1)用全下标方式)用全下标方式注意注意: :
10、下标为下标为“:”:”表示向量的所有元素,表示向量的所有元素,下标为下标为“end”end”表示某一维中的最后一个元表示某一维中的最后一个元素。素。 (2 2)用单下标方式)用单下标方式 a(10;11;12) a(10;11;12) a(10:12) a(10:12) a(10:end) a(10:end) a(10;11;end) a(10;11;end)练习练习(3 3)逻辑索引方式)逻辑索引方式逻辑索引方式是通过一个元素值为逻辑索引方式是通过一个元素值为0 0或或1 1的逻辑的逻辑数组为下标,其大小和对应数组相同。数组为下标,其大小和对应数组相同。例例2-82-8 使用逻辑索引方式产生
11、图使用逻辑索引方式产生图2-62-6中的第四中的第四列子矩阵。列子矩阵。 a=1 2 3 4;2 3 4 5;9 8 7 6; a=1 2 3 4;2 3 4 5;9 8 7 6; l1=logical(1 1 1) l1=logical(1 1 1)l1 =l1 = 1 1 1 1 1 1 l2=logical(0 0 0 1) l2=logical(0 0 0 1)l2 =l2 = 0 0 0 1 0 0 0 1 a(l1,l2) a(l1,l2)ansans = = 4 4 5 5 6 63 3数组的赋值数组的赋值数组的赋值包括全下标方式、单下标方数组的赋值包括全下标方式、单下标方式和全
12、元素方式。式和全元素方式。全下标方式:全下标方式:a(i,j,ka(i,j,k)=b)=b,给,给a a数组的数组的部分元素赋值,则部分元素赋值,则b b数组的行列数必须等于数组的行列数必须等于a a数组的行列数。数组的行列数。单下标方式:单下标方式:a(na(n)=b)=b,b b为向量,元素个为向量,元素个数必须等于数必须等于a a矩阵的元素个数。矩阵的元素个数。全元素方式:全元素方式:a=ba=b,给,给a a数组的所有元素数组的所有元素赋值,则赋值,则b b数组的元素总数必须等于数组的元素总数必须等于a a矩阵矩阵的元素总数,但行列数不一定相等。的元素总数,但行列数不一定相等。4 4矩
13、阵的合并矩阵的合并矩阵的合并就是把两个以上的矩阵连接起来得矩阵的合并就是把两个以上的矩阵连接起来得到一个新矩阵,到一个新矩阵,“”符号可以作为矩阵合并操符号可以作为矩阵合并操作符,命令格式如下:作符,命令格式如下:c=a b c=a b % %将矩阵将矩阵a a和和b b水平方向合水平方向合并为并为c cc=c=a;ba;b % %将矩阵将矩阵a a和和b b垂直方向合并为垂直方向合并为c c5 5数组元素的删除数组元素的删除在在MATLABMATLAB中可以对数组中的单个元素、子矩阵中可以对数组中的单个元素、子矩阵和所有元素进行删除操作,删除就是将其赋值为和所有元素进行删除操作,删除就是将其
14、赋值为空矩阵(用空矩阵(用表示)。表示)。2.2.3 2.2.3 矩阵和数组函数矩阵和数组函数 1. 1. 矩阵的常用函数矩阵的常用函数det(xdet(x) )、rank(xrank(x) )、inv(xinv(x) )、 v,dv,d=eig(xeig(x) )、diag(xdiag(x) )、 q,rq,r=qr(xqr(x) )、triu(xtriu(x) )和和tril(xtril(x) )2 2数组翻转数组翻转常用数组翻转函数常用数组翻转函数 :flipud(xflipud(x) )、fliplr(xfliplr(x) )、flipdim(x,dimflipdim(x,dim) )
15、、rot90(x,k)rot90(x,k)3 3数组查找数组查找一般用于在比较命令后面,查找非零元素。一般用于在比较命令后面,查找非零元素。其命令格式如下:其命令格式如下: a,ba,b,=,=find(xfind(x) )n=n=find(xfind(x) )4 4数据统计数据统计MATLABMATLAB的数据统计分析是按列进行的,包的数据统计分析是按列进行的,包括得出各列的最大值、最小值等统计。括得出各列的最大值、最小值等统计。2.2.4 2.2.4 矩阵和数组的算术运算矩阵和数组的算术运算1 1矩阵运算矩阵运算矩阵的基本运算是矩阵的基本运算是+ +、- -、和乘方(和乘方( )等。等。(
16、1 1)矩阵的加、减运算)矩阵的加、减运算A+B A+B 和和A-BA-B(2 2)矩阵的乘法运算)矩阵的乘法运算A*BA*B(3 3)矩阵的除法运算)矩阵的除法运算矩阵的除法运算表达式有两种:矩阵的除法运算表达式有两种:ABAB% %左除左除A/BA/B% %右除右除(4 4)矩阵的乘方)矩阵的乘方ABAB(5 5)矩阵的转置)矩阵的转置AA% %矩阵矩阵A A的转置的转置2 2数组运算数组运算数组的乘、除、乘方和转置运算符号为数组的乘、除、乘方和转置运算符号为矩阵的相应运算符前面加矩阵的相应运算符前面加“.” .” ,数组的,数组的乘、除、乘方和转置运算格式如下:乘、除、乘方和转置运算格式
17、如下:A.*BA.*B% %数组数组A A和数组和数组B B对应元素相乘对应元素相乘A./BA./B% %数组数组A A除以数组除以数组B B的对应元素的对应元素A.BA.B% %数组数组B B除以数组除以数组A A的对应元素的对应元素 A.BA.B% %数组数组A A和数组和数组B B对应元素的乘方对应元素的乘方A.A.% %数组数组A A的转置的转置练习练习例例2-142-14 使用数组算术运算法则进行向使用数组算术运算法则进行向量的运算。量的运算。 t=0:pi/3:2*pi; t=0:pi/3:2*pi;%t%t为行为行向量向量 x= x=sin(tsin(t)*)*cos(tcos(
18、t) )? Error using = ? Error using = mtimesmtimesInner matrix dimensions must agree.Inner matrix dimensions must agree. x= x=sin(tsin(t).*).*cos(tcos(t) )x =x = 0 0.4330 -0.4330 -0.0000 0 0.4330 -0.4330 -0.0000 0.4330 -0.4330 -0.00000.4330 -0.4330 -0.0000 y= y=sin(t)./cos(tsin(t)./cos(t) )y =y = 0 1.
19、7321 -1.7321 -0.0000 0 1.7321 -1.7321 -0.0000 1.7321 -1.7321 -0.00001.7321 -1.7321 -0.00002.2.5 2.2.5 稀疏矩阵稀疏矩阵一个矩阵中如果包含很多元素值为一个矩阵中如果包含很多元素值为0 0,则此,则此矩阵可以只存储少量的非矩阵可以只存储少量的非0 0元素,这个矩阵称元素,这个矩阵称为稀疏矩阵(为稀疏矩阵(Sparse MatrixSparse Matrix)。)。1. 1. 创建稀疏矩阵创建稀疏矩阵sparsesparse函数的语法格式如下:函数的语法格式如下:sparse(i,j,s,m,nsp
20、arse(i,j,s,m,n) ) % %直接创建稀疏矩阵直接创建稀疏矩阵 sparse(psparse(p) %) %由全元素矩阵由全元素矩阵p p转换为稀疏矩转换为稀疏矩阵阵2. 2. 稀疏矩阵的存储空间稀疏矩阵的存储空间3. 3. 稀疏矩阵的运算稀疏矩阵的运算稀疏矩阵的标准数学运算按照以下原则:稀疏矩阵的标准数学运算按照以下原则:如果二元运算的两个操作数中有一个是全元素如果二元运算的两个操作数中有一个是全元素矩阵一个是稀疏矩阵,则对于矩阵一个是稀疏矩阵,则对于“+”+”、“-”-”、“*”“*”、“” ” 运算结果为全元素矩阵,而运算结果为全元素矩阵,而“&”&”、“.* ”.* ”等运
21、算结果为稀疏矩阵;等运算结果为稀疏矩阵; 如果函数的输入参数是矩阵,输出的参数为矩如果函数的输入参数是矩阵,输出的参数为矩阵,则输出参数以输入矩阵的方式来表示,即当阵,则输出参数以输入矩阵的方式来表示,即当输入参数为稀疏矩阵时,输出参数也是稀疏矩阵。输入参数为稀疏矩阵时,输出参数也是稀疏矩阵。2.3 2.3 字符串字符串2.3.1 2.3.1 创建字符串创建字符串字符串由多个字符组成,是字符串由多个字符组成,是1n1n的字符的字符数组;每一个字符都是字符数组的一个元数组;每一个字符都是字符数组的一个元素,以素,以ASCIIASCII码的形式存放并区分大小,而码的形式存放并区分大小,而显示的形式
22、则是可读的字符。显示的形式则是可读的字符。1.1.创建字符串创建字符串 s1= s1=matlabmatlab 7.3 7.3s1 =s1 =matlabmatlab 7.3 7.3(1 1)直接赋值)直接赋值用单引号用单引号()()括起字符来直接赋值创建字符串。括起字符来直接赋值创建字符串。使用两个单引号使用两个单引号()()输入字符串中的单引号输入字符串中的单引号 s3= s3=显示显示matlabmatlabs3 =s3 =显示显示matlabmatlab (2 2)多个字符串组合)多个字符串组合 str2=s1;s2, ;s3 str2=s1;s2, ;s3str2 =str2 =ma
23、tlabmatlab 7.3 7.3字符串字符串 显示显示 matlabmatlab 2. 2. 字符数组的存储空间字符数组的存储空间MATLABMATLAB在存储字符串时,每一个字符以在存储字符串时,每一个字符以ASCIIASCII码的形式码的形式存放,占用两个字节。存放,占用两个字节。练习练习2.3.2 2.3.2 字符串函数字符串函数1. 1. 字符串合并字符串合并strcatstrcat函数用于将字符串水平连接合并成一个新函数用于将字符串水平连接合并成一个新字符串,合并的同时会将字符串尾的空格删除。语字符串,合并的同时会将字符串尾的空格删除。语法格式如下:法格式如下:strcat(s1
24、,s2,)strcat(s1,s2,)% %将将s1s1,s2s2合并成一个长字合并成一个长字符串符串char(s1,s2,)char(s1,s2,)% %将将s1s1,s2s2合并成一个字符合并成一个字符数组数组strvcat(s1,s2,)strvcat(s1,s2,) % %将将s1s1,s2s2合并成一个字符合并成一个字符数组数组2. 2. 字符串与数值的转换字符串与数值的转换absabs将字符串转换为将字符串转换为ASCIIASCII码数值码数值str2numstr2num将字符串转换为数值将字符串转换为数值str2doublestr2double将元胞字符串数组转换为数将元胞字符串
25、数组转换为数值值3. 3. 字符串的其他操作字符串的其他操作MATLAB 7.3MATLAB 7.3还可以对字符串进行比较、还可以对字符串进行比较、查找、运行等操作。查找、运行等操作。例例2-192-19 使用字符串函数进行运算。使用字符串函数进行运算。 strstr=a+b,c+da+b,c+d,strstr = =a+b,c+da+b,c+d, , str1=strrep(str1,*2) str1=strrep(str1,*2) % %将将, ,用用* *2 2替换替换str1 =str1 =a+ba+b*2*2 a=5 a=5 b=2 b=2 eval(str1) eval(str1)
26、% %执行字符串执行字符串str1str1ansans = = 9 9 str2=upper(str2) str2=upper(str2)% %将字符串转换为将字符串转换为大写字母大写字母str2 =str2 =C+D,C+D,练习练习2.4 2.4 日期和时间日期和时间 2.4.12.4.1日期时间的表示格式日期时间的表示格式MATLAB 7.3MATLAB 7.3以三种格式表示:日期字符串、连续的以三种格式表示:日期字符串、连续的日期数值和日期向量,不同的日期格式可以相互转换。日期数值和日期向量,不同的日期格式可以相互转换。1. 1. 日期格式日期格式(1 1)日期字符串)日期字符串日期字
27、符串是最常用的,有多种输出格式。日期字符串是最常用的,有多种输出格式。例,例,“20072007年年1 1月月1 1日日”可以表示为:可以表示为: 01-Jan-01-Jan-2007 08:50:102007 08:50:10、01-Jan-200701-Jan-2007、01/01/200701/01/2007、 等。等。 (2 2)连续的日期数值)连续的日期数值733043733043(3 3)日期向量)日期向量 year month day hour minute year month day hour minute second second 2.4.2 2.4.2 日期时间函数日期
28、时间函数1. 1. 获取系统时间获取系统时间datedate:按照日期字符串格式获取当前系统时间;:按照日期字符串格式获取当前系统时间;nownow:按照连续的日期数值格式获取当前系统时间;:按照连续的日期数值格式获取当前系统时间;clockclock:按照日期向量格式获取当前系统时间。:按照日期向量格式获取当前系统时间。2. 2. 提取日期时间信息提取日期时间信息分别使用分别使用yearyear、monthmonth、dayday、hourhour、minuteminute、secondsecond函数。函数。3. 3. 日期时间的显示格式日期时间的显示格式日期时间的显示可以使用日期时间的显
29、示可以使用datestrdatestr函数显示为字符函数显示为字符串的样式。串的样式。datestrdatestr函数的格式如下:函数的格式如下:datestr(d,fdatestr(d,f) )% %将日期按指定格式显示将日期按指定格式显示4. 4. 计时函数计时函数(1 1)cputimecputime方法方法cputimecputime是返回是返回MATLABMATLAB启动以来的启动以来的CPUCPU时间:时间:程序执行的时间程序代码执行结束后的程序执行的时间程序代码执行结束后的cputimecputime在程序代码执行前的在程序代码执行前的cputimecputime(2 2)tic
30、/tic/toctoc方法方法tictic在程序代码开始用于启动的一个计时器;在程序代码开始用于启动的一个计时器;toctoc放在程序代码的最后,用于终止计时器的运放在程序代码的最后,用于终止计时器的运行,并返回计时时间就是程序运行时间。行,并返回计时时间就是程序运行时间。(3 3)etimeetime方法方法etimeetime方法使用方法使用etimeetime函数来获得程序运行时间,函数来获得程序运行时间,etimeetime函数的命令格式如下:函数的命令格式如下:etime(t1,t0)etime(t1,t0)% %返回返回t1-t0t1-t0的值的值2.5 2.5 结构体和元胞数组结
31、构体和元胞数组2.5.1 2.5.1 元胞数组元胞数组元胞数组是常规数值数组的扩展,其基元胞数组是常规数值数组的扩展,其基本元素是元胞,每一个元胞可以看成是一本元素是元胞,每一个元胞可以看成是一个单元(个单元(CellCell),用来存放各种不同类型),用来存放各种不同类型不同尺寸的数据,如矩阵、多维数组、字不同尺寸的数据,如矩阵、多维数组、字符串、元胞数组和结构体。符串、元胞数组和结构体。元胞数组可以是一维、二维或多维,使元胞数组可以是一维、二维或多维,使用花括号(用花括号()表示,每一个元胞以下标)表示,每一个元胞以下标区分,下标的编码方式也与矩阵相同,分区分,下标的编码方式也与矩阵相同,
32、分为单下标方式和全下标方式。为单下标方式和全下标方式。1. 1. 创建元胞数组创建元胞数组(1 1)直接创建)直接创建 A=cell1,1 2;3 4;1 A=cell1,1 2;3 4;1 2,matlab,0:1:52,matlab,0:1:5 A(1,1)=cell1; A(1,1)=cell1; A(1,2)=1 2;3 4; A(1,2)=1 2;3 4; A(2,1)=1 2,matlab; A(2,1)=1 2,matlab; A(2,2)=0:1:5 A(2,2)=0:1:5 A1,1=cell1; A1,1=cell1; A1,2=1 2;3 4; A1,2=1 2;3 4;
33、 A2,1=1 2,matlab; A2,1=1 2,matlab; A2,2=0:1:5 A2,2=0:1:5cell 1,1 cell 1,2 cell 2,1 cell 2,2 cell10 1 2 3 4 51 23 41 2matlab例例2-222-22 使用使用cellcell函数创建元胞数组。函数创建元胞数组。 A=cell(2,2) A=cell(2,2) % %创建空的元胞数组创建空的元胞数组 A1,1=cell1 A1,1=cell1(2 2)使用)使用cellcell函数创建函数创建cellcell函数创建元胞数组的语法格式:函数创建元胞数组的语法格式:A=A=cell
34、(m,ncell(m,n) )% %创建创建mnmn元胞数组元胞数组2. 2. 元胞数组的操作元胞数组的操作 (1 1)用)用取元胞数组的元素内容取元胞数组的元素内容 s=C2,1 s=C2,1% %全下标方式全下标方式 s=C2 s=C2% %单下标方式单下标方式(2 2)用)用()()取元胞数组的元素取元胞数组的元素 n=C(2,1) n=C(2,1) % %全下标方全下标方式式n = n = 1x4 double 1x4 double(3 3)用)用dealdeal函数取多个元胞元素的内容函数取多个元胞元素的内容2.5.2 2.5.2 结构体结构体结构体的基本组成是结构,每一个结构都包含
35、结构体的基本组成是结构,每一个结构都包含多个字段(多个字段(FieldsFields),结构体只有划分了字段以),结构体只有划分了字段以后才能使用。后才能使用。1. 1. 创建结构体创建结构体(1 1)直接创建)直接创建直接使用赋值语句创建结构体,用直接使用赋值语句创建结构体,用“结构体名结构体名. .字段名字段名”的格式赋值。的格式赋值。 ps(1).name= ps(1).name=曲线曲线1;1;(2 2)利用)利用structstruct函数创建函数创建struct(field1,struct(field1,值值1,filed2,1,filed2,值值2,)2,)% %创建结构体将值赋
36、给各字段创建结构体将值赋给各字段2. 2. 获取结构体内部数据获取结构体内部数据(1 1)使用)使用“.”.”符号获取符号获取(2 2)用)用getfieldgetfield函数获取函数获取getfield(A,A_index,fieldname,fgetfield(A,A_index,fieldname,field_indexield_index)(3 3)使用)使用fieldnamesfieldnames函数获取结构体的函数获取结构体的所有字段所有字段fieldnames (array)%fieldnames (array)%获取结构体的所有获取结构体的所有字段字段(4 4)使用)使用“”
37、合并相同字段的数据合并相同字段的数据3. 3. 结构体的操作函数结构体的操作函数(1 1)删除结构体的字段)删除结构体的字段rmfield(A,fieldnamermfield(A,fieldname)% %删除删除字段字段(2 2)修改结构体的数据)修改结构体的数据setfield(A,A_index,fieldname,fsetfield(A,A_index,fieldname,field_indexield_index,值值) )(3 3)结构体转换为元胞数组)结构体转换为元胞数组 psps=setfield(ps,1,color,green);=setfield(ps,1,color,
38、green);2.6 2.6 多维数组多维数组三维数组的元素存放遵循三维数组的元素存放遵循“单下标单下标”的的编号规则:第一页第一列下接该页的第二编号规则:第一页第一列下接该页的第二列,下面再接第三列,依此类推;第一页列,下面再接第三列,依此类推;第一页的最后列下面接第二页第一列,如此进行,的最后列下面接第二页第一列,如此进行,直至结束。直至结束。1. 1. 多维数组的创建多维数组的创建(1 1)直接赋值创建)直接赋值创建(2 2)由二维数组扩展)由二维数组扩展(3 3)使用)使用catcat函数创建函数创建例例2-252-25 使用使用catcat函数创建多维数组。函数创建多维数组。 a=1
39、 2;3 4; a=1 2;3 4; b=10 9;8 7; b=10 9;8 7; c2=cat(3,a,b) c2=cat(3,a,b) % %按第三维连接按第三维连接c2(:,:,1) =c2(:,:,1) = 1 2 1 2 3 4 3 4c2(:,:,2) =c2(:,:,2) = 10 9 10 9 8 7 8 7 c2(1,1,2) c2(1,1,2) % %全下标方式的数全下标方式的数组元素组元素ansans = = 10 10 c2(6) c2(6) % %单下标方式的数组元素单下标方式的数组元素ansans = = 8 82.72.7关系运算和逻辑运算关系运算和逻辑运算2.
40、7.1 2.7.1 逻辑运算逻辑运算MATLAB 7.3MATLAB 7.3中逻辑型(中逻辑型(logicallogical)数据只)数据只有有“1”1”和和“0”0”,分别表示,分别表示truetrue和和falsefalse两两种状态,逻辑型变量只占种状态,逻辑型变量只占1 1个字节。个字节。函数函数logicallogical可以用来将数值型转换为逻可以用来将数值型转换为逻辑型,任何非零的数值都转换为逻辑辑型,任何非零的数值都转换为逻辑1 1,数,数值值0 0转换为逻辑转换为逻辑0 0。2.7.2 2.7.2 关系运算关系运算MATLAB 7.3MATLAB 7.3常用的关系操作符有常用
41、的关系操作符有 、= 、=、 = = =(等于)、(等于)、 =(不等于)。(不等于)。关系运算规则:关系运算规则:如果比较的两个变量都是标量,则结果为如果比较的两个变量都是标量,则结果为1 1(truetrue)或)或0 0(falsefalse););如果比较的两个变量都是数组,则必须尺寸大如果比较的两个变量都是数组,则必须尺寸大小相同,结果也是同样大小的数组;小相同,结果也是同样大小的数组;如果比较的是一个数组和一个标量,则把数组如果比较的是一个数组和一个标量,则把数组的每个元素分别与标量比较,结果为与数组大小的每个元素分别与标量比较,结果为与数组大小相同的数组。相同的数组。2.7.3
42、2.7.3 逻辑运算逻辑运算1. 1. 元素的逻辑运算元素的逻辑运算元素的逻辑运算是将数组中的元素一一进行逻元素的逻辑运算是将数组中的元素一一进行逻辑运算,常用的逻辑运算符:辑运算,常用的逻辑运算符:& &(与)、(与)、| |(或)、(或)、 (非)和(非)和xorxor(异或)。在逻辑运算中,非(异或)。在逻辑运算中,非0 0元元素表示素表示truetrue,0 0元素表示元素表示falsefalse。2. 2. 先决逻辑运算先决逻辑运算先决逻辑运算符有:先决逻辑运算符有:&(先决与)和(先决与)和|(先决(先决或)。或)。3. 3. 位逻辑运算位逻辑运算位逻辑运算函数有:位逻辑运算函数有
43、:bitandbitand(位与)、(位与)、bitorbitor(位或)、(位或)、bitcmpbitcmp(位非)和(位非)和bitxorbitxor(位(位异或)。异或)。练习练习2.7.4 2.7.4 运算符优先级运算符优先级各类运算符的优先级为:括号各类运算符的优先级为:括号算术运算术运算符算符关系运算符关系运算符逻辑运算符逻辑运算符各符号优先顺序为:各符号优先顺序为:括号括号() () 转置转置 . . 幂幂 . . 一元加减一元加减+ - + - 逻辑非逻辑非 乘乘* *. * . * 除除/ ./ . / ./ . 加加减减+ - + - 冒号冒号: : 关系运算关系运算 =
44、= a1=1 -6 11 -6 0; a1=1 -6 11 -6 0; b1=10; b1=10; r1,p1,k1=residue(b1,a1) r1,p1,k1=residue(b1,a1)% %将将G1G1部分分部分分式展开式展开r1 =r1 = 1.6667 1.6667 -5.0000 -5.0000 5.0000 5.0000 -1.6667 -1.6667p1 =p1 = 3.0000 3.0000 2.0000 2.0000 1.0000 1.0000 0 0k1 =k1 = 3. 3. 多项式的微积分多项式的微积分使用使用polyderpolyder函数来计算多项式的微分:函
45、数来计算多项式的微分:polyder(ppolyder(p) )% %计算计算p p的导数的导数polyder(a,bpolyder(a,b) ) % %计算计算a a和和b b乘积的乘积的导数导数 q,dq,d= = polyder(b,apolyder(b,a) ) % %计算计算a a和和b b商的导商的导数数MATLABMATLAB没有专门的多项式积分函数,但可没有专门的多项式积分函数,但可以通过以下的公式计算完成积分:以通过以下的公式计算完成积分:p./(length(p):-1:1),k %p./(length(p):-1:1),k %计算多项式计算多项式p p的积分的积分2.9.
46、3 2.9.3 多项式的拟合与插值多项式的拟合与插值1. 1. 多项式的拟合多项式的拟合多项式拟合是用一个多项式来逼近一组多项式拟合是用一个多项式来逼近一组给定的数据,是数据分析上的常用方法。给定的数据,是数据分析上的常用方法。(1 1)拟合函数)拟合函数p=p=polyfit(x,y,npolyfit(x,y,n) )% %由由x x和和y y得出多项式得出多项式p p说明:说明:x x、y y向量分别为数据点的横、纵向量分别为数据点的横、纵坐标;坐标;n n是拟合的多项式阶次;是拟合的多项式阶次;p p为拟合的为拟合的多项式,多项式,p p是是n+1n+1个系数构成的行向量。个系数构成的行
47、向量。 MATLAB 7.3提供了方便的曲线拟合图形用户接提供了方便的曲线拟合图形用户接口,可以直接在图形窗口中使用菜单进行多项式拟口,可以直接在图形窗口中使用菜单进行多项式拟合,在图形窗口中选择菜单合,在图形窗口中选择菜单“Tools”“Basic Fitting”,则出现,则出现“Basic Fitting”窗口。窗口。2. 2. 插值运算插值运算插值(插值(interpolationinterpolation)是在两个原始数)是在两个原始数据点之间根据一定的运算关系插入新的数据点之间根据一定的运算关系插入新的数据点,以便更准确地得出数据的变化规律。据点,以便更准确地得出数据的变化规律。一
48、维插值是指对一个自变量的插值,一维插值是指对一个自变量的插值,interp1interp1函数用来进行一维插值:函数用来进行一维插值:yiyi=interp1(x,y,xi,method)=interp1(x,y,xi,method)练习:练习:x=uint8(2.3e10)x=uint8(2.3e10),则,则x x所占的字节是所占的字节是_个。个。 A. 1 A. 1 B. 2 B. 2 C. 4 C. 4 D. 8D. 8答案:答案:A练习:练习:下列下列_是合法常量。是合法常量。A. 3*e10 A. 3*e10 B. 1e500 B. 1e500 C. -1.85e-56 C. -1
49、.85e-56 D. D. 10-210-2答案:答案:C练习:练习:已知已知x=0:10x=0:10,则,则x x有有_个元素。个元素。A. 10 A. 10 B. 11 B. 11 C. 9 C. 9 D. 12D. 12答案:答案:B练习:练习:已知已知x=0:10x=0:10,则,则x x有有_个元素。个元素。A. 10 A. 10 B. 11 B. 11 C. 9 C. 9 D. 12D. 12答案:答案:B练习:练习:已知数组已知数组a= a= ,则,则a(:,enda(:,end) )是指是指_ _ A. A. 所有元素所有元素 B. B. 第一行元素第一行元素C. C. 第三列
50、元素第三列元素 D. D. 第三行元素第三行元素答案:答案:C练习练习求解方程组求解方程组 练习:练习:已知已知s=s=显示显示hellohello,则,则s s的元素个的元素个数是数是_ _ A. 12 A. 12 B. 9 B. 9 C. 7 C. 7 D. 18D. 18答案:答案:A练习:练习:运行字符串函数运行字符串函数strncmp(s1,s2,2)strncmp(s1,s2,2),则结果是,则结果是_ _ A. 1 A. 1 B. 0 B. 0 C. false C. false D. trueD. true答案:答案:C练习:练习:计算计算x x从从0 0到到2020,y=y=sin(xsin(x) )中,中,x4x0y0的所有值。的所有值。 练习:练习:计算三个多项式计算三个多项式s1s1、s2s2和和s3s3的乘积,则的乘积,则算式为算式为_ _ A. conv(s1,s2,s3) A. conv(s1,s2,s3) B. B. s1*s2*s3s1*s2*s3C. conv(conv(s1,s2),s3) D. C. conv(conv(s1,s2),s3) D. conv(s1*s2*s3)conv(s1*s2*s3)答案:答案:C