《MATLAB教程及实训》(教程全集).ppt

上传人:牧羊曲112 文档编号:6525856 上传时间:2023-11-09 格式:PPT 页数:66 大小:417.50KB
返回 下载 相关 举报
《MATLAB教程及实训》(教程全集).ppt_第1页
第1页 / 共66页
《MATLAB教程及实训》(教程全集).ppt_第2页
第2页 / 共66页
《MATLAB教程及实训》(教程全集).ppt_第3页
第3页 / 共66页
《MATLAB教程及实训》(教程全集).ppt_第4页
第4页 / 共66页
《MATLAB教程及实训》(教程全集).ppt_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《《MATLAB教程及实训》(教程全集).ppt》由会员分享,可在线阅读,更多相关《《MATLAB教程及实训》(教程全集).ppt(66页珍藏版)》请在三一办公上搜索。

1、第2章 MATLAB基本运算,2.1 数据类型 2.2 矩阵和数组的算术运算2.3 字符串2.4 日期和时间2.5 结构体和元胞数组2.6 多维数组2.7 关系运算和逻辑运算2.8 数组的信息获取2.9 多项式,2.1数据类型,MATLAB 7.3定义了15种基本的数据类型,包括整型、浮点型、字符型和逻辑型等,用户甚至可以定义自己的数据类型。,常数和变量,1.常数2.变量MATLAB的变量命名规则如下:变量名区分字母的大小写。例如,“a”和“A”是不同的变量。变量名不能超过63个字符,第63个字符后的字符被忽略。变量名必须以字母开头,变量名的组成可以是任意字母、数字或者下划线,但不能含有空格和

2、标点符号(如,。%等)。关键字(如if、while等)不能作为变量名。,练习,(2)特殊变量,整数和浮点数,1.整数,练习,2.浮点数,2.1.3 复数,MATLAB用特殊变量“i”或“j”表示虚数的单位。复数的产生可以有几种方式:z=a+b*i或z=a+b*jz=a+bi或z=a+bj(当b为常数时)z=r*exp(i*theta)z=complex(a,b),2.2 矩阵和数组的算术运算,空数组(empty array):没有元素的数组;标量(scalar):是指11的矩阵,即为只含一个数的矩阵;向量(vector):是指1n或n1的矩阵,即只有一行或者一列的矩阵;矩阵(matrix):是

3、一个矩形的mn数组,即二维数组;数组(array):是指多维数组mnk,其中矩阵和向量都是数组的特例。,2.2.1 数组的创建,在MATLAB中矩阵的创建应遵循以下基本常规:矩阵元素应用方括号()括住;每行内的元素间用逗号(,)或空格隔开;行与行之间用分号(;)或回车键隔开;元素可以是数值或表达式。,1.空数组2向量向量包括行向量(row vector)和列向量(column vector),即1n或n1的矩阵。(1)使用from:step:to方式生成向量如果是等差的行向量,可以使用“from:step:to”方式生成:from:step:to说明:from、step和to分别表示开始值、步

4、长和结束值;当step省略时则默认为step=1;当step省略或step0而fromto时为空矩阵,当step0而fromto时也为空矩阵。,练习,(2)使用linspace和logspace函数生成向量linspace(a,b,n)%生成线性等分向量logspace(a,b,n)%生成对数等分向量说明:a、b、n三个参数分别表示开始值、结束值和元素个数;linspace函数生成从a到b之间线性分布的n个元素的行向量,n如果省略则默认值为100;logspace函数生成从10a到10b之间按对数等分的n个元素的行向量,n如果省略则默认值为50。,3矩阵矩阵是m行n列(mn)的二维数组,需要使

5、用“”、“,”、“;”、空格等符号创建。例2-7 创建矩阵。a=1:4;linspace(2,5,4);9:-1:6a=1 2 3 4 2 3 4 5 9 8 7 6 b=1 2 34 5 6%使用回车分隔行b=1 2 3 4 5 6,2.2.2 数组的操作,1数组的元素(1)全下标方式全下标方式是指n维数组中元素通过n个下标来引用:a(d1,d2,d3.)(2)单下标方式数组元素用单下标引用,就是先把数组的所有列按先左后右的次序连接成“一维长列”,然后对元素位置进行编号。以mn的矩阵a为例,元素a(i,j)对应的单下标=(j-1)mi。,2子矩阵的产生图2-5 数组a的子矩阵(1)用全下标方

