【大学课件】MATLAB 实训项目讲义.ppt
MATLAB 实训项目讲义,Application of Matlab Language,http:/,2023/9/4,http:/,2,菜单栏,工具栏,文件编辑窗口,工作空间,历史命令窗口,Start 菜单,命令窗口,命令提示符,1 启动与退出MATLAB,2023/9/4,http:/,3,2 命令窗口的使用,【例1】计算(1)575+987-345;(2)456*852;(3)123/56;56123(4)58;(5),2023/9/4,http:/,4,3 数值表示、变量及表达式,运算符和表达式,2023/9/4,http:/,5,4 数值表示、变量及表达式,Matlab常用函数,2023/9/4,http:/,6,4 数值表示、变量及表达式,Matlab常用函数,2023/9/4,http:/,7,2.2 命令窗口(续),【练习】计算 的值,其中x=4.92。,【例2】计算 的值。,【练习】计算 的值。,【练习】计算 的值,【例3】已知向量xX=43,72,9,16,23,47,26求其最大值,最小值,平均值,和 各数的乘积,排序,向量维数,2023/9/4,http:/,8,2.2 命令窗口(续),2023/9/4,http:/,9,2.2 命令窗口(续),数值显示格式设置缺省显示格式:简洁的短格式(short)窗口命令及语法格式:format short format long 15位数字显示常见通用命令命令含义clc清除命令窗口的显示内容clear清除Matlab工作空间中保存的变量,2023/9/4,http:/,10,2.1 数值表示、变量及表达式,数值的记述 其数字的绝对值范围大约是:变量命令规则变量名、函数名对字母的大小写是敏感的。如myVar与myvar表示两个不同的变量。变量名第一个字母必须是英文字母。变量名可以包含英文字母、下划线和数字。变量名不能包含空格、标点。变量名最多可包含63个字符。,2023/9/4,http:/,11,2.1 数值表示、变量及表达式,Matlab预定义的变量,说明每当MATLAB启动完成,这些变量就被产生。MATLAB中,被0除不会引起程序中断,给出报警的同时用inf或NaN给出结果。用户只能临时覆盖这些预定义变量的值,Clear或重启MATLAB可恢复其值。,2023/9/4,http:/,12,2.2 Matlab运算,极限运算导数运算积分运算解方程矩阵运算,2023/9/4,http:/,13,2.2 Matlab运算,极限运算,Matlab利用limit函数计算函数的极限。表示方法为:limit(f,x,a)表示求函数f(x)当x趋近于常数a的极限。,1.limit(f,a)表示当x趋近于常数a时,f(x)的极限。,2.limit(f,x,a,right)和limit(f,x,a,left)分别表示 函数f(x)当x趋近于a时的右极限和左极限。,2023/9/4,http:/,14,2.2 Matlab运算,极限运算,syms x%将x定义为符号变量limit(x2*sin(1/x),x,0),例1 求,练习求,2023/9/4,http:/,15,2.2 Matlab运算,limit(x2-1)/(2*x2+x-1),x,inf),syms x;f=1/x3;limit(f,x,0,left)limit(f,x,0,right)limit(f,x,0),例3 求,例4 求 当 时的左极限,右极限 和极限。,极限练习,(1)(2)(3)(4),2023/9/4,http:/,16,2023/9/4,http:/,17,2.2 Matlab运算,导数运算,Matlab利用diff函数计算函数的导数。表示方法为:diff(f,x)表示对函数f(x)关于x求导。,1.diff(f)表示函数f(x)对默认变量求一阶导数。,2.diff(f,x,n)表示函数f(x)对变量x求n阶导数。,differential,2023/9/4,http:/,18,2.2 Matlab运算,导数运算,syms xdiff(cos(x2+2*x),x,1),diff(x3+cos(2*x)+log(x2),x,2),例1 求 的导数。,例2 求 的二阶及三阶导数。,diff(x3+cos(2*x)+log(x2),x,3),导数练习,(1)(2)(3)(4),2023/9/4,http:/,19,2023/9/4,http:/,20,2.2 Matlab运算,积分运算,Matlab利用int函数计算函数的积分。,注:定积分上下限中的a,b既可以是一个具体的数,也可以是一个无穷的符号(inf)。,integral,不定积分的表示方法为:int(f,x)表示求函数f(x)关于x的不定积分。,定积分的表示方法为:int(f,x,a,b)表示求函数f(x)关于x从a到b的定积分。,2023/9/4,http:/,21,2.2 Matlab运算,积分运算,syms xint(6x+3*sin(x)+sqrt(x),x),int(sin(x)+cos(x),x,0,pi/4),例1 求,例2 求,int(1/(x2+4*x+9),x,-inf,inf),例3 求,积分练习,(1)(2)(3)(4)(5),2023/9/4,http:/,22,2023/9/4,http:/,23,2.2 Matlab运算,求解代数方程,1.Matlab利用solve函数求解代数方程。,表示方法为:solve(eq,x),注:在输入方程时,方程要带上单引号。,表示方法为:solve(eq1,eq2,eq3,x),2.Matlab利用solve函数求解代数方程组。,2023/9/4,http:/,24,2.2 Matlab运算,syms xsolve(x2+2*x-1=0,x),syms x,y,zsolve(2*x-y+3*z=3,3*x+y-5*z=0,4*x-y+z=3,x,y,z),例1 求解方程,例2 求解方程组,方程练习,(1)(2),2023/9/4,http:/,25,2023/9/4,http:/,26,2.2 Matlab运算,求解微分方程,1.Matlab利用dsolve函数求解微分方程。,表示方法为:dsolve(eq,x),注1:在微分方程中,用大写字母D表示一次 微分,D2,D3分别表示二次、三次微分运 算,如符号D2y表示。,注2:在输入方程时,方程和变量x要带上 单引号。,2023/9/4,http:/,27,2.2 Matlab运算,syms x ydsolve(Dy-1/x*y=x2,x),dsolve(D2y+2*Dy-3*y=9*x,x),例1 求解微分方程,例2 求解微分方程,例3 求解微分方程,y=dsolve(D2y+4*Dy+29*y=0,y(0)=0,Dy(0)=15,x),微分方程练习,(1)(2)(3)(4),2023/9/4,http:/,28,2023/9/4,http:/,29,2.2 Matlab运算矩阵运算,矩阵运算,1.矩阵的定义,定义:由mn个元素组成的具有m行n列的数表,称为m行n列的矩阵(Matrix)。,行向量,列向量,2023/9/4,http:/,30,2.2 Matlab运算矩阵运算,第一种方法:使用方括号“”操作符使用规则数组元素必须在“”内键入;行与行之间须用分号“;”间隔;行内元素用空格或逗号“,”间隔。【例】创建矩阵 a=1 2 3;4 5 6;7 8 9【例】创建向量 b=1 3 pi 5,2023/9/4,http:/,31,2.2 Matlab运算矩阵运算,第二种方法:使用冒号“:”操作符基本语法格式:x=Start:Increment:EndStart表示向量x的第一个元素;向量x的最后一个元素不能大于End;若Increment=1,则可简写为:x=Start:End。【例】键入并执行c=1:2:10 c=1:2:10 c=1 3 5 7 9【例】创建以110顺序排列整数为元素的行向量b。b=1:10 b=1 2 3 4 5 6 7 8 9 10,2023/9/4,http:/,32,2.2 Matlab运算矩阵运算,第三种方法:利用函数linspace函数linspace的基本语法x=linspace(x1,x2,n)该函数生成一个由n个元素组成的行向量;x1为其第一个元素;x2为其最后一个元素;x1、x2之间元素的间隔=(x2-x1)/(n-1)。如果忽略参数n,则系统默认生成100个元素的行向量。【例】键入并执行x=linspace(1,2,5)x=1.0000 1.2500 1.5000 1.7500 2.0000,2023/9/4,http:/,33,2.2 Matlab运算矩阵运算,MATLAB数组运算符列表运算 运算符含义说明加+相应元素相加 减-相应元素相减 点乘.*相应元素相乘左点除或右点除.或./A的元素被B的对应元素除转置 a 矩阵转置,2023/9/4,http:/,34,2.2 Matlab运算矩阵运算,【例】矩阵加减法a=1 2 3;4 5 6b=a+2.5b=3.5000 5.5000 7.5000 4.5000 6.5000 8.5000c=b-ac=2.5000 2.5000 2.5000 2.5000 2.5000 2.5000,2023/9/4,http:/,35,2.2 Matlab运算矩阵运算,【例】矩阵运算举例a=2 2 3;1-1 0;-1 2 1b=ad=a.*b,2023/9/4,http:/,36,3 Matlab绘图及程序,绘函数图像matlab程序,2023/9/4,http:/,37,二维曲线绘图的基本操作,plot指令的基本调用格式(1)plot(x,y)绘制以x为横坐标、以y为纵坐标的曲线(2)plot(x1,y1,x2,y2,)绘制以x1为横坐标、y1为纵坐标的曲线1,以x2为横坐标、y2为纵坐标的曲线2,等等。,2023/9/4,http:/,38,二维曲线绘图的基本操作,【例】在0,2区间内,绘制曲线,【例】在0,10区间内,同时绘制曲线 y=sin(x)和 y=cos(x)+2 x=0:0.1:10;plot(x,sin(x),x,cos(x)+2),x=0:0.1:2*pi;y=2*exp(-0.5*x).*sin(2*pi*x)plot(x,y),2023/9/4,http:/,39,使用参数方程绘制曲线,绘制曲线t=-pi:0.01:pi;x=t.*cos(3*t);y=t.*sin(t).2;plot(x,y),2023/9/4,http:/,40,3.三维绘图的基本操作,三维线图指令plot3plot3的使用格式与plot十分相似,只是对应第3 维空间的参量。【例】绘制宝石链t=0:0.01:2*pi;x=sin(t);y=cos(t);z=cos(2*t);plot3(x,y,z,b-,x,y,z,bd);view(-82,58);box onlegend(链,宝石),2023/9/4,http:/,41,三维线图绘制结果,基本绘图函数表,2023/9/4,http:/,42,plot绘图函数的参数表,2023/9/4,http:/,43,图像练习,(1)(2)(3)(4)(5),2023/9/4,http:/,44,2023/9/4,http:/,45,其他绘图函数,三维网格图 mesh(x,y,z)柱状图 bar(x,y)饼图 pie(x,explode),2023/9/4,http:/,46,三维网线图(mesh),画函数z=f(x,y)所代表的三维空间曲面,需要做以下 的数据准备工作:确定自变量的取值范围和取值间隔。x=x1:dx:x2;y=y1:dy:y2;构成x-y平面上的自变量采样“格点”矩阵。利用指令meshgrid产生“格点”矩阵x,y=meshgrid(x,y);计算函数在自变量采样“格点”上的函数值,即z=f(x,y)。曲面图绘制,2023/9/4,http:/,47,举例,绘制函数z=x2+y2的曲面x=-4:4;y=x;x,y=meshgrid(x,y);%生成 x-y 坐标“格点”矩阵z=x.2+y.2;%计算格点上的函数值mesh(x,y,z);%三维网格图surf(x,y,z);%三维曲面图colormap(hot);,2023/9/4,http:/,48,函数z=x2+y2的曲面的绘制结果,2023/9/4,http:/,49,例3.15,x=-2.9:0.2:2.9;bar(x,exp(-x.*x),r),2023/9/4,http:/,50,例3.16,北京市从业人员统计1990年1995年 2000年第一产业 90.770.673.9(万人)第二产业 281.6 271 214.6第三产业 254.8 323.7 326.5执行以下语句:year=1990 1995 2000;people=90.7 281.6 254.8;70.6 271 323.7;73.9 214.6 326.5;bar(year,people,stack);legend(fontsize6第一产业,fontsize6第二产业,fontsize6第三产业);,2023/9/4,http:/,51,bar(year,people,group);%分组式直方图legend(fontsize6第一产业,fontsize6第二产业,fontsize6第三产业);,2023/9/4,http:/,52,2023/9/4,http:/,53,Matlab程序,MATLAB关系运算,关系操作符,大于=大于等于=等于=不等于运算法则:若关系式成立,结果为1;若关系式不成立,结果为0。,A=1 4 3 5 7B=2 6 9 0 7A=Bans=0 0 0 0 1,2023/9/4,http:/,54,8、逻辑运算,MATLAB逻辑运算,逻辑操作符,&与|或 非运算法则:若逻辑真,结果为1;若逻辑假,结果为0。,a=1:2:11b=2:7(a6)ans=1 0 0 0 0 1,2023/9/4,http:/,55,数据分析与统计,1、求向量的最大值和最小值 求一个向量X最大值的函数调用格式:(1)y=max(X):返回向量X的最大值存入y;(2)y,I=max(X):返回向量X的最大值存入y,最大值 的序号存入I。求向量X的最小值的函数是min(X)2、求和与求积sum(X):返回向量X各元素的和。prod(X):返回向量X各元素的乘积。,2023/9/4,http:/,56,【例7-1】求向量的最大值x=-43,72,9,16,23,47;y=max(x)%求向量x中的最大值y=72y,l=max(x)%求向量x中的最大值及其该元素的位置y=72l=2,2023/9/4,http:/,57,程序控制结构,顺序结构选择结构循环结构任何复杂的程序都可以由这3种基本结构构成。,2023/9/4,http:/,58,顺序结构,顺序结构是指按照程序中语句的排列顺序依次执行,直到程序的最后一个语句。(最简单的一种程序)1、数据的输入 从键盘输入数据,则可以使用input函数来进行,调用格式为:A=input(提示信息,选项);其中提示信息为一个字符串,用于提示用户输入数据。例如:从键盘输入A矩阵,可以采用下面的命令来完成 A=input(输入A矩阵);如果在input函数调用时采用s选项,则允许用户输入一个字符串。例:xm=input(Whats your name?,s);,2023/9/4,http:/,59,顺序结构,2、数据的输出 命令窗口输出函数主要有disp函数,其调用格式为:disp(输出项)其中输出项既可以为字符串,也可以为矩阵。例如:A=Hello,Tom;disp(A)输出为:Hello,Tom 又如:A=1,2,3;4,5,6;7,8,9;disp(A)输出为:1 2 3 4 5 6 7 8 9%disp函数输出格式更紧凑,2023/9/4,http:/,60,选择结构,选择结构是根据给定的条件成立或不成立,分别执行不同的语句。Matlab用于实现选择结构的语句有if语句,switch语句。1.if语句语句格式:if 条件1 语句组 1elseif 条件2 语句组 2else 语句组nend,2023/9/4,http:/,61,选择结构,例 计算分段函数:,程序如下:x=input(请输入x的值:);if x=0endy,2023/9/4,http:/,62,选择结构,switch语句switch语句根据表达式的取值不同,分别执行不同的语句,其语句格式:switch 表达式case 表达式1 语句组1case 表达式m 语句组motherwise 语句组 nend,2023/9/4,http:/,63,例 某商场对顾客所购买的商品实行打折销售,标准如下:price200 没有折扣200=price500 3%折扣500=price1000 5%折扣1000=price2500 8%折扣2500=price5000 10%折扣5000=price 14%折扣输入所售商品的价格,求其实际销售价格。,选择结构,2023/9/4,http:/,64,price=input(请输入商品价格);switch fix(price/100)case0,1%价格小于200 rate=0;case2,3,4 rate=3/100;%价格大于等于200但小于500 case num2cell(5:9)rate=5/100;%价格大于等于500但小于1000 case num2cell(10:24)rate=8/100;%价格大于等于1000但小于2500 case num2cell(25:49)rate=10/100;%价格大于等于2500但小于5000 otherwise rate=14/100;%价格大于等于5000endprice=price*(1-rate)%输出商品实际销售价格,选择结构,2023/9/4,http:/,65,循环结构,循环是指按照给定的条件,重复执行指定的语句,Matlab提供了两种实现循环结构的语句:for语句和while语句。1、for语句for语句的格式为:for 循环变量=表达式1:表达式2:表达式3 循环体语句end其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。,2023/9/4,http:/,66,已知,当n=100时,求y的值。程序如下:y=0;n=100;for i=1:n y=y+1/i*i;endy,循环结构,2023/9/4,http:/,67,循环结构,2、while语句while语句的一般格式为:while条件 循环体语句end其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。,2023/9/4,http:/,68,循环结构,3、break语句和continue语句它们一般与if语句配合使用。break语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。continue语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。,