天天看点

matlab simulink 车辆能耗_simulink基于模型开发基础1

根据b站董老师视频资料整理,感谢董工讲解

大家好,我是mathworks公司的工程师,董淑成,同学们现在还在学校,等同学们毕业以后去了工作单位,会发现我们汽车行业大量的工作是在仿真和控制上,做一些工作

我今天要培训的内容是MATLAB,simulink,stateflow,还有simulink模型的验证测试、代码生成,我们首先来看一下matlab,什么叫MATLAB,他本身是一个矩阵实验室,最开始这个产品个是为了开发便于矩阵运算的功能,当然现在他已经成长为一个非常庞大的产品。涵盖了像科学计算、动态仿真、物理建模、验证、软件实现等等。汽车行业应用matlab非常广泛,有两个传统方向是运用非常多的,一个是仿真,我们在研究车辆动力学的时候可以把这个模型搭出来,然后去仿真,看看效果怎么样,这是我们在汽车行业用的非常广泛的一个方向,还有一个我们把模型做出来之后,我们把模型跑在硬件设备上,工控机上,我们做hil测试,这也是仿真的一个应用。另外一个还有一个方向,软件开发,现在我们经常提到软件定义汽车是吧,汽车上软件所占的比重越来越多,我们有大量的控制器在车上,一辆高端车可能有上百个控制器。就算差一些的车,十几二十万的,也有二三十个控制器。这些控制器呢,他们有大量软件,这些软件基本上是用simulink开发的。当然我这里说的软件是指应用层软件。基础软件的话像操作系统、驱动啊,基本上是由手工编码的方式实现的。应用层软件基本是由simulink开发的,这是我们的行业现状。

我们首先来看MATLAB,我们来看matlab编程,同学们大概会学一些编程语言,matlab跟他们相比其实是一种更加简单的语言,我们介绍matlab介绍三种编程方式,一种是脚本语言,我们写一段脚本,顺序执行这一段脚本,把我们想做的事情实现出来。另一个是函数,就是面向过程的编程,我们可以定义一个函数,在函数里实现一些功能,然后在不同的地方去调用这个函数。还有一种是面向对象的编程。我们知道面向对象编程的语言很多,像java,c++等等。面向对象里面有个概念类,在这里我们也有面向对象的编程。我们来看一下脚本编程,matlab里面有一个按钮,新建,这里我们新建一个脚本。

matlab simulink 车辆能耗_simulink基于模型开发基础1

那么就出现这样一个界面,这是个编辑器,我们就可以编辑一段脚本出来了。

matlab simulink 车辆能耗_simulink基于模型开发基础1
matlab simulink 车辆能耗_simulink基于模型开发基础1

然后我们可以把这一段脚本保存下来,形成.m文件,我们再运行一下,结果如图所示。

matlab simulink 车辆能耗_simulink基于模型开发基础1

Plot是一个画图的操作,我们看一下这段脚本

Matlab很方便的地方就是可以随时的调试,比如我们可以在这里设置一个断点,我只要用鼠标在这里单击一下,然后再运行一下程序,程序就会在这个断点停下来,我把鼠标放到这个变量上就能看到这个变量当前的值。所以这是一个非常方便的开发环境,我们在写一些算法的时候非常方便。脚本编程呢非常简单,也没有什么规则格式,脚本语言在什么时候用的比较多啊,在我们汽车行业数据处理的时候。我们在实验室采集了一些数据,我们想要去发现一些规律,这个时候我们可以调用一些函数去处理,一些统计学习的函数啊,一些信号处理的函数,我们可以通过for循环把一批数据处理下。

matlab simulink 车辆能耗_simulink基于模型开发基础1

函数编程怎么做呢,同样,我们新建一个函数,它自动给我们构建了一个模板,matlab有一个特点,需要做到函数名和文件名一致,这是我们需要注意的,这和其他语言可能不一样,函数是有格式的

matlab simulink 车辆能耗_simulink基于模型开发基础1

我们保存一下,取melx2,那么我们在程序中也要做出相应的修改。我们可以在这里写一些算法出来。我就不多介绍了,这不是我们今天培训的重点。全局函数是函数名与文件名一致,那我们要在这个函数中调用一个局部函数呢?我们在编程的时候会经常用到这样一种方式,因为我们不希望函数体过大。在C语言的编程中一些公司要求一个函数不要超过100行。那么我们在matlab编程中应该有类似的要求,太大在后期的调试与维护会遇到很多麻烦。那么这是关于面向过程的函数编程。