6、式注意:下标为“:”表示向量的所有元素,下标为“end”表示某一维中的最后一个元素。(2)用单下标方式 a(10;11;12)a(10:12)a(10:end)a(10;11;end),练习,(3)逻辑索引方式逻辑索引方式是通过一个元素值为0或1的逻辑数组为下标,其大小和对应数组相同。例2-8 使用逻辑索引方式产生图2-6中的第四列子矩阵。a=1 2 3 4;2 3 4 5;9 8 7 6;l1=logical(1 1 1)l1=1 1 1 l2=logical(0 0 0 1)l2=0 0 0 1 a(l1,l2)ans=4 5 6,3数组的赋值数组的赋值包括全下标方式、单下标方式和全元素方

7、式。全下标方式:a(i,j,k)=b,给a数组的部分元素赋值,则b数组的行列数必须等于a数组的行列数。单下标方式:a(n)=b,b为向量,元素个数必须等于a矩阵的元素个数。全元素方式:a=b,给a数组的所有元素赋值,则b数组的元素总数必须等于a矩阵的元素总数,但行列数不一定相等。,4矩阵的合并矩阵的合并就是把两个以上的矩阵连接起来得到一个新矩阵,“”符号可以作为矩阵合并操作符,命令格式如下:c=a b%将矩阵a和b水平方向合并为cc=a;b%将矩阵a和b垂直方向合并为c5数组元素的删除在MATLAB中可以对数组中的单个元素、子矩阵和所有元素进行删除操作,删除就是将其赋值为空矩阵(用表示)。,2

8、.2.3 矩阵和数组函数,1.矩阵的常用函数det(x)、rank(x)、inv(x)、v,d=eig(x)、diag(x)、q,r=qr(x)、triu(x)和tril(x)2数组翻转常用数组翻转函数:flipud(x)、fliplr(x)、flipdim(x,dim)、rot90(x,k),3数组查找一般用于在比较命令后面,查找非零元素。其命令格式如下:a,b,=find(x)n=find(x)4数据统计MATLAB的数据统计分析是按列进行的,包括得出各列的最大值、最小值等统计。,2.2.4 矩阵和数组的算术运算,1矩阵运算矩阵的基本运算是+、-、和乘方()等。(1)矩阵的加、减运算A+B

9、 和A-B(2)矩阵的乘法运算A*B(3)矩阵的除法运算矩阵的除法运算表达式有两种:AB%左除A/B%右除,(4)矩阵的乘方AB(5)矩阵的转置A%矩阵A的转置,2数组运算数组的乘、除、乘方和转置运算符号为矩阵的相应运算符前面加“.”,数组的乘、除、乘方和转置运算格式如下:A.*B%数组A和数组B对应元素相乘A./B%数组A除以数组B的对应元素A.B%数组B除以数组A的对应元素 A.B%数组A和数组B对应元素的乘方A.%数组A的转置,练习,例2-14 使用数组算术运算法则进行向量的运算。t=0:pi/3:2*pi;%t为行向量 x=sin(t)*cos(t)?Error using=mtime

10、sInner matrix dimensions must agree.x=sin(t).*cos(t)x=0 0.4330-0.4330-0.0000 0.4330-0.4330-0.0000 y=sin(t)./cos(t)y=0 1.7321-1.7321-0.0000 1.7321-1.7321-0.0000,2.2.5 稀疏矩阵,一个矩阵中如果包含很多元素值为0,则此矩阵可以只存储少量的非0元素,这个矩阵称为稀疏矩阵(Sparse Matrix)。1.创建稀疏矩阵sparse函数的语法格式如下:sparse(i,j,s,m,n)%直接创建稀疏矩阵 sparse(p)%由全元素矩阵p转

