视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
工程软件实训报告
2025-09-26 19:39:53 责编:小OO
文档
武汉理工大学物流工程专业

软件实训

班级:物流工程1301班

学号:01213160331

姓名:郭建群

指导教师:曹小华

2015年09月02日

一、训练目的

1、熟悉Matlab工具软件的开发环境

2、掌握Matlab的一些常用命令

3、掌握Matlab/Simulink建模仿真的方法

二、训练任务及相应的解决思路、命令和程序

1、解方程:Ax=B,其中,

A=,B=

在command windows中输入如下命令:

按回车键即可得到x的值。

程序分析:在方程Ax=B中,x=A/B即为方程的解(其中“/”为左除符号)。

2、数值运算

已知某班的6名学生的三门成绩如下:

序号       1         2          3        4        5        6

高数       78                       73        68       85

外语       83        77         80      78        70       79

电路       82        91         78      82        68       81

试写出有关命令,先分别找出三门课的最高分及其学生序号,然后找出三门课总分的最高分及其学生序号。

在command中进行如下运算:

程序分析:[y,k]=max(A,[],2)是用来求矩阵中每行的最大元素及其所在列的序号;[S,L]=max(sum(A))是用来求每列元素的最大值及其所在的序号,其中sum(A)表示返回一个行向量,其中第i个元素是A的第i列的元素和。

3、建立M文件,计算积分y=;

建立一个如下的M文件:

程序分析:输完程序后需要点File里面的Save Workspace进行保存,保存完成后直接点回车键即可得到计算结果。

4、建立M文件,在[-2π   2π]范围内绘制二维曲线图y=

建立一个如下的M文件:

程序分析:保存并执行后,打开图形窗口即可看到所得图形,如下图所示:

5、典型二阶系统的结构图如图所示,利用Simulink建立仿真模型,并给出建模步骤。

(1)SIMULINK的启动:在MATLAB 命令窗口的工具栏中单击按钮或者在命令提示符>>下键入simulink命令,回车后即可启动Simulink程序。启动后软件自动打开Simullink模型库窗口,如下图1所示。这一模型库中含有许多子模型库,如Sources(输入源模块库)、Sinks(输出显示模块库)、Nonlinear(非线性环节)等。因为我们要建立一个控制系统结构框图,所以应该选择File| New菜单中的Model选项,或选择工具栏上 new Model 按钮,打开一个空白的模型编辑窗口如图2所示。

图1

图2

(2)画出所需模块,并给出正确的参数: 在sources子模块库中选中阶跃输入(step)图标,将其拖入编辑窗口,并用鼠标左键双击该图标,打开参数设定的对话框,将参数step time(阶跃时刻)设为0。 在Math(数学)子模块库中选中加法器(sum)图标,拖到编辑窗口中,并双击该图标将参数List of signs(符号列表)设为|+-(表示输入为正,反馈为负)。 在continuous(连续)子模块库中、选积分器(Integrator)和传递函数(Transfer  Fcn)图标拖到编辑窗口中,并将传递函数分子(Numerator)改为〔900〕,分母(Denominator)改为〔1,9〕。 在sinks(输出)子模块库中选择scope(示波器)和Out1(输出端口模块)图标并将之拖到编辑窗口中。

(3)将画出的所有模块按题目要求用鼠标连接起来,构成一个原系统的框图描述如图3所示。

图3 

(4)选择仿真算法和仿真控制参数,启动仿真过程,得到仿真图形如图4所示。

图4

三、总结

我原来对MATLAB一窍不通,甚至没有听说过这一款软件。经过了为期一周学习,以及自己假期阅读相关书籍对照电脑进行实际操作,基本上对 MATLAB 有了一定的了解。下面是我学习 MATLAB 在理论和实践方面的一点心得与体会,可能有些地方自己理解的不是很正确,但是随着学习的深入,我想我可以发现自己的错误所在,并随着学习的加深对MATLAB的相关应用操作更加熟练。

MATLAB(矩阵实验室)是MATrixLABoratory的缩写,是一款由美国The MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C++和FORTRAN)编写的程序。

