MATLAB在“汽车理论”中的简单应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB在 汽车理论 中的简单应用 汽车理论 可以使用MATLAB作为科学计算工具的课程㊂本文档的目的在于向之前没有接触过MATLAB的同学介绍其在 汽车理论 中的简单应用,更多关于MATLAB的知识需要大家结合其他课程,通过进一步的学习和研究来掌握㊂
需要说明的是:
1)本文档默认读者已掌握C语言和线性代数基本知识㊂
2)红色字体的语句可以直接复制到MATLAB中进行运算㊂语句中用到的符号(引号内部分除外)均为英文状态下输入㊂本文档所有语句均已在MATLAB7.8.0(R2009a)版本下调试过㊂
3)例程编写样式纯属个人习惯,大家不必拘泥㊂
4)如对本文档及‘汽车理论“第6版中的附录C㊀一个学生的 汽车理论 课程MATLAB习题编程思路有任何问题,欢迎发送邮件一起讨论㊂邮件地址:wang-d07@ ㊂
1.MATLAB使用指南
打开MATLAB后出现的是软件的主界面㊂几个窗口中最重要的是Command Window,用户可以在里面输入程序,编写的函数的结果也在这里显示㊂
首先对MATLAB进行配置㊂如果是在自己的计算机上编程,建议先建一个属于自己的workspace,用来保留用户的工作环境㊂选择 file Save Workspace As ,在合适的目录下保存用户自己的workspace(.mat文件)㊂这样,以后用户编程的环境就默认为这个workspace了㊂
虽然可以直接在Command Window里编写程序,但这样的程序无法被保存和发布㊂选择 file New Blank M File ,可以新建空白的MATLAB函数文件(.m文件),在这里编写的程序可以被保存和发布㊂编写好的程序要经过编译之后才能执行㊂选择 Tools Save File and Run (也可以直接按
如果编写了子程序和主程序,那么需要先对子程序进行编译(此时不会产生任何结果),只有编译通过后再对主程序进行编译,才会显示结果㊂
当然,也可以选择新建 Function M File ,它直接提供一个函数模板㊂(个人感觉没有太大意义)
明白该如何操作MATLAB后,接下来介绍MATLAB中与C语言不同的变量单位 矩阵㊂
2.矩阵及其运算
MATLAB全称是Matrix Laboratory(矩阵实验室),因此矩阵是MATLAB中最基本的运算单位,熟练掌握矩阵的知识对于灵活运用MATLAB有很大帮助㊂
1
在MATLAB中,一个已知的矩阵可以定义如下:
A=[1-20;3.54.8666pi]
其中A是这个矩阵的名字,在MATLAB中,一个变量必须以字母开头,以数字㊁下划线等开头都是违法的(但可以用在变量名中间);A的值是一个矩阵,其元素分别为:
a11=1,a12=-2,a13=0,a21=3.5,a22=4.8666,a23=3.1415
由上述可知,同一行的元素用(一个或多个)空格隔开,不同行的元素用分号(英文状态下的,下同)隔开㊂其中, pi 是MATLAB中已经定义好的常数,可以直接引用㊂可以看出MATLAB与C语言在定义上有所差别,即如果变量是已知的,MATLAB无须事先定义对象类型(整数㊁浮点数㊁无符号数等),通过正常运算得出的变量也无须对其事先定义类型㊂
此外,还可以定义向量,如:
B=[123]
C=[0;0.5;-1]
其中,B是一个行向量,C是一个列向量㊂
ᶄ 表示矩阵的转置,即列向量C也可以表示为:
C=[00.5-1]ᶄ
如果想表示矩阵中的某个元素,其方法如下:
a=A(2,1)
可以得到:
a=3.5
其中 () 内的语句部分表示元素的位置, , 前为行, , 后为列,即a等于矩阵A中第2行第1列的元素㊂
对于一个向量,由于某一方向维度为1,因此上述语句可以简化为:
b=B(3)
c=C(2)
可以得到:
b=3
c=0.5
如果想取矩阵中的某一部分,其方法如下:
D=[23783;01956;46215;40391]
E=D(1:3:4,1:2:5)
F=D(1:3,1:2)
G=D(2,:)
可以得到:
E=[273;431]
F=[23;01;46]
G=[01956]
其中, : 表示步进,如1:2:5表示从1开始步进为2直到5,即1㊁3㊁5,因此E 为矩阵D的第1㊁4行(步进为3)和第1㊁3㊁5列(步进为2)交叉处的元素组成的矩阵; 2
如果步进为1,则可以省略不写,如1:3表示1㊁2㊁3,则F为矩阵D的第1~3行和1~2列交叉处元素组成的矩阵;单独使用的 : 表示所有行(列),即G为矩阵D第2行所有列的元素组成的矩阵㊂
MATLAB也允许对矩阵进行扩充,但一定要注意维数的正确性㊂例如:
H=[31;52]
K=[H;60]
L=[01;Hᶄ]ᶄ
可以得到:
K=[31;52;60]
L=[031;152]
矩阵间可以进行加㊁减㊁乘㊁除等矩阵运算,但同样需要注意维数的正确性㊂例如: M=[10;21]
N=[31;10]
那么有:
M+N=[41;31]
M∗N=[31;72]
如果用一个常数与矩阵进行四则运算,结果是这个常数分别与矩阵中的元素进行四则运算,如:
3+M=[43;54]
2∗M=[20;42]
此外,MATLAB还提供了有别于正常的矩阵运算的点乘(除㊁次方)运算,即在运算符号前加 . ,表示矩阵中对应位置的元素进行代数运算㊂例如:
M.∗N=[30;20](对应位置元素相乘)
M.^2=[10;41](对应位置元素平方)
点乘(除㊁次方)运算在数据处理中很常用㊂例如,一个20维向量中记录的是汽车通过的20个测试路段的长度,另一个20维向量中记录的是汽车通过每个测试路段所用的时间,两个向量做点除运算,得到一个20维向量,即为汽车通过每个路段的平均速度㊂需要注意的是,由于矩阵加减本身就是相应位置元素的代数运算,因此没有点加(减)运算㊂
在MATLAB中已定义好了一些特殊的矩阵,用户可以方便地使用,包括零矩阵(元素全为0)zeros㊁一矩阵(元素全为1)ones㊁单位矩阵(对角线元素均为1㊁其余位置元素均为0的方阵,即 I )eyes,用户用时只需定义矩阵的维数即可㊂例如:
P=zeros(2,3)
Q=ones(5,1)
R=eyes(2)
分别表示P为一个2行3列的零矩阵,Q为一个5维的一矩阵,R是一个2维单位矩阵㊂
需要注意的是:
1)如果zeros和ones只给了一个维度的定义,默认为方阵,如zeros(3)是一个3∗3
3