11、换为稀疏矩阵2.稀疏矩阵的存储空间,3.稀疏矩阵的运算稀疏矩阵的标准数学运算按照以下原则:如果二元运算的两个操作数中有一个是全元素矩阵一个是稀疏矩阵,则对于“+”、“-”、“*”、“”运算结果为全元素矩阵,而“&”、“.*”等运算结果为稀疏矩阵;如果函数的输入参数是矩阵,输出的参数为矩阵,则输出参数以输入矩阵的方式来表示,即当输入参数为稀疏矩阵时,输出参数也是稀疏矩阵。,2.3 字符串2.3.1 创建字符串,字符串由多个字符组成,是1n的字符数组;每一个字符都是字符数组的一个元素,以ASCII码的形式存放并区分大小,而显示的形式则是可读的字符。创建字符串 s1=matlab 7.3s1=mat

12、lab 7.3,(1)直接赋值用单引号()括起字符来直接赋值创建字符串。使用两个单引号()输入字符串中的单引号 s3=显示matlabs3=显示matlab(2)多个字符串组合 str2=s1;s2,;s3str2=matlab 7.3字符串 显示matlab 2.字符数组的存储空间MATLAB在存储字符串时,每一个字符以ASCII码的形式存放,占用两个字节。,练习,2.3.2 字符串函数,1.字符串合并strcat函数用于将字符串水平连接合并成一个新字符串,合并的同时会将字符串尾的空格删除。语法格式如下:strcat(s1,s2,)%将s1,s2合并成一个长字符串char(s1,s2,)%将

13、s1,s2合并成一个字符数组strvcat(s1,s2,)%将s1,s2合并成一个字符数组,2.字符串与数值的转换abs将字符串转换为ASCII码数值str2num将字符串转换为数值str2double将元胞字符串数组转换为数值3.字符串的其他操作MATLAB 7.3还可以对字符串进行比较、查找、运行等操作。,例2-19 使用字符串函数进行运算。str=a+b,c+d,str=a+b,c+d,str1=strrep(str1,*2)%将,用*2替换str1=a+b*2 a=5 b=2 eval(str1)%执行字符串str1ans=9 str2=upper(str2)%将字符串转换为大写字母s

14、tr2=C+D,练习,2.4 日期和时间 日期时间的表示格式,MATLAB 7.3以三种格式表示:日期字符串、连续的日期数值和日期向量,不同的日期格式可以相互转换。1.日期格式(1)日期字符串日期字符串是最常用的,有多种输出格式。例,“2007年1月1日”可以表示为:01-Jan-2007 08:50:10、01-Jan-2007、01/01/2007、等。(2)连续的日期数值733043(3)日期向量 year month day hour minute second,2.4.2 日期时间函数,1.获取系统时间date:按照日期字符串格式获取当前系统时间;now:按照连续的日期数值格式获取当

15、前系统时间;clock:按照日期向量格式获取当前系统时间。2.提取日期时间信息分别使用year、month、day、hour、minute、second函数。3.日期时间的显示格式日期时间的显示可以使用datestr函数显示为字符串的样式。datestr函数的格式如下:datestr(d,f)%将日期按指定格式显示,4.计时函数(1)cputime方法cputime是返回MATLAB启动以来的CPU时间:程序执行的时间程序代码执行结束后的cputime在程序代码执行前的cputime(2)tic/toc方法tic在程序代码开始用于启动的一个计时器;toc放在程序代码的最后,用于终止计时器的运行

16、,并返回计时时间就是程序运行时间。(3)etime方法etime方法使用etime函数来获得程序运行时间,etime函数的命令格式如下:etime(t1,t0)%返回t1-t0的值,2.5 结构体和元胞数组2.5.1 元胞数组,元胞数组是常规数值数组的扩展,其基本元素是元胞,每一个元胞可以看成是一个单元(Cell),用来存放各种不同类型不同尺寸的数据,如矩阵、多维数组、字符串、元胞数组和结构体。元胞数组可以是一维、二维或多维,使用花括号()表示,每一个元胞以下标区分,下标的编码方式也与矩阵相同,分为单下标方式和全下标方式。,1.创建元胞数组(1)直接创建 A=cell1,1 2;3 4;1 2

