Matlab程序设计电子教案_第1页
Matlab程序设计电子教案_第2页
Matlab程序设计电子教案_第3页
Matlab程序设计电子教案_第4页
Matlab程序设计电子教案_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

Matlab程序设计教案标题:MATLAB概述教学目标:熟练掌握MATLAB集成开发环境的使用;学会将MATLAB程序发布为各种文档文件;学会使用MATLAB的“帮助”查找帮助信息。教学重点及难点:掌握MATLAB的搜索路径的设置方法及其原因;掌握简单的命令行操作方法。教学内容(教学时数:4)MATLAB开发环境一、操作桌面操作桌面包括命令窗口(CommandWindow)、工作空间窗口(Workspace)、历史命令窗口、当前目录浏览器(CurrentDirectory)等四个窗口。1.命令窗口命令窗口用于输入MATLAB命令、函数、矩阵、表达式等信息,并显示除图形以外的所有计算结果,是MATLAB的主要交互窗口。当命令窗口出现提示符>>时,表示MATLAB已准备好,可以输入命令、变量或函数,回车后就可执行。【例1-1】计算A=256/4-100×2+128>>A=256/4-100*2+128%从键盘输入,并单击回车键A=%屏幕显示的结果-8MATLAB语法规定,百分号“%”后面的语句为注释语句。备注:2.工作空间窗口工作空间是MATLAB用于存储各种变量和运算结果的内存空间。在命令窗口中输入的变量、运行文件建立的变量、调用函数返回的计算结果等,都将被存储在工作空间中,直到使用了clear命令清除工作空间或关闭了MATLAB系统为止。注意:函数在运行中会调用的一些临时变量,不会占用工作空间,这些变量在函数运行结束后将被释放。工作空间浏览器中显示的数据类型3.历史命令窗口(CommandHistory)历史命令窗口默认地出现在MATLAB界面的左下侧,用来记录并显示已经运行过的命令、函数和表达式。备注:4.当前目录浏览器窗口(CurrentFolder)当前目录浏览器窗口(CurrentFolder)用来设置当前目录,并显示当前目录下的所有文件信息,在下面的“Details”文件细节栏可以看到M文件的开头注释行,不同文件的图标不同,并可以复制、编辑和运行M文件及装载MAT数据文件。二、帮助系统1.帮助窗口2.函数浏览器备注:3.help命令(1)在线帮助总览>>help%在命令窗口直接输入help,显示在线帮助总览(2)显示基本函数信息>>helpelfun(3)显示具体函数的帮助信息>>helpround%显示具体函数的详细信息,本例为round函数注意:MATLAB对字母的大小写是敏感的,变量A与变量a表示两个不同的变量。MATLAB所有的命令和函数都必须用小写。4.lookfor命令5.模糊查询6.在线帮助页三、MATLAB的特点1.高效方便的矩阵和数组运算2.语句简单3.编程效率高4.方便的绘图功能5.用户使用方便6.扩充能力强7.开放的源程序四、设置搜索路径1.MATLAB的基本搜索过程按照以下的顺序进行搜索:(1)首先在MATLAB内存中进行检查,检查“sin”和“x”是否为工作空间的变量或特殊变量;(2)然后检查“sin”和“x”是否为MATLAB的内部函数(Built-inFunction);(3)然后在当前目录上,检查是否有相应的“.m”或“.mex”文件存在;(4)最后在MATLAB搜索路径的所有其他目录中,依次检查是否有相应的“.m”或“.mex”的文件存在;(5)如果都不是,则MATLAB发出错误信息。2.设置搜索路径窗口(SetPath)打开设置搜索路径窗口的方法有两种:(1)在MATLAB界面选择菜单“File”→“SetPath”;(2)在命令窗口中运行“pathtool”或“editpath”命令。备注:五、MATLAB的发布功能MATLAB可以将编写的程序发布成文档,通过MATLAB的发布功能发布成HTML文件、doc文件、PPT或者其他文档,将M文件内容分享出去。增加注释:%%”后面输入该“Section”的标题备注:发布成PPT六、练习将下面程序添加注释发布为.doc文件。a=[1234]b=[5678]c=a+b*iplot(c)备注:作业、讨论题、思考题:Matlab程序设计教案标题:MATLAB的基本运算教学目标:掌握变量的定义与使用;掌握内存变量的管理;熟练掌握矩阵的运算;熟练掌握数组的运算和数组函数;掌握多项式的计算教学重点及难点:掌握矩阵运算和数组运算;掌握多项式的计算。教学内容(教学时数:6)2.1数据类型MATLABR2010a定义了15种基本的数据类型,包括整型、浮点型、字符型和逻辑型等,用户甚至可以定义自己的数据类型。2.1.1常数和变量1.常数2.变量MATLAB的变量命名规则如下:变量名区分字母的大小写。例如,“a”和“A”是不同的变量。变量名不能超过63个字符,第63个字符后的字符被忽略。变量名必须以字母开头,变量名的组成可以是任意字母、数字或者下划线,但不能含有空格和标点符号(如,。%等)。关键字(如if、while等)不能作为变量名。特殊变量备注:2.1.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矩阵和数组的算术运算空数组(emptyarray):没有元素的数组;标量(scalar):是指1×1的矩阵,即为只含一个数的矩阵;备注:向量(vector):是指1×n或n×1的矩阵,即只有一行或者一列的矩阵;矩阵(matrix):是一个矩形的m×n数组,即二维数组;数组(array):是指多维数组m×n×k×…,其中矩阵和向量都是数组的特例。2.2.1数组的创建在MATLAB中矩阵的创建应遵循以下基本常规:矩阵元素应用方括号([])括住;每行内的元素间用逗号(,)或空格隔开;行与行之间用分号(;)或回车键隔开;元素可以是数值或表达式。1.空数组2.向量向量包括行向量(rowvector)和列向量(columnvector),即1×n或n×1的矩阵。(1)使用from:step:to方式生成向量如果是等差的行向量,可以使用“from:step:to”方式生成:from:step:to说明:from、step和to分别表示开始值、步长和结束值;当step省略时则默认为step=1;当step省略或step>0而from>to时为空矩阵,当step<0而from<to时也为空矩阵。(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列(m×n)的二维数组,需要使用“[]”、“,”、“;”、空格等符号创建。例:用三种方法创建矩阵a=1234234598764.特殊矩阵和数组2.2.2数组的操作1.数组的元素(1)全下标方式全下标方式是指n维数组中元素通过n个下标来引用:a(d1,d2,d3….)备注:(2)单下标方式数组元素用单下标引用,就是先把数组的所有列按先左后右的次序连接成“一维长列”,然后对元素位置进行编号。以m×n的矩阵a为例,元素a(i,j)对应的单下标=(j-1)×m+i。2.子矩阵的产生(1)用全下标方式注意:下标为“:”表示向量的所有元素,下标为“end”表示某一维中的最后一个元素。(2)用单下标方式>>a([10;11;12])>>a(10:12)'>>a(10:end)'>>a([10;11;end])3.数组的赋值数组的赋值包括全下标方式、单下标方式和全元素方式。全下标方式:a(i,j,k…)=b,给a数组的部分元素赋值,则b数组的行列数必须等于a数组的行列数。单下标方式:a(n)=b,b为向量,元素个数必须等于a矩阵的元素个数。全元素方式:a=b,给a数组的所有元素赋值,则b数组的元素总数必须等于a矩阵的元素总数,但行列数不一定相等。4.矩阵的合并矩阵的合并就是把两个以上的矩阵连接起来得到一个新矩阵,“[]”符号可以作为矩阵合并操作符,命令格式如下:c=[ab]%将矩阵a和b水平方向合并为cc=[a;b]%将矩阵a和b垂直方向合并为c5.数组元素的删除在MATLAB中可以对数组中的单个元素、子矩阵和所有元素进行删除操作,删除就是将其赋值为空矩阵(用[]表示)。2.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矩阵和数组的算术运算MATLAB的二维数组和矩阵从外观和数据结构上看没有区别,矩阵的运算规则是按照线性代数运算法则定义的,但是有着明确而严格的数学规则。1.矩阵运算矩阵的基本运算是+、-、×、÷和乘方(^)等。 备注:(1)矩阵的加、减运算A+B和A-B(2)矩阵的乘法运算A*B(3)矩阵的除法运算矩阵的除法运算表达式有两种:A\B%左除A/B%右除(4)矩阵的乘方A^B(5)矩阵的转置A'%矩阵A的转置例2-12用矩阵除法求方程组的解,已知方程组:解:X=A\B是方程A*X=B的解,将该方程变换成A*X=B的形式。其中:>>A=[2-31;1-11;131];>>B=[8;7;6];>>X=A\B2.数组运算数组的乘、除、乘方和转置运算符号为矩阵的相应运算符前面加“.”,数组的乘、除、乘方和转置运算格式如下: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)???Errorusing==>mtimesInnermatrixdimensionsmustagree.>>x=sin(t).*cos(t)x=00.4330-0.4330-0.00000.4330-0.4330-0.0000>>y=sin(t)./cos(t)y=01.7321-1.7321-0.00001.7321-1.7321-0.00002.8关系运算和逻辑运算2.8.1逻辑运算MATLABR2010a中逻辑型(logical)数据只有“1”和“0”,分别表示true和false两种状态,逻辑型变量只占1个字节。 备注:函数logical可以用来将数值型转换为逻辑型,任何非零的数值都转换为逻辑1,数值0转换为逻辑0。例如:>>a=0:5a=012345>>b=logical(a)%转换为逻辑型Warning:Valuesotherthan0or1convertedtological1.b=011111 2.8.2关系运算MATLABR2010a常用的关系操作符有<、<=、>、>=、==(等于)、~=(不等于)。关系运算规则:如果比较的两个变量都是标量,则结果为1(true)或0(false);如果比较的两个变量都是数组,则必须尺寸大小相同,结果也是同样大小的数组;如果比较的是一个数组和一个标量,则把数组的每个元素分别与标量比较,结果为与数组大小相同的数组。2.8.3逻辑运算1.元素的逻辑运算元素的逻辑运算是将数组中的元素一一进行逻辑运算,常用的逻辑运算符:&(与)、|(或)、~(非)和xor(异或)。在逻辑运算中,非0元素表示true,0元素表示false。例如:num=4742855320678426838>>n=(num>60)&(num<100) %判断是否大于60小于100n=00100110102.先决逻辑运算先决逻辑运算符有:&&(先决与)和||(先决或)。比较两个语句的不同:>>x=0>>y=(x~=0)&&(100/x>10) >>x=0>>y=(x~=0)&(100/x>10) 3.位逻辑运算位逻辑运算函数有:bitand(位与)、bitor(位或)、bitcmp(位非)和bitxor(位异或)。2.8.4运算符优先级各类运算符的优先级为:括号→算术运算符→关系运算符→逻辑运算符各符号优先顺序为:备注:括号()→转置'.'幂^.^→一元加减+-逻辑非~→乘*.*除/./\.\→加减+-→冒号:→关系运算>>=<<===~=→元素逻辑运算与&→元素逻辑运算或|→先决逻辑运算与&&→先决逻辑运算或||2.10多项式一个多项式按降幂排列为:p(x)=anxn+an-1xn-1+…+a1x+a0在MATLAB中用行向量来表示多项式的各项系数,使用长度为n+1的行向量按降幂排列,用0表示多项式中某次幂的缺项,则表示为:p=[anan-1…a1a0]例如,p(x)=x3-4x2+3x+1可表示为p=[1-431];p(x)=x2+5x3+2x可表示为p=[1520]。2.10.1多项式求根和求值1.多项式求根使用roots函数来计算多项式的根,多项式的根以列向量的形式表示;反过来,也可以根据多项式的根使用poly函数获得多项式。多项式p1=x4-6x3+11x2-6x=x(x-3)(x-2)(x-1)2.多项式求值函数polyval和polyvalm可以用来计算多项式在给定变量时的值。2.10.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) %将部分分式和形式转化为两个多项式除法 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.10.3多项式的拟合与插值1.多项式的拟合多项式拟合是用一个多项式来逼近一组给定的数据,是数据分析上的常用方法。(1)拟合函数p=polyfit(x,y,n) %由x和y得出多项式p说明:x、y向量分别为数据点的横、纵坐标;n是拟合的多项式阶次;p为拟合的多项式,p是n+1个系数构成的行向量。例2-35使用多项式拟合的方法对曲线的数据进行拟合,拟合后根据多项式绘制的曲线如图2-12所示。>>x=0:0.5:10;>>p=[6042-710];>>y=polyval(p,x);>>p1=polyfit(x,y,2) %根据x和y进行二阶拟合>>y1=polyval(p1,x);>>p2=polyfit(x,y,5) %根据x和y进行五阶拟合“APP”面板里是各种应用,其中“CurveFitting”APP就是用来实现曲线合的应用。2.插值运算插值(interpolation)是在两个原始数据点之间根据一定的运算关系插入新的数据点,以便更准确地得出数据的变化规律。一维插值是指对一个自变量的插值,interp1函数用来进行一维插值:yi=interp1(x,y,xi,'method') 备注:例2-36使用插值运算计算曲线中横坐标为9.5的对应纵坐标值,曲线表达式为。>>x=1:10;>>y=2*sin(x)+sqrt(x);>>y01=interp1(x,y,9.5) %采用线性插值方法计算y01=2.9492>>y02=interp1(x,y,9.5,'spline') %采用三次样条插值方法计算y02=2.9558>>y03=interp1(x,y,9.5,'cubic') %采用三次多项式插值方法计算y03=3.0586>>y04=interp1(x,y,9.5,'nearest')%采用最接近的相邻点插值方法计算y04=2.0742>>y0=2*sin(9.5)+sqrt(9.5) %实际值y0=2.9319备注:作业、讨论题、思考题:见课本Matlab程序设计教案标题:数据的可视化教学目标:1.熟练掌握二维绘图熟练掌握特殊绘图熟练掌握三维绘图教学重点及难点:二维图形以及三维图形绘图的产生;matlab绘图。教学内容(教学时数:6)3.1二维绘图1.plot函数plot函数可以方便地对纵横坐标向量和矩阵进行绘图。其语法格式为:plot(y) %绘制以y为纵坐标的二维曲线plot(x,y) %绘制以x为横坐标y为纵坐标的二维曲线plot(x1,y1,x2,y2…) %在同一窗口绘制多条二维曲线其中:x和y可以是实数向量或矩阵,也可以是复数向量或矩阵。【例1_13】在一个窗口上绘制两个子图,并分别绘制曲线。>>subplot(1,2,1) %产生一行两列的左边子图>>y1=magic(3) %生成魔方阵y1=816357492>>plot(y1)>>subplot(1,2,2)>>x2=0:0.1:2*pi;>>y21=sin(x2);>>plot(x2,y21)>>holdon %保持原曲线>>y22=2*sin(x2+pi/3);>>plot(x2,y22)备注:2.修饰曲线plot(x,y,s)【例1_14】绘制曲线并添加图形修饰,绘制的图形如图1_12所示。>>x2=0:0.1:2*pi;>>y21=sin(x2);>>plot(x2,y21,'r*-.')>>holdon>>y22=2*sin(x2+pi/3);>>plot(x2,y22,'b+:')>>title('TwoSineLines') %添加标题>>xlabel('x')%添加横坐标标注>>ylabel('y') %添加纵坐标标注>>legend('sin(x)','2sin(x+\pi/3)',0)备注:3.特殊图形MATLAB的Workspace窗口中,如果选择了Workspace窗口中的变量x,单击工具栏中的绘制列数据曲线按钮(Plot)旁的下来箭头,出现下拉的菜单如图1_13所示各种不同的特殊图形。4.向量图向量图可以用来表示复数。(1)compass函数compass函数绘制的图中每个数据点都是以原点为起点的带箭头线段,称为罗盘图。compass(u,v,'线型') %绘制横坐标为u纵坐标为v的罗盘图(2)feather函数feather函数是在直角坐标系中绘图,起点为X轴上间隔单位长度的刻度点,称为羽毛图。feather(u,v,'线型') %绘制横坐标为u纵坐标为v的羽毛图备注:5.特殊坐标轴图特殊坐标轴是指坐标并不是均匀刻度的坐标,常用的有极坐标图和对数坐标图。(1)极坐标图在MATLAB中绘制极坐标图使用polar命令,其语法格式为:polar(theta,rho,参数) %绘制极坐标(2)对数坐标图对数坐标图是指坐标轴的刻度不是线性刻度而是对数刻度,semilogx和semilogy函数分别绘制对X轴和Y轴的半对数坐标图,loglog是双对数坐标图。其语法格式如下:semilogx(x1,y1,'线型') %绘制x为对数的多条曲线semilogy(x1,y1,'线型') %绘制y为对数的多条曲线loglog(x1,y1,'线型') %绘制x、y都为对数的多条曲线3.2三维绘图1.三维曲线图三维曲线图是指根据(x,y,z)坐标变化绘制的曲线。plot3(x,y,z,'线型') %绘制三维曲线2.三维网格线图绘制三维网格线图的方法是用矩形网格来绘制曲面,即将x方向划分为m份,将y方向划分为n份,因此在绘制三维网格线图之前要先产生矩形网格。(1)产生矩形网格MATLAB的meshgrid函数就是用来在(x,y)平面上产生矩形网格,其语法格式如下:[X,Y]=meshgrid(x,y) %产生XY矩形网格(2)绘制三维网线图三维网线图就是将平面上的网格点(X,Y)对应z值的顶点画出mesh(X,Y,Z,C) %绘制网格点数据对应的三维网线 备注:3.三维表面图三维表面图用颜色来填充整个表面surf(X,Y,Z,C) %绘制网格点数据对应的三维表面图【例1_17】绘制高斯分布的三维网格线图和曲面图,绘制的图形如图1_16所示。>>x=1:49;>>[X,Y]=meshgrid(x); %产生网格线>>Z=peaks; %产生高斯分布矩阵>>subplot(1,2,1)>>mesh(X,Y,Z) %绘制三维网格线图>>subplot(1,2,2)>>surf(X,Y,Z) %绘制三维曲面图备注:作业、讨论题、思考题:见课本Matlab程序设计教案标题:符号运算教学目标:理解符号计算的内涵,掌握符号变量的定义方法;掌握符号矩阵的基本运算,掌握符号微分、积分运算,了解化简和替代命令;掌握符号表达式的创建,了解符号代数方程求解,了解符号微分方程求解。教学重点及难点:掌握符号矩阵的基本运算。2、掌握符号微分、积分运算;教学内容(教学时数:6)4.1符号对象的创建和使用创建符号对象都可以使用sym和syms函数来实现。1.sym函数S=sym(s,参数) %由数值创建符号对象S=sym(‘s’,参数)%由字符串创建符号对象当被转换的s是数值时,参数可以是'd'、'f'、'e'或'r'四种格式,当被转换的's'是字符串时,参数可以是'real'、'unreal'和'positive'三种格式例,>>x=sym('x');2.syms函数syms(s1,s2,s3,…,参数) 或 symss1,s2,s3,…,参数%创建多个符号变量syms与sym的关系是:syms(s1,s2,s3,…,参数)等同于s1=sym('s1',参数),s2=sym('s2',参数)……3.class函数s=class(x) %返回对象x的数据类型例:>>a=sym(2) %定义数值符号常量a=2>>a1=sym(a) %定义符号变量a1=2>>b=sym(b)???Undefinedfunctionorvariable'b'.>>b=sym(‘b’) %定义字符串符号常量b=b4.1.2符号常量和符号变量符号常量是不含变量的符号表达式,用sym函数来创建;符号变量使用sym和syms函数来创建。备注:例4-1创建符号常量和符号变量。>>a=sin(2)>>a1=sym(sin(2)) %用数值创建符号常量>>a2=sym(sin(2),'f')%用十六进制浮点表示>>a3=sym(sin(2),'e')%用估计误差的有理表示>>whos4.1.3符号表达式符号表达式是由符号常量和符号变量等构成的表达式,使用sym和syms函数来创建。例4-3分别使用sym和syms函数创建符号表达式。>>symsabcx>>f1=a*x^2+b*x+cf1=a*x^2+b*x+c>>f2=sym('y^2+y+1') %创建符号表达式f2=y^2+y+1>>f3=sym('sin(z)^2+cos(z)^2=1') %创建符号方程f3=sin(z)^2+cos(z)^2=14.1.4符号矩阵符号矩阵的元素是符号对象,符号矩阵可以用sym和syms函数来创建。>>A=sym('[a,b;c,d]')A=[a,b][c,d]4.2符号对象的运算

4.2.1符号对象的基本运算1.算术运算(1)“+”,“-”,“*”,“\”,“/”,“^”(2)“.*”,“./”,“.\”,“.^”(3)“′”,“.′”2.关系运算只有运算符“==”、“~=”分别对符号对象进行“相等”、“不等”的比较。3.三角函数、双曲函数和相应的反函数三角函数包括sin、cos和tan,双曲函数包括sinh、cosh和tanh4.指数和对数函数5.复数函数复数的共轭conj、求实部real、求虚部imag和求模abs函数与数值计算中的使用方法相同。没有提供求相角的命令。备注:6.矩阵代数命令符号运算中的矩阵代数命令有diag,triu,tril,inv,det,rank,poly,expm,eig和svd等,它们的用法几乎与数值计算中的情况完全一样4.2.2任意精度的算术运算1.符号工具箱的算术运算方式(1)数值型运算速度最快,占用内存最少,但结果不精确。(2)有理数型计算时间和占用内存是最大的,产生的结果是非常准确的。(3)VPA型任意精度运算,这种运算比较灵活,可以设置任意有效精度。例如:sym(‘1/2+1/3’)2.不同类型对象的转换(1)获得VPA型对象digits(n) %设定n位有效位数的精度S=vpa(s,n) %将s按n位有效位数计算得出符号对象S例:>>digits %显示默认精度Digits=32>>q=sym('sqrt(2)')q=sqrt(2)>>q=vpa(q) %按默认精度计算并显示q=1.4142135623730950488016887242097(2)获得数值型对象n=double(s) %将符号对象s转换为双精度数值对象n(3)不同类型对象转换关系4.3符号表达式的变换

4.3.1符号表达式中的自由符号变量1.自由符号变量的确定以下原则来选择一个自由符号变量:备注:符号表达式中的多个符号变量,按以下顺序来选择自由符号变量:首先选择x,如果没有x,则选择在字母表顺序中最接近x的字符变量,如果字母与x的距离相同,则在x后面的优先;字母pi、i和j不能作为自由符号变量;大写字母比所有的小写字母都靠后。例如,在符号表达式“ax2+bx+c”中,自由符号变量的顺序为xàcàbàa。2.findsym函数findsym(S,n) %确定符号对象S中的n个自由符号变量例4-7已知符号对象f=ax2+bx+c,得出自由符号变量。>>symsabcxyz;>>f=a*x^2+b*x+c;>>findsym(f) %得出所有不按顺序排列的自由符号变量ans=a,b,c,x>>findsym(f,4) %得出4个按顺序排列的自由符号变量ans=x,c,b,a>>g=x+i*y-j*z; >>findsym(g) %i和j不能做自由符号变量ans=x,y,z4.3.2符号表达式的化简多项式的符号表达式有多种形式,例如,f(x)=x3+6x2+11x-6可以表示为:合并同类项形式:f(x)=x3+6x2+11x-6collectexpand因式分解形式:f(x)=(x-1)(x-2)(x-3)factor嵌套形式:f(x)=x(x(x-6)+11)-6horner6.simplify函数simplify函数是一个功能强大的函数,利用各种形式的代数恒等式对符号表达式进行化简,包括求和、分解、积分、幂、三角、指数、对数、Bessel以及超越函数等方法来简化表达式。4.4.1符号表达式的微积分1.微分diff(f,t,n)%计算f对符号变量t的n阶微分例4-18计算符号表达式f=sin(ax)+y2cos(x)的微分。>>symsaxy>>f=sin(a*x)+y^2*cos(x);>>dfdx=diff(f) %对默认自由变量x求一阶微分dfdx=cos(a*x)*a-y^2*sin(x)>>dfdy2=diff(f,y,2) %对符号变量y求二阶微分dfdy2=2*cos(x)备注:2.积分int(f,t,a,b) %计算符号变量t的积分说明:f为符号表达式;t为积分符号变量,可以省略,当t省略时则指默认自由符号变量;a和b是为积分上下限[ab],可以省略,省略时计算的是不定积分。例:>>symsarphi>>g=r^2*(sin(phi))^2;>>f=int(int(f,r,0,a),phi,0,2*pi)f=2*sin(a*x)*a*pi+2*y^2*cos(x)*a*pi4.4.2符号表达式的极限limit(f,x,a)%求符号表达式f对x趋近于a的极限例4-22使用limit函数计算符号表达式的极限,和>>symst>>f1=exp(-t)*sin(t);>>ess=limit(f1,t,inf) %计算趋向无穷大的极限ess=0>>f2=1/t;>>limitf2_l=limit(f2,'t','0','left') %计算趋向0的左极限>>limitf2_r=limit(f2,'t','0','right') %计算趋向0的右极限>>limitf2=limit(f2) %计算趋向0的极限limitf2=NaN左右极限不相等,极限不存在表示为NaN4.4.3符号表达式的级数1.级数求和symsum(s,x,a,b) %计算表达式s当x从a到b的级数和例4-23使用symsum函数对符号表达式进行级数求和,已知符号表达式。>>symsxkn>>f1=x^k;>>limitf1=symsum(f1,k,0,inf)%计算无穷级数和limitf1=-1/(x-1)2.taylor级数taylor(f,n,x,x0) %求泰勒级数以符号变量x在x0点展开n项4.5符号积分变换

4.5.1Fourier变换F=fourier(f,t,w)%求以t为符号变量f的fourier变换Ff=ifourier(F,w,t)%求以w为符号变量的F的fourier反变换f备注:4.5.2Laplace变换F=laplace(f,t,s)%求以t为变量f的Laplace变换Ff=ilaplace(F,s,t)%求以s为变量的F的Laplace反变换f4.5.3Z变换F=ztrans(f,n,z) %求以n为变量的f的Z变换Ff=iztrans(F,z,n)%求以z为变量的F的z反变换f4.6符号方程的求解

4.6.1代数方程的求解一般的代数方程包括线性方程、非线性方程和超越方程。当方程不存在解析解又无其他自由参数时,MATLAB提供了solve函数得出方程的数值解。solve('eqn','v')%求方程关于指定变量v的解solve(‘eqn1’,‘eqn2’,…‘v1’,‘v2’,…) %求方程组关于指定变量解4.6.2微分方程的求解dsolve('eqn','cond','v') %求解微分方程dsolve('eqn1,eqn2,…','cond1,cond2,…','v1,v2,…')%求解微分方程组说明:eqn和eqn1,eqn2,…是符号常微分方程,方程组最多可允许12个方程,方程中D表示微分,则D2、D3分别表示二阶、三阶微分,y的一阶导数dy/dx或dy/dt表示为Dy;cond是初始条件,可省略,应写成'y(a)=b,Dy(c)=d'的格式,当初始条件少于微分方程数时,在所得解中将出现任意常数符C1,C2……,解中任意常数符的数目等于所缺少的初始条件数,是微分方程的通解;v1,v2,…是符号变量,表示微分自变量,可省略,如果省略则默认为符号变量t。备注:作业、讨论题、思考题:见课本Matlab程序设计教案标题:程序设计和M文件教学目标:1.掌握M文件的建立与调试;2.掌握程序流程语句。教学重点及难点:1.M文件的建立与调试方法2.程序控制语句。教学内容(教学时数:6)M文件一、M文件的建立M文件是由命令或函数构成的文本文件,可以用任何文本编辑程序来建立和编辑,一般常用且最为方便的是使用MATLAB提供的文本编辑器。M文件有命令文件(也称主程序文件)和函数文件两种,命令文件可包含多个函数文件。1.打开文本编辑器(1)命令按钮操作:单击操作桌面工具栏上的“NewScript”按钮或“New”→“Script”选项。(2)命令操作:在命令窗口输入命令edit,单击〈Enter〉键。(3)快捷键操作:单击按键〈Ctrl〉+〈N〉。2.建立新的M文件在文本编辑器的文档窗口输入文件内容,输入完毕后,可以直接运行该文件,也可以先保存文件。单击快捷键〈Ctrl〉+〈S〉或单击工具栏的“Save”→“Save”(或“SaveAs”)按钮,弹出“SelectFileforSaveAs”对话框,默认的存盘名称是Untitled。注意,M文件存放位置一般是MATLAB缺省的用户工作目录,当然也可以选择别的存放目录。3.运行M文件输入文件内容并检查后,单击〈F5〉或工具栏中的“Run”按钮,在出现的“SelectFileforSaveAs”对话框中,输入文件名myfile.m(以上例为例),单击“保存”。如果改变存盘目录,会弹出“MatlabEditor”对话框,单击“ChangeFolder”按钮即可。在文本编辑器的文档窗口输入文件内容,输入完毕后,可以直接运行该文件,也可以先保存文件。单击快捷键〈Ctrl〉+〈S〉或单击工具栏的“Save”→“Save”(或“SaveAs”)按钮,弹出“SelectFileforSaveAs”对话框,默认的存盘名称是Untitled。注意,M文件存放位置一般是MATLAB缺省的用户工作目录,当然也可以选择别的存放目录。备注:4打开已有的M文件打开已有的M文件,也有三种方法:1)菜单操作:单击操作桌面或文本编辑器的File→Open…选项,则打开Open或OpenFile窗口,再选择要打开的文件;2)命令操作:在命令窗口输入命令edit<文件名>,回车后则打开指定的M文件。如果文件不在当前路径下,还需在文件名前加上路径。例如打开上例的文件,可在命令窗口的>>提示符后输入editmyfile.m;3)命令按钮操作:单击操作桌面工具栏上的打开文件按钮,则打开Open或OpenFile窗口,再选择要打开的文件。二、M文件的调试1.直接调试法1)如果在错误信息中指出了出错的行号,可先根据错误信息检查该语句是否存在语法错误或运行中变量尺寸不一致等情况。2)检查所调用函数或命令的拼写是否正确,括号(包括方括号和圆括号)是否配对,各种流程控制语句是否匹配(如for与end、while与end、switch与end等)。3)检查所调用的函数或载入的数据文件是否在当前目录或搜索路径上。4)将重点怀疑的命令行后的分号删除,使得计算结果能够实时地显示在屏幕上,作为查错的依据,根据显示的结果判断问题的所在。5)如果怀疑某个函数文件有问题,可以在该函数文件的函数定义行前加“%”,使其函数体成为命令文件(因为命令文件中的变量存储在工作空间中,可以在工作空间窗口和数组编辑器观察修改),再给函数的参数赋值,调好后再改回函数文件。2.文本编辑器的调试功能(1)设置断点设置断点是高级语言中程序调试的重要手段之一,断点是在程序特定位置设置的中断点,当程序运行至断点处时会暂停运行,此时可通过检查相关变量的内容等方法确定程序的运行是否正确。图中的红色菱形点即为设置的断点。备注:(2)Debug菜单1)Step:单步执行。每单击一次,程序运行一次,但不进入函数。2)Stepin:单步运行。遇到函数时进入函数内,仍单步运行。3)Stepout:停止单步运行。如果是在函数中,跳出函数;如果不在函数中,直接运行到下一个断点处。4)SaveandRun:存储文件并从第1行开始执行程序,当遇到第1个断点时暂停运行,并变为Continue;单击〈F5〉或【Continue】则继续运行。5)GoUntilCursor:从当前位置运行到光标所在的位置。5.2MATLAB程序设计一、if语句1.单分支if语句最简单的选择结构语句,其基本格式为:if表达式语句组end说明:表达式多为关系或逻辑表达式。如果表达式为真(非零),就执行if和end之间的语句组,然后再执行end之后的语句;如果表达式为假(零),就直接执行end之后的语句。2.双分支if语句前面提供的单分支if语句只能处理较简单的条件,功能不全面。为此MATLAB还提供了双分支if语句结构。其基本格式为:if表达式语句组1else语句组2end说明:如果表达式为真(非零),则执行语句组1,再执行end后面的语句;如果表达式假(为零),则先执行语句组2,再执行end后面的语句。多分支if语句当有三个或更多的选择时,可采用if语句的嵌套,也可以采用多分支if语句。其基本格式为:if表达式1语句组1elseif表达式2语句组2…elseif表达式n语句组nelse语句组n+1End备注:二、switch语句switch语句是多分支选择语句。if语句只有两个分支可供选择,如果分支较多,则嵌套的if语句层数多,程序冗长而且可读性降低。switch语句的基本格式为:switch表达式case数组1语句组1case数组2语句组2…case数组n语句组notherwise语句组n+1end三、while语句while语句是条件循环语句,在条件(多为关系表达式)控制下重复执行,直到条件不成立为止。while循环的一般形式是:while表达式语句体end说明:先计算表达式的值,如果非零,语句体就执行一次;执行完毕再次计算表达式的值,如果仍然非零,语句体就再执行一次;如此循环,直到表达式的值为零。如果表达式的值总是非零,该循环将无休止地进行(即死循环),程序设计时一定要避免。四、for语句for语句为计数循环语句,在许多情况下,循环条件是有规律变化的,通常把循环条件初值、终值和变化步长放在循环语句的开头,这种形式就是for语句的循环结构。for循环的一般形式是:for循环变量名=表达式1:表达式2:表达式3语句体end说明:其中表达式1的值是循环变量的初值,表达式2的值是循环步长,表达式3的值是循环变量的终值。初值、步长和终值可以取整数、小数、正数和负数,步长可以缺省,缺省值为1。备注:循环的嵌套如果一个循环结构的循环体又包括一个循环结构就称为循环的嵌套,或称为多重循环。任一种循环语句的循环体部分都可以包含另一个循环语句,多重循环嵌套的层数可以是任意的。习惯上按照嵌套层数,分别叫做二重循环、三重循环等。处于内部的循环叫做内循环,处于外部的循环叫做外循环。在设计多重循环时,要特别注意内、外循环之间的关系,以及语句放置次序,不要搞错。五、其他语句1.continue语句continue语句用于控制for循环或while循环跳过某些执行语句,当出现continue语句时,则跳过循环体中所有剩余的语句,继续下一次循环,即结束本次循环。2.break语句break语句用于终止for循环和while循环的执行。当遇到break语句时,则退出循环体,继续执行循环体外的下一个语句,即中止循环。在嵌套循环中,break往往存在于内层的循环中。3.try语句MATLAB从5.2版开始提供了try语句,这是一种试探性执行语句。语句格式为:try语句组1catch语句组2end说明:先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。这种试探性执行语句是其他高级语言所没有的。备注:作业、讨论题、思考题:见课本Matlab程序设计教案标题:simulink仿真应用教学目标:1、掌握simulink模块的应用;2、了解仿真模型的参数设置。教学重点及难点:simulink模块操作教学内容(教学时数:4)本章要点Simulink系统的基本模块仿真模型的编辑仿真参数的设置6.1认识SimulinkSimulink是MATLAB环境下对动态系统进行建模、仿真和分析的一个软件包。该系统的两个主要功能就是Simu(仿真)和Link(连接)。一、Simulink的启动和退出1.Simulink的启动在MATLAB操作桌面下,单击工具栏中的“SimulinkLibrary”按钮;或在命令窗口键入命令“simulink”,就会弹出一个名为“SimulinkLibraryBrowser”的浏览器窗口。2.模型的创建在创建新模型时,单击SimulinkLibraryBrowser浏览器上方工具栏内的“建立新模型”图标、或者单击MATLAB命令窗口File→New→Model选项,会弹出一个名为Untitled(无标题)的空白窗口,所有控制模块都创建在这个窗口中。备注:二、Simulink基本模块在Simulink的模块库浏览器窗口左侧的Simulink选项上单击鼠标右键,单击弹出菜单的OpenSimulinkLibrary选项,可以打开Simulink模块库窗口。1.信号源模块(Sources)双击Simulink模块库窗口中的Sources模块,即可打开信号源模块。备注:2.输出模块(Sinks)备注:模块功能模块功能Scope示波器To

File输出到文件Floating

Scope浮动示波器To

Workspace输出到工作空间XY

GraphXY关系图Terminator通用终端Outl创建输出端Stop

Simulation输出不为0时停止仿真Display实时数值显示3.连续系统模块(Continuous)备注:连续系统模块的功能4.数学运算模块(MathOperations)备注:6.2Simulink模块操作一、模块的编辑处理1.模块的操作(1)添加模块当要把一个模块添加到模型中,先在Simulink模块库中找到它,然后直接将这个模块拖入模型窗口中即可。(2)选取模块当模块已经位于模型窗口中时,只要用鼠标在模块上单击就可以选中该模块,这时模块的四角上出现一些黑色的小方块,这些小方块就是该模块的关键点,拖动这些黑色小方块可以改变模块的大小。2.模块位置和外形的调整(1)调整模块位置(2

温馨提示

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

评论

0/150

提交评论