matlab simulink 车辆能耗_simulink基于模型开发基础1

还有一种编程方法是什么,是面向对象的编程,这里我们可以新建一个类。同样保存一下,我们类要与文件名一致,如果你们写过面向对象程序的话,你们可能会比较熟悉这样一些说法,没接触过也没关系,我们大概也介绍一下,其实用的也不是很多,就是知道有这么个东西,classdef是一个类定义,和他配对的是end。类里面定义了一些属性一些方法,方法是什么,我们看里面定义了一些函数,说白了就是一些操作是吧,我们看这个方法里面定义了来你哥哥函数,这就是面向对象的编程。

matlab simulink 车辆能耗_simulink基于模型开发基础1
matlab simulink 车辆能耗_simulink基于模型开发基础1

面向对象的编程是用的时候需要创建对象,我们会把属性值附上去,我们会调用里面的函数来进行一些操作。这是关于面向对象的matlab实现。我们车辆和机械的学生在平时可能很少用到面向对象的编程,但是前面两种是用的比较多的。

我们看到matlab几种编程方式,有几个地方我们需要强调一下,这是一个命令行窗口,里面可以去运行一些命令。这些命令从哪来呢,首先他会找当前路径,就是在当前路径去找有没有这个命令,如果有,在当前路径运行这个命令,如果没有,matlab有一个路径设置,

这里面添加了很多路径,当前路径他如果找不到这个命令,他会在这里面去找,所以我们在做软件开发的时候,我们会不停的添加一些路径进来,当路径加的比较多的时候,会影响matlab运行的速度,所以我们要知道这里有个地方可以设置这个路径。

matlab simulink 车辆能耗_simulink基于模型开发基础1

咱们举个例子,比如这里有另外一个文件夹,我们要在其他的地方调用这个文件夹的命令,只需要把这个文件夹添加到路径中去

matlab simulink 车辆能耗_simulink基于模型开发基础1

右键文件夹就可以进行添加。添加后再输入命令,他会在这个文件夹搜索这个命令。这个是一个很重要的东西,很多刚开始使用matlab的人,经常在这上面犯错误。他一般都会有英文提示,如果你愿意看英文提示的话,一般都可以看出来。

matlab simulink 车辆能耗_simulink基于模型开发基础1

咱们再看右侧有一个工作区,如果你装的英文版matlab的话叫workspace,其实matlab有好多工作区,这个是基本工作区,叫base workspace。那么通常命令行里的一些变量都会放到这里面,matlab我们大概就讲这么些东西,反正我们之后讲simulink的时候,有些地方还会讲到matlab。

matlab simulink 车辆能耗_simulink基于模型开发基础1

另外要说的是matlab有一个很好的帮助文档,命令行里输入doc,他会打开帮助文件,matlab帮助文档应该是我见过的软件里面做的最好的帮助文档。你可以在这里面找到你需要的东西,你可以搜索一些命令,如果你想系统的看,你可以看左边的目录,另外你也可以下载帮助手册,看帮助手册的话太长了,但是遇到问题你去搜索这是没有问题的。

matlab simulink 车辆能耗_simulink基于模型开发基础1

帮助文档还有一个比较好的是这个例子,如果你对一个功能不是很熟悉,或者初学一个功能的话,可以看看他自带的例子。我们去照着他的例子去学习,这样效率就会比较高。Function我们的simulink用户用的不是很多,但是很多高级的用户会用它去做很多自动化工作,提高了工作效率。其实就是刚才我们说的使用脚本的方式去把一些工作自动化处理。那么自动化需要一些函数啊,那么函数从哪找,从这里面找。所以我们今天给大家培训,不仅仅希望授之以鱼,还要授之以渔,就是我们在学matlab的时候需要自己去利用matlab相关资料去解决遇到的各种问题。

matlab simulink 车辆能耗_simulink基于模型开发基础1

附加例子:

常见命令行

脚本编程

函数编程

面向对象编程

如何学习simulink仿真?​www.zhihu.com

matlab simulink 车辆能耗_simulink基于模型开发基础1