17、,matlab,0:1:5 A(1,1)=cell1;A(1,2)=1 2;3 4;A(2,1)=1 2,matlab;A(2,2)=0:1:5 A1,1=cell1;A1,2=1 2;3 4;A2,1=1 2,matlab;A2,2=0:1:5,例2-22 使用cell函数创建元胞数组。A=cell(2,2)%创建空的元胞数组 A1,1=cell1(2)使用cell函数创建cell函数创建元胞数组的语法格式:A=cell(m,n)%创建mn元胞数组,2.元胞数组的操作(1)用取元胞数组的元素内容 s=C2,1%全下标方式 s=C2%单下标方式(2)用()取元胞数组的元素 n=C(2,1)%全

18、下标方式n=1x4 double(3)用deal函数取多个元胞元素的内容,2.5.2 结构体,结构体的基本组成是结构,每一个结构都包含多个字段(Fields),结构体只有划分了字段以后才能使用。1.创建结构体(1)直接创建直接使用赋值语句创建结构体,用“结构体名.字段名”的格式赋值。ps(1).name=曲线1;(2)利用struct函数创建struct(field1,值1,filed2,值2,)%创建结构体将值赋给各字段,2.获取结构体内部数据(1)使用“.”符号获取(2)用getfield函数获取getfield(A,A_index,fieldname,field_index)(3)使用f

19、ieldnames函数获取结构体的所有字段fieldnames(array)%获取结构体的所有字段(4)使用“”合并相同字段的数据,3.结构体的操作函数(1)删除结构体的字段rmfield(A,fieldname)%删除字段(2)修改结构体的数据setfield(A,A_index,fieldname,field_index,值)(3)结构体转换为元胞数组 ps=setfield(ps,1,color,green);,2.6 多维数组,三维数组的元素存放遵循“单下标”的编号规则:第一页第一列下接该页的第二列,下面再接第三列,依此类推;第一页的最后列下面接第二页第一列,如此进行,直至结束。1.多

20、维数组的创建(1)直接赋值创建(2)由二维数组扩展(3)使用cat函数创建,例2-25 使用cat函数创建多维数组。a=1 2;3 4;b=10 9;8 7;c2=cat(3,a,b)%按第三维连接c2(:,:,1)=1 2 3 4c2(:,:,2)=10 9 8 7 c2(1,1,2)%全下标方式的数组元素ans=10 c2(6)%单下标方式的数组元素ans=8,2.7关系运算和逻辑运算2.7.1 逻辑运算,MATLAB 7.3中逻辑型(logical)数据只有“1”和“0”,分别表示true和false两种状态,逻辑型变量只占1个字节。函数logical可以用来将数值型转换为逻辑型,任何非

21、零的数值都转换为逻辑1,数值0转换为逻辑0。,2.7.2 关系运算,MATLAB 7.3常用的关系操作符有、=、=(等于)、=(不等于)。关系运算规则:如果比较的两个变量都是标量,则结果为1(true)或0(false);如果比较的两个变量都是数组,则必须尺寸大小相同,结果也是同样大小的数组;如果比较的是一个数组和一个标量,则把数组的每个元素分别与标量比较,结果为与数组大小相同的数组。,2.7.3 逻辑运算,1.元素的逻辑运算元素的逻辑运算是将数组中的元素一一进行逻辑运算,常用的逻辑运算符:&(与)、|(或)、(非)和xor(异或)。在逻辑运算中,非0元素表示true,0元素表示false。2

22、.先决逻辑运算先决逻辑运算符有:&(先决与)和|(先决或)。3.位逻辑运算位逻辑运算函数有:bitand(位与)、bitor(位或)、bitcmp(位非)和bitxor(位异或)。,练习,2.7.4 运算符优先级,各类运算符的优先级为:括号算术运算符关系运算符逻辑运算符各符号优先顺序为:括号()转置.幂.一元加减+-逻辑非 乘*.*除/./.加减+-冒号:关系运算=元素逻辑运算与&元素逻辑运算或|先决逻辑运算与&先决逻辑运算或|,2.8数组的信息获取,1.数组的尺寸2.数组的检测函数以“is”开头,函数返回的结果为逻辑型,如果检测符合条件则返回1,不符合条件就返回0。,2.9 多项式,一个多项