20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB。1984年由Little、Moler、Steve Bangert合作成立了的MathWorks公司正式把MATLAB推向市场。到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。MATLAB用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分,在数学等领域应用非常广泛。

在学习MATLAB理论的过程中,我感觉到它和c语言有许多相似之处,它有c语言的特征,但是比c语言编程计算更加简单,适合于复杂的数算。对于一般的运算,我们只需要在打开软件的界面直接输入程序就好了,但是有一点需要注意的就是MATLAB程序具有自己的独特之处,需要我们自己仔细研究。经过老师讲解以及自己阅读相关书籍并利用完成训练任务加以实践后后,我也逐渐掌握了很多关于MATLAB应用的技能。

1、矩阵的相关计算

在MATLAB中创建矩阵有以下规则:a、矩阵元素必须在”[ ]”内;b、矩阵的同行元素之间用空格(或”,”)隔开;c、矩阵的行与行之间用”;”(或回车符)隔开;d、矩阵的元素可以是数值、变量、表达式或函数;e、矩阵的尺寸不必预先定义。

下面介绍三种矩阵的创建方法:1、直接输入法:最简单的建立矩阵的方法是从键盘直接输入矩阵的元素,输入的方法按照上面的规则。建立向量的时候可以利用冒号表达式,冒号表达式可以产生一个行向量,一般格式是:e1:e2:e3,其中e1为初始值,e2为步长,e3为终止值。还可以用linspace函数产生行向量,其调用格式为:linspace(a,b,n),其中a和b是生成向量的第一个和最后一个元素,n是元素总数。可以看出来linspace(a,b,n)与a:(b-a)/(n-1):b等价。 2、利用MATLAB函数创建矩阵:基本矩阵函数如下:(1)ones()函数:产生全为1的矩阵,ones(n):产生n*n维的全1矩阵,ones(m,n):产生m*n维的全1矩阵;(2)zeros()函数:产生全为0的矩阵;(3)rand()函数:产生在(0,1)区间均匀分布的随机阵;(4)eye()函数:产生单位阵;(5)randn()函数:产生均值为0,方差为1的标准正态分布随机矩阵。3、利用文件建立矩阵:当矩阵尺寸较大或为经常使用的数据矩阵,则可以将此矩阵保存为文件,在需要时直接将文件利用load命令调入工作环境中使用即可。同时可以利用命令reshape对调入的矩阵进行重排。reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵A重新排成m*n的二维矩阵。

MATLAB的基本算术运算有:+(加)、-(减)、*(乘)、/(右除)、\\(左除)、^(乘方)、’(转置)。运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。(1)矩阵加减运算假定有两个矩阵A和B,则可以由A+B和A-B实现矩阵的加减运算。运算规则是:若A和B矩阵的维数相同,则可以执行矩阵的加减运算,A和B矩阵的相应元 素相加减。如果A与B的维数不相同,则MATLAB将给出错误信息,提示用户两个矩阵的维数不匹配。(2)矩阵乘法假定有两个矩阵A和B,若A为m*n矩阵,B为n*p矩阵,则C=A*B为m*p矩阵。(3)矩阵除法在MATLAB中,有两种矩阵除法运算:\\和/,分别表示左除和右除。如果A矩阵是非奇异方阵,则A\\B和B/A运算可以实现。A\\B等效于A的逆左乘B矩阵,也就是inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。对于含有标量的运算,两种除法运算的结果相同。对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系,一般A\\B≠B/A。(4)矩阵的乘方一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。(5)矩阵的转置对实数矩阵进行行列互换,对复数矩阵,共轭转置,特殊的,操作符.’共轭不转置(见点运算);(6)点运算在MATLAB中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。点运算符有.*、./、.\\和.^。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。

2、M文件和M函数

