- 391.50 KB
- 2022-08-08 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
武汉理工大学汽车工程学院利用MATLAB解决《汽车理论》问题主讲:王计广\n学习目的和目标学习目的:能够独立运用MATLAB完成课后习题作业学习目标:能够深入学习MATLAB,在工作中熟练运用MATLAB\nMATLAB的发展70年代后期,CleveMoler担任美国墨西哥大学计算机系系主任,为了让学生方便的调用EISPACK和LINPACK,设计了接口程序,取名MATLAB(MATrixLABoratory),即Matrix和Laboratory的组合。MATLAB的发展历程1984年推出的是3.0的DOS版本1992年MathWorks公司于推出了4.0版本,1994年的4.2版本扩充了4.0版本的功能,尤其在图形界面设计方面更提供了新的方法。1997年推出的5.0版允许了更多的数据结构,如单元数据、多维矩阵、对象与类等,使其成为一种更方便编程的语言。1999年推出的MATLAB5.3版在很多方面又进一步改进了MATLAB语言的功能。2000年10月底推出了其全新的MATLAB6.0正式版(Release12),在核心数值算法、界面设计、外部接口、应用桌面等诸多方面有了极大的改进。现在MATLAB支持各种操作系统,它可以运行在十几个操作平台上,其中比较常见的有基于Windows9X/NT、OS/2、Macintosh、Sun、Unix、Linux等平台的系统。现在的MATLAB再也不是一个简单的矩阵实验室了,它已经演变成为一种具有广泛应用前景的全新的计算机高级编程语言了。其功能也越来越强大,会不断根据科研需求提出新的解决方法。\nMATLAB简介MATLAB的名称源自MatrixLaboratory,它是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,利用MATLAB产品的开放式结构,可以非常容易地对MATLAB的功能进行扩充,从而在不断深化对问题认识的同时,不断完善MATLAB产品以提高产品自身的竞争能力。现在主要应用于科学计算、机械动力、化工、计算机通讯、汽车、金融等领域。\nMATLAB基本功能数学运算功能2D和3D图形显示功能交互式的高级编程语言----M语言编程功能编译功能Simulink仿真功能Stateflow交互式设计功能自动代码生成功能工具箱函数功能\nMATLAB用途数值分析数值和符号计算工程与科学绘图控制系统的设计与方针数字图像处理数字信号处理通讯系统设计与仿真财务与金融工程\nMATLAB的操作界面环境指令窗该窗是进行各种MATLAB操作的最主要窗口。在该窗内,可键入各种送给MATLAB运作的指令、函数、表达式;显示除图形外的所有运算结果;运行错误时,给出相关的出错提示。历史指令窗该窗记录已经运作过的指令、函数、表达式,及它们运行的日期、时间。该窗中的所有指令、文字都允许复制、重运行及用于产生M文件。当前目录浏览器在该浏览器中,展示着子目录、M文件、MAT文件和MDL文件等。对该界面上的M文件,可直接进行复制、编辑和运行;界面上的MAT数据文件,可直接送入MATLAB工作内存。此外,对该界面上的子目录,可进行Windows平台的各种标准操作。工作空间浏览器该浏览器默认地位于当前目录浏览器的后台。该窗口罗列出MATLAB工作空间中所有的变量名、大小、字节数;在该窗中,可对变量进行观察、图示、编辑、提取和保存。\nMATLAB数值、变量和表达式Matlab语言最基本的赋值号的表达式为:变量名列表=表达式例1:【说明】指令行“头首”的“>>”是“指令输入提示符”,它是自动生成的。MATLAB的运算符(如+、-等)都是各种计算程序中常见的习惯符号。一条指令输入结束后,必须按[Enter]键,那指令才被执行。由于本例输入指令是“不含赋值号的表达式”,所以计算结果被赋给MATLAB的一个默认变量“ans”。它是英文“answer”的缩写。\n变量命名规则变量名、函数名是对字母大小写敏感的。如变量myvar和MyVar表示两个不同的变量。sin是MATLAB定义的正弦函数名,但SIN,Sin等都不是。变量名的第一个字符必须是英文字母,最多可包含63个字符(英文、数字和下连符)。如myvar201是合法的变量名。变量名中不得包含空格、标点、运算符,但可以包含下连符。如变量名my_var_201是合法的,且读起来更方便。而my,var201由于逗号的分隔,表示的就不是一个变量名。\nMATLAB默认的预定义变量预定义变量含义预定义变量含义ans计算结果的默认变量名NaN或naneps机器零阈值Inf或inf无穷大,如1/0nargin函数输入宗量数目i或jnargout函数输出宗量数目pirealmax最大正实数realmin最小正实数\n1.MATLAB数值计算--向量向量的创建a=[123456987]b=0:20;向量的加减设a,b为同维向量,则c=a+b或c=a-b得到两个向量相加减的结果。向量的乘除点积运算的运算符为.*,其意义为两个向量的对应元素进行乘法运算。例如a=[12],b=[34]则c=a.*b=[38]^为向量的乘方运算例如c=a.^2=[14]分号的作用,有无[]均可\n2.MATLAB数值计算—矩阵输入矩阵时每一行元素有分号或者回车键分隔。例如:B=[1234;5678;9101112]B=123456789101112\n矩阵运算矩阵转置运算C=B’矩阵乘法D=B*CD=307011070174278110278446矩阵点乘D=B.*C矩阵乘方D=B^2矩阵点乘D=B.^2注意区分:A.点乘是两矩阵对应元素相乘B.矩阵乘法遵循线性代数的乘法法则注意区分:A.点乘是矩阵相应元素的幂B.矩阵乘方是n个相同的矩阵相乘\n3.MATLAB代数表达式函数多项式如何写?例如:y=x*exp(-x)f(t)=t^2*cos(t)y=sin(abs(x*y))注意:在MATLAB中对于一些符号有特定的表达形式,如下例:绝对值|a|-----abs(a)圆周率-------pi开根号--------sqrt(a)等等\n发动机转矩表达式Tq=-19.313+295.27*(n/1000)-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000).^4;注意:MATLAB和C语言一样,首先要对表达式里面的变量进行定义。如上述表达式应先定义转速n\n4.MATLAB绘图plot——最基本的二维图形指令。其主要功能:如果已经存在一个图形窗口,plot命令则清除当前图形,绘制新图形可单窗口单曲线绘图;可单窗口多曲线绘图;可单窗口多曲线分图绘图;可多窗口绘图可任意设定曲线颜色和线型可给图形加坐标网线和图形加注功能\nplot的调用格式plot(x)——缺省自变量绘图格式,x为向量,以x元素值为纵坐标,以相应元素下标为横坐标绘图plot(x,y)——基本格式,以y(x)的函数关系作出直角坐标图,如果y为n×m的矩阵,则以x为自变量,作出m条曲线plot(x1,y1,x2,y2)——多条曲线绘图格式plot(x,y,’s’)——开关格式,开关量字符串s设定曲线颜色和绘图方式,使用颜色字符串的前1~3个字母,如yellow—yel表示等。或plot(x1,y1,’s1’,x2,y2,’s2’,…)\n曲线颜色和线型S的标准设定值如下:字母颜色标点线型y黄色·点线m粉红○圈线c亮蓝××线r大红++字线g绿色-实线b蓝色星形线w白色:虚线k黑色-·(--)点划线\n单窗口多曲线绘图t=0:pi/100:2*pi;y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5);plot(t,y,t,y1,t,y2)同样可以使用holdon但相对比较麻烦\n单窗口多曲线分图绘图subplot——子图分割命令调用格式:subplot(m,n,p)例如:t=0:pi/20:2*pi;y1=sin(t)y3=tan(t)y2=cos(t)\n图形加注功能title——给图形加标题xlable——给x轴加标注ylable——给y轴加标注gtext——给曲线标注\n在MATLAB中求最大值、最小值函数极大值:max极小值:min例如:A=[123;456;789];Amax=max(max(A));Amin=min(min(A));注意:矩阵在寻找最大值/最小值时以列向量为一个单元查找\nMATLAB编程—M文件MATLAB中各种命令可以完成许多单一的任务,对于某些较为复杂的问题,仅靠现有的命令或函数来解决,往往是难以达到目的。为此,要运用MATLAB编程语言编制程序,形成M-文件。程序是使计算机完成各项运算的命令集,运行一个编制好的程序,计算机会从第一条命令行开始,一行接一行地执行相应的命令,直到终止。程序一般包含:数据输入,数据处理和结果输出三部分,其中数据处理是核心。程序编写调试完成后,需要存盘,形成永久性文件,可以随时对它进行调用或修改。文件名以字母开头,但不能用专用变量名,如pi等。MATLAB中每一个命令都是一个M-文件。\nM文件的建立与编辑1.建立新的M文件(1)菜单操作:MATLAB命令窗口的File菜单→New菜单项→M-file命令。(2)命令操作:在MATLAB命令窗口输入命令edit。(3)命令按钮操作:单击MATLAB命令窗口工具栏上的“新建”命令按钮。2.编辑M文件\nM文件的分类分类:命令文件(ScriptFile)和函数文件(FunctionFile)。主要区别:(1)命令文件没有输入参数,也不返回输出参数;函数文件可以带输入参数,也可返回输出参数。(2)命令文件对工作空间中的变量进行操作,执行结果完全返回工作空间;函数文件中定义的变量属局部变量。(3)命令文件可以直接执行;函数文件要以函数调用的方式使用。\n数据的输入输出输入:input函数调用格式为:A=input(‘提示信息’,选项);输出:disp函数调用格式为disp(‘输出项’)\n求一元二次方程ax2+bx+c=0的根。程序如下:a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);\nMATLAB控制流if-else-end条件控制switch-case控制结构for循环和while循环break:导致包含该指令的while、for循环终止,或在if-end,switch-case,try–catch中导致中断。continue:跳过位于它之后的循环体中其他指令,而执行循环的下一个迭代.return:结束return指令所在函数的执行,而把控制转至主调函数或者指令窗。否则,只有待整个被调函数执行完后,才会转出。\nif-else-end条件控制例:建立符号函数sign(x)x=input('x=');ifx>0sn=1;elseifx==0sn=0;elsesn=-1;end输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。c=input('请输入一个字符','s');ifc>='A'&c<='Z'disp(setstr(abs(c)+abs(‘a’)-abs(‘A’)));%setstr()将ASCII码数字转化成字符elseifc>='a'&c<='z'disp(setstr(abs(c)-abs('a')+abs('A')));elseifc>='0'&c<='9'disp(abs(c)-abs('0'));elsedisp(c);end\nswitch-case控制结构例:某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):price<200没有折扣200≤price<5003%折扣500≤price<10005%折扣1000≤price<25008%折扣2500≤price<500010%折扣5000≤price14%折扣输入所售商品的价格,求其实际销售价格。\nswitch-case控制结构price=input('请输入商品价格');switchfix(price/100)case{0,1}%价格小于200rate=0;case{2,3,4}%价格大于等于200但小于500rate=3/100;casenum2cell(5:9)%价格大于等于500但小于1000rate=5/100;casenum2cell(10:24)%价格大于等于1000但小于2500rate=8/100;casenum2cell(25:49)%价格大于等于2500但小于5000rate=10/100;otherwise%价格大于等于5000rate=14/100;endprice=price*(1-rate)%输出商品实际销售价格\nfor循环例:求和:s=1+2+…+nn=input('请输入n=');s=0;fori=1:ns=s+i;end\nwhile循环例:求和:s=1+2+…+n<3000s=0;k=1;whiles<3000s=s+k;k=k+1;end\n两种方法解答直接在commandwindow输入创建M文件\n绘制汽油发动机使用外特性曲线发动机的最低转速:n=600r/min;发动机的最低转速:n=4000r/min;发动机转矩:Tq=-19.313+295.27*(n/1000)-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000).^4;在MATLAB中可以使用plot(n,Tq)做出外特性曲线\n选择变速器的挡数主减速器i0=5.83四挡ig1=6.09;ig2=3.09;ig3=1.71;ig4=1.00五挡ig1=5.56;ig2=2.769;ig3=1.644;ig4=1.00;ig5=0.793;\n轻型货车的参数质量(kg):m1=2000;m2=1800;m3=3880;半径(m):r=0.367传动效率:b=0.85滚动阻力系数:f=0.013空气阻力系数X迎风面积:CA=2.77飞轮转动惯量:If=0.218二前轮转动惯量:I1=1.798四后轮转动惯量:I2=3.598\n驱动力、车速、行驶阻力计算驱动力公式:Ft=Tq*ig*i0*b/rFt1=Tq*ig1*i0*b/r;以此类推滚动阻力:Ff=G*fFf=m3*g*f车轮速度计算:u=0.377*r*n/(i0*ig)空气阻力计算:Fw=CA*u^2/21.15;\n做出驱动力与行驶阻力曲线利用plot做出驱动力与行驶阻力曲线,即plot(u,F)注意:标注坐标的XY轴-----xlabel/ylabel对驱动力和行驶阻力进行标注-----gtext(‘```’)\n求汽车的加速曲线加速阻力的汽车旋转质量换算系数:a=1+(1.798+3.598)/(0.367^2*3880)+(0.218*ig.^2*5.83^2*0.85)/(0.367^2*3880);可以得到du/dt=(1/(a*m3))*(Ft-(Ff+Fw))即可做出加速度曲线:plot(u,du/dt)\n求最大爬坡度最大爬坡度公式:I=tan(asin((Ft-Fwf)/(3880*9.8)))利用plot(u,I)得到最大爬坡度曲线图\n求解最高车速、最大爬坡度和相应的附着率最高车速:Umax=max(u4)最大爬坡度:fmax=max(max([I1,I2,I3,I4]))对应的附着力:Cf=fmax/(1.947/3.2+0.9/3.2*fmax)\n《汽车理论》课后习题disp(‘轻型货车')n=[600:100:4000];Tq=-19.313+295.27*(n/1000)-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000).^4;plot(n,Tq)i0=5.83;ig=[6.09;3.09;1.71;1.00];[N,Ig]=meshgrid(n,ig);u=0.377*0.367*N./(i0*Ig);Ft=ig*Tq*5.83*0.85/0.367;plot(u',Ft')Ff=3880*0.013;Fw=2.77*u.^2/21.15;holdonplot(u',(Ff+Fw)')\na=1+(1.798+3.598)/(0.367^2*3880)+(0.218*Ig.^2*5.83^2*0.85)/(0.367^2*3880);A=(Ft-Fw-Ff)./(a*3880);Amin=min(min(abs(A)));Umax=u(find(abs(A)==Amin))Cf=asin((Ft-Ff-Fw)/(3880*9.8));Cfmax=max(max(Cf))imax=tan(Cfmax)\n交流:Simulink仿真如下图所示的系统中,已知质量1kg,阻尼2N.sec/m,弹簧系数100N/m,且质量块的初始位移x(0)=0.05m,其初始速度m/sec,要求创建该系统的SIMULINK模型,并进行仿真运行。\n谢谢!!欢迎继续交流!