23、式按降幂排列为:p(x)=anxn+an-1xn-1+a1x+a0在MATLAB中用行向量来表示多项式的各项系数,使用长度为n+1的行向量按降幂排列,用0表示多项式中某次幂的缺项,则表示为:p=an an-1 a1 a0例如,p(x)=x3-4x2+3x+1可表示为p=1-4 3 1;p(x)=x2+5x3+2x可表示为p=1 5 2 0。,2.9.1 多项式求根和求值,1.多项式求根使用roots函数来计算多项式的根,多项式的根以列向量的形式表示;反过来,也可以根据多项式的根使用poly函数获得多项式。2.多项式求值函数polyval和polyvalm可以用来计算多项式在给定变量时的值。,2

24、.9.2 多项式的算术运算,1.多项式的乘法和除法多项式的乘法和除法运算分别使用函数conv和deconv来实现。p=conv(pl,p2)%计算多项式p1和p2的乘积q,r=deconv(pl,p2)%计算多项式p1与p2的商,练习,2.部分分式展开B,A=residue(r,p,k)%将分母多项式A和分子多项式B进行部分分式展开r,p,k=residue(B,A)%将部分分式和形式转化为两个多项式除法,例2-33 将两个表达式G1进行部分分式展开,a1=1-6 11-6 0;b1=10;r1,p1,k1=residue(b1,a1)%将G1部分分式展开r1=1.6667-5.0000 5.

25、0000-1.6667p1=3.0000 2.0000 1.0000 0k1=,3.多项式的微积分使用polyder函数来计算多项式的微分:polyder(p)%计算p的导数polyder(a,b)%计算a和b乘积的导数q,d=polyder(b,a)%计算a和b商的导数MATLAB没有专门的多项式积分函数,但可以通过以下的公式计算完成积分:p./(length(p):-1:1),k%计算多项式p的积分,2.9.3 多项式的拟合与插值,1.多项式的拟合多项式拟合是用一个多项式来逼近一组给定的数据,是数据分析上的常用方法。(1)拟合函数p=polyfit(x,y,n)%由x和y得出多项式p说明:

26、x、y向量分别为数据点的横、纵坐标;n是拟合的多项式阶次;p为拟合的多项式,p是n+1个系数构成的行向量。,MATLAB 7.3提供了方便的曲线拟合图形用户接口,可以直接在图形窗口中使用菜单进行多项式拟合,在图形窗口中选择菜单“Tools”“Basic Fitting”,则出现“Basic Fitting”窗口。,2.插值运算插值(interpolation)是在两个原始数据点之间根据一定的运算关系插入新的数据点,以便更准确地得出数据的变化规律。一维插值是指对一个自变量的插值,interp1函数用来进行一维插值:yi=interp1(x,y,xi,method),练习:,x=uint8(2.3

27、e10),则x所占的字节是_个。A.1 B.2 C.4 D.8,答案:A,练习:,下列_是合法常量。A.3*e10 B.1e500 C.-1.85e-56 D.10-2,答案:C,练习:,已知x=0:10,则x有_个元素。A.10 B.11 C.9 D.12,答案:B,练习:,已知x=0:10,则x有_个元素。A.10 B.11 C.9 D.12,答案:B,练习:,已知数组a=,则a(:,end)是指_ A.所有元素 B.第一行元素C.第三列元素 D.第三行元素,答案:C,练习,求解方程组,练习:,已知s=显示hello,则s的元素个数是_ A.12 B.9 C.7 D.18,答案:A,练习:,运行字符串函数strncmp(s1,s2,2),则结果是_ A.1 B.0 C.false D.true,答案:C,练习:,计算x从0到20,y=sin(x)中,0的所有值。,练习:,计算三个多项式s1、s2和s3的乘积,则算式为_ A.conv(s1,s2,s3)B.s1*s2*s3C.conv(conv(s1,s2),s3)D.conv(s1*s2*s3),答案:C,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号