Matlab输入命令的常用方式有两种:一种是直接在Matlab的命令窗门中逐条输入Matlab命令;二是m文件工作方式。当命令行很简单时,使用逐条输入方式还是比较方便的。但当命令行很多时(比如说几十行乃至全成百上千行命令),显然再使用这种方式输入MATLAB命令,就会显得杂乱无章,不易于把握程序的具体走向,并且给程序的修改和维护带来了很大的麻烦。这时,建议采用Matlab命令的第二种输入形式m文件工作方式。

 m文件工作方式,指的是将要执行的命令全部写在一个文本文件中,这样既能使程序显得简洁明了,又便于对程序的修改与维护。m文件直接采用Matlab命令编写,就像在Matlab 的命令窗口直接输入命令一样,因此调试起来也十分方便,并且增强了程序的交互性。m文件与其他文本文件一样,可以在任何文本编辑器中进打编辑、存储、修改和读取。利用m文件还可以根据白己的需要编写一些函数,这些函数也可以橡Matlab提供的函数一样进行调用。从某种意义上说,这也是对MATLAB的二次开发。m文件有两种形式:一种是命令方式或称脚本方式;另一种就是函数文件形式。两种形式的文件扩展名均是.m。

(1)M文件  当遇到输入命令较多以及要重复输入命令的情况时,利用命令文件就显得很方便了。将所有要执行的命令按顺序放到一个扩展名为.m的文本文件中,每次运行时只需在MATLAB的命令窗口输入m文件的文件名就可以了。需要注意的是,m文件最好直接放在Matlab的默认搜索路径下(一般是Matlab安装目录的子目录work中),这样就不用设置m文件的路径了,否则应当用路径操作指令path重新设置路径。另外,m文件名不应该与Matlab的内置函数名以及工具箱中的函数重名,以免发生执行错误命令的现象。Matlab对命令文件的执行等价于从命令窗口中顺序执行文件中的所有指令。

(2)M函数  m函数文件是一个特殊的m文件,其常见格式如下:funcdon返问变量列表=函数名(输入变量列表),需要说明的是,这里输入变量的个数以及输出变量的个数是由MATLAB本身提供的两个保留变量nargin和nargout来给出的。输入变量要用逗号隔开,输出变量多于1个时,要用方括号括起来。我们可以借助于help命令显示其中的注释说明语句段。通过这样的方法就可以建立函数文件或者称m函数,其调用方法与一放的Matlab函数的调用方法相同。函数文件相当于对Matlab进行了二次开发。

3、Simulink仿真技术

Simulink是MATLAB中的一种可视化仿真工具,是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。Simulink可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。为了创建动态系统模型,Simulink提供了一个建立模型方块图的图形用户接口(GUI) ,这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。Simulink是用于动态系统和嵌入式系统的多领域仿真和基于模型的设计工具。对各种时变系统,包括通讯、控制、信号处理、视频处理和图像处理系统,Simulink提供了交互式图形化环境和可定制模块库来对其进行设计、仿真、执行和测试。

在MATLAB命令窗口中输入simulink结果会在桌面上出现一个称为Simulink Library Browser的窗口,在这个窗口中列出了按功能分类的各种模块的名称,当然我们也可以通过MATLAB主窗口的快捷按钮来打开Simulink Library Browser窗口,打开这个串口后,我们就可以根据自己的需要选择仿真需要的模块。

SIMULINK模块库按功能进行分类,包括以下8类子库:Continuous(连续模块),Discrete(离散模块),Function&Tables(函数和平台模块),Math(数学模块),Nonlinear(非线性模块),Signals&Systems(信号和系统模块),Sinks(接收器模块)和sources(输入源模块)。我们通常比较常用的是输入源模块。

经过这段时间的学习,我觉得想要学好MATLAB是不容易的,这是一件需要持之以恒的事,必须要坚持不懈的学习,还需要敢于开口向别人请教,更需要我们勤于思考,勤于记忆,勤于动手。因为MATLAB功能很轻大,而且程序设计是实践性和操作性很强的事情,需要我们亲自动手。因此,我们更应该多动手实践,熟悉MATLAB的操作,这对提高我们的操作能力非常有效。在这几天时间里,我仅仅是学习了MATLAB操作的一点点皮毛,想要进一步的学习,还需要我在以后的的实际运用里不断地深入学习,改善自己的不足之处,让自己能够有所进步,有所成长。下载本文

显示全文
专题