粉丝1643获赞4007

好,那下面我们就通过一个简单的例子来让大家熟悉一下生命力可如何来进行建模和仿真的工作。现在先描述一下我们的问题啊,我们想建一个什么样的模型呢?是这样, 我们有一个正选曲线啊, 正确曲线,那么正确曲线呢,他的正负最大值应该是在正一和负一之间,对不对啊?那么现在 我让大家啊筛选出啊,在正零点五和负零点五之间和之外的部分,能明白这意思吧? 啊,就是如果啊,我的正选曲线在零点五以上啊,或者负零点五以下 这部分区间里面啊,我需要显示一个数啊,我显示一个一啊,显示一个一。那么反之,如果我在正选曲线这个取值啊,在正负零点五之间啊这部分, 那么我呢要求你来给我显示一个零,就这个区别啊,这两个是 零点五和零点五,这就是我们的要求啊,就是我们要把这个正选曲线里面啊,在正负零点五这个区间以内的和区间以外的区分 分开啊,区间以内呢,我们显示零区间以外啊显示一,就这么一个问题,我们来看看在生命令可里面我们怎么来做好。回到生命令, 我们首先需要一个信号源,对吧?啊?我们信号源在哪找来着?在 sorry 里面,对不对?我们找到三应位,拖出来三应位我就有了。还有一种方法 啊,就是说如果你比较熟悉这个领域的话,双击空白处双击,然后直接输入一个上映,他就显示所有带有这个关键字的模块啊,也可以一样啊,好了,我们 现在就要确定他和零点五之间的关系了,对不对啊?所以呢,我们先把零点五这个东西给他拖出来, 在这里啊,一同样啊,也可以输入 cost, 也可以得到好不好?这个 cos 的 w 呢就输入负的零点五, 另一个呢是正的零点, ok, 两个有了,我们现在开始来构建逻辑关系了,对不对?首先是 在他们之间对吧啊,所以在他们之间的就是大于负零点五,而且小于零点五,是不是?所以我们用到一个按的按的在这找啊,在捞这个里面找,找到按大 大于小于呢,也在这个里面啊,就是小于零点五, 对吧?小于零点五写什么呀?大于零点负的零点五 切换成大于等于双击,他切换成大于等于, ok, 那就是说啊,这个正旋波啊,要再要大于负零点五啊,然后呢他还要小于正的零点五, 哎,就这样的这样一个模型,然后把它做的漂亮一点啊,要不这样拐来拐去的太难看了。这两个 看啊,一个上面这个是大于零点五,小于零点五,那么下面这个呢是大于零负的零点五,他们两个球 雨对吧?这两个是爱的的关系,这是他们在之间之间的话显示多少显示零吗?是不是根据我们刚才那个定义啊,我们回去看一看。在呃正旋曲线啊,在这两个范围之间的时候啊,我应该显示零啊,在这两个区间之外的时候呢,我显示一, 所以我这个地方就需要一个分支选择的东西啊,让他来区别显示啊,分支选择在哪呢?在森林到入庭里面有一个叫做思维池, 随时我说了他就像 afx, 对不对?我们这个其实就是个 afs, 如果满足啊,就是这个正选曲线,他在正负零点五之间啊,这是中间过来啊,中间,这是他的判断条件,然后这个时候他应该显示几呢? 应该显示零,对吧?那显示零,显示零的话呢,我们再拖一个零模块出来,大家注意啊,不用每次都要去那个库里找啊,我们在这个原有的模块啊,这个长数模块里面,按住 ctrl 键,按住 ctrl 啊,拖出来就 ok 了啊, 这是零,然后我们也不用每次去连这个线,看到吧,不用每次去连,你点选中源头,然后再按住 ctrl 去选中你想连的目的地啊, 自动就连上了啊。但是,呃,我们要注意啊,当他有多个端口的时候,他连的是第一个端口啊,这个大家注意一下,有的时候可能会出错,那么呃,这是在正负零点五之间啊,他显示零,那么反之呢?不满足呢?他显示假,应该显 显示一,对不对啊,所以我们这个地方啊,显示一好了,这个就完事了啊,这就是我们的这个逻辑,那么我们把这个逻辑显示出来,他的结果显示出来,我们就要用到信息里面的试播器,对不对?试播器, 哎, ok, 好,这个模型建完了,我们仿真一下啊,看到了这里,这是仿真时间啊,这仿真时间我们可以让他长一些,可以到二十,然后这里呢是控制仿真是否进行的啊,我们点一下转 好,他就在跑了啊,看下面这个地方跑的进度,很快就完成了,我们点开这个试播器看看结果怎么样, 是这样的一个结果是吧?啊?我们可以看到他是零,在零一之间变化的,对不对?但是他变化到底对不对啊? 我们现在还不知道是不是啊?我们得把赛,也就是说这个正选曲线也放进来,我们才知道他写的对不对,是吧?所以我们退出去把 三引这个符号也拉进来啊,把他也拉进来,怎么拉呢?我们需要在这个地方再加一个端口来显示三引,是不是?那教给大家一个快捷的方法啊,按住 ctrl 在你要分支的这条线上啊,点一下他就拖出来一个新的 分支啊,然后再把这个分支靠近他就 ok 了。这个新的一八版非常先进啊,这个东西做的很人性化,以前的话要进这个试播器里面去设 是几个端口, ok, 我们现在打开,然后再从这里面啊,这里面也可以按仿真再仿真一遍,我们看看结果 啊,你看到了吧?啊?这就是结果了啊,什么时候还记得我们的题是吧?什么时候显示一来着?是他正选曲线大于零点五或小于负零点五的时候,对不对啊?所以大家现在看啊,这个正选曲线 是不是大于零点五啊?在这一块是,在这一块区间是大于零点五,所以他是一,那么在这一块区间啊,这一块区间他是小于零点五的,所以你看他显示的是一, 对不对啊?同理这些地方也都是一样啊,都是一样。那么你说为什么这个地方他,呃,这个这个正选取下 还有棱角呢?啊?是因为他选了一个啊,他这个是一种遍布长方针啊。这个是,呃,稍微 稍微高端一点的知识啊,我们在这就先不展开了啊,我们可以通过把这个正悬周期拉长来消除这种棱角啊,在这里我们先用这种方式来消除一下, 因为大家看一下点开赛里面有一个频率,对不对啊?他这频率是一弧度每秒,太大了,我们把它搞成零点一啊,然后我们再进这里面去仿真一下,哎,太小了是吧?哈哈, 太小,我们把它改成零点五吧,零点五,然后再跑一下防震, 哎,这样就好了,大家看到了吧,啊?就平滑多了,是不是啊?这是大家知道他是由变不成仿真这个原因造成的就行了,后边为什么是变不成,什么时候用变不成我们再说啊,所以这个逻辑就实现了啊,是不是很简单?好了, 我们现在再来看一下啊,我们有必要用这么麻烦的逻辑来写吗?啊?不就是在正负零点五之间吗?对不对啊?所以我们可以稍微简化一下啊,就是这个分支啊,结果完全没有必要啊,为什么呢?是因为啊, 我们直接用这个逻辑运算服就 ok 了啊,因为这个啊,这个出来,嗯,这个按的也就是这个雨出来之后是什么呀?其实就是一和零,对不对?因为 他出来他是一个不尔运算,就是逻辑语吗?那么不尔运算出来就是一个不尔直,就是 two 或者 boss, 对吧?真或假,那么其实也就是零和一,对吧, 所以我们看这个逻辑的本身其实就已经产明了,或者说已经表明了我们的取值,对不 对?那么如果这两个条件满足,就是说他在负零点五和正零点五之间,那么这两个条件满足的话,我们这个地方输出的就是一对不对啊,那么不在这个之间呢?反之呢?输出的就是零 吧啊,所以他天然就满足,只不过和我们的题设是反着的。为什么呢?我们回去看一看。我们题社说的是在这个里面啊,就说如果他落到正负零点五之间,他的取值是零,对吧?他显示零,那么在区间 之外他显示一,但现在我们这个逻辑呢,是在区间之内他显示一啊,区间之外显示零,因为区在区间之内, 他这个这个判断条件为真吧?他显示一吗?那怎么办?我们用一个取反不就完了,是不是啊?我们取反不就完了?所以我们写一个哦出来啊,不是哦,不是哦,错了,错了,是闹, 对吧?是我们取飞吧,取反吧,飞门。也就是说我们本来这个地方在区间内啊,他显在落在区间内的话,他这应该是显示 一,现在我们要求的是落在区间内显示零,所以我把一取一下反就 ok, 好,再放进去,我们再运行一下,看看结果是否一致。哎, 看到了,和结果和刚才一样啊,所以我们通过这种方式啊,我们不用那个思维池,用天然的这个逻辑判断就同样解决了这个问题。 那么还能不能再简化呢?还能不能呢?其实还是可以的啊,从逻辑上来说已经不能再简化了,但是我们的这个模型表达来说,我们可以再简化。怎么做呢?我们来看一看啊,我们在 在逻辑运算里边啊,我们可以直接把这个正负零点零点五给表达出来,就通过一个模块就可以办到,你看这个模块是小于等于三吗?是吧?啊?我们可以写一个 小于等于负零点五吗?对不对啊?小于等于负零点五,然后同理我们可以拖一个出来啊,按照考生拖一个出来,大于等于 正的零点五吧,对不对啊?然后这两个啊,小于等于负零点五和 大于等于正零点五,这是不是在区间以外,对不对啊?那么这个两个区间以外应该取什么?应该取货对吧?啊?因为他两个没有交集啊,他们是货的关系,所以我们取一个。哦 哦,拿出来,然后两个都连在奥上,按住 ctrl 连就可以了,然后这两个呢?给他,哎,连上 就 ok 了。所以这个我们检查一下是否符合我们的提设要求啊,我们是要求在区间以外显示一,区间以内显示零,所以现在大家看这是什么?这是区间以外对不对啊?所以这个时候他应该显示一,是吧, 所以我们把它连上,正好我们用了哦,正好就是他在区间以外显示一,所以这个结果也是没有问题的,仿真看一样,对不对?所以当我们的这个模型 写到这个程度的时候啊,我认为就已经可以了,就比较简单了啊,所以我们以后写东西的时候呢,也要注意啊,做模型的时候也要注意。 嗯,找到适合你的啊,最简化的写法,这样可以让读你模型的人比较轻松啊,比较轻松。 那么再说一点呢,就是什么呢?就是说这个二十秒,这是我们的仿真时长啊,但是你们也看到了,仿真是瞬间完成的,对吧?瞬间完他没有跑二十秒,因为现在是一种非实时仿真啊。那么我们在啊丢到里面跑都是 实时仿真。那么实时仿真和非实时仿真的区别啊?或者什么时候用?呃,我们后面再讲。好吧,现在大家只要知道有这件事情就可以了。 ok, 这就是我们。呃,小小练习的一个内容,大家回去可以自己做更多的一些练习啊。因为斯维利克这个东西啊,我讲一个小时,不如 你自己练二十分钟,你的收获要大。好吧,大家手一定不要懒啊,自己多做两个就会发现他其实很简单啊。好,这节课就到这了。

嘿,大家好啊,从今天开始啊,我们就来了解一下司命令可啊,他的一些基本知识和基本的一些操作。 呃,如果你装了这个 m lab 之后啊,斯文宁可是作为他的一个工具箱啊,默认就是在里面的,所以说我们不需要单独的去安装斯文宁可这个东西,所以我们只要打开啊 my lab 就好了。双击打开啊,第一次啊,可能有点慢。 ok, 打开之后啊,我们来了解一下 i love 基本的这个布局啊,因为 i love 不是我们的重点,所以我们只讲最最基本的东西啊。嗯,首先三列啊,三列 主要的这个界面啊,左边这一列叫做当前文件夹啊,也叫工作目录啊,这个东西啊,就是你啊,现在啊,这个 money 运行这些程序啊,它产生的这个临时文件都会放到这个目录里面啊,都会放到它里面, 所以呢,呃,这个目录啊,还是很重要的啊,还是很重要的,因为你像,因为如果你这新装了 melube 啊,就像这样,呃,你没有动过它的话,你第一次打开它,一般来说都会定位在这个目录下面啊,就是 melub 的安装目录,然后这个 ben 文件夹里面, 那么这个文件夹其实是一个保留文件夹啊,他不让你用的,就是你如果在这个斯文丁克这个运行的过程中,他自动产生了一些呃,临时文件啊,一些过程的文件,他会扔到这个 啊当前文件夹里,但是呢,你如果当前文件夹是这个文件夹,他就会报错啊,说你这个文件夹不让你用啊,你来换一个,那么出现这种问题的时候,你只要切换一下啊,把这个当前文件夹换一下就行了, 如果你出了这种问题,呃,你百度一下,很容易找到解决方案啊,这是用初用 matlibe 最常见的一个问题啊。 好了,中间这一行呢,中间这一列呢,叫做命令行窗口啊,这里是打一些命令用的啊,你执行一些简单的命令,你像你,比如说你想在这这个平时做作业的时候啊,你想在这随手算几个数啊,还是很方便啊, 那么算出来的结果,或者说你在这个地方定义的数啊,定义的变量存在哪呢?就是存在右边这个工作区里面,比如说我们现在给 定一个名叫 a 的这么一个变量啊,他等于一啊,你看他就出现在这个工作区里了啊,他就会都会存在这里面,那么 这个里面呢,这个东西呢,也叫工作空间啊,也叫做 workspace 啊,如果你们呃听到这些名字啊, 知道他都是一个东西就行了啊。这是我们在呃代码运行的过程中,不管是在命令行窗口里面打的代码也好,还是在专门的一个 m 文件里面写的也好,他都会把运行的这个变量存在我的这个工作空间里面啊, 好,这是,嗯,三个主界面,然后我们来看一下斯密林克怎么开启,就是在最上面的这一排里面的这个图标啊,里面写着很清楚啊,斯密林克你可以点他开启没有问题啊, 那么你也可以在这个命令航窗口里面去打上 cm link, 然后回车也能开启啊,两种方法都可以, 也是第一次会比较慢啊。那么开启之后啊,这就是森林林克啊,他的一个呃,主界面,主页面啊,这个主页面里有很多功能和这个分分别类都给你排好了,但是其实对于我们来说,初学者不需要考虑那么多, 一般来说就用它啊,你像这个什么空白的库啊,啊,这个森林林肯的一个项目啊,以及这个, 嗯,这个版本控制的一些功能啊,我们现在都用不着啊,如果你在公司里,或者说你是一个团队在做,那么你可能会用得着啊,那么我们初学者呢,就用这个建立一个空白模型就行了啊, 好了,我们来建一个空白模型啊,这个就是斯明认可的一个 模型界面啊,就是我的这个斯文林可的一些模块啊,还有连线啊,我们都在这里边画就可以了啊,那么这里面呢,我就得分别介绍了啊,我们首先来看这个模型浏览器啊,这其实是斯文林可的一个官方的模块库啊,大家打开之后看一下是什么样 啊,这个真的很慢啊,好了,打开了,我们可以看到这里有很多,对不对啊?这里有很多,我们先把这个折叠起来,你看一下啊, 其实啊,在这个森林林克诞生的时候,他只有他原本的这个叫做森林林克的一个模块库啊,只有右边这些东西。但是随着森林林克和麦特拉的发展呢,我说我这个工具应用越来越广泛,所以有各个领域的专家啊,都把这个领域内常用的一些分析方法 开发了一个扩展包,相当于是个扩展功能包啊,集成到了这个使命认可里面,所以才会出现这么多关于你看这个什么航天工具箱是吧?啊?这个音频工具箱乱七八糟很多很多 啊,呃,一会我们就是后面安装了这个啊,丢诺支持包之后呢,那么他就会在这里面也生成一个这种扩展包啊,大家看到了,我这已经装过了,对吧?啊?所以他会生成一个这个 pack sport package for 啊,丢诺 hotdobe, 对不对?啊?就是我们装过这个支持包之后,这就 会生成一个呃相应的一个扩展包啊,那我们今天呢主要介绍他基本的这个呃模型的一些啊分类,所以我们就不管别的啊,只看他最基础的模块库啊,这模块库也是有很多啊,我只介绍几个啊,几种咱可能会用到的东西。 第一个呢就是这个连续系统啊,或者叫这个连续类的模块啊,这个模块我们自然界中 呃这些物理量也好,这些对象也好,都是连续的,对吧?啊?那么我们在建模一个自然界里的物体的时候啊,那我我们他的动力学的特性呢?我们呃就经常会用到这个 啊连续系统的一些模块,比如说这些微分是吧?啊?那么这个积分我们经常会用到,因为我们建立这个动力学方程嘛,就是微分, 所以我们经常会用到这些微分啊,积分啊这些东西啊,那么如果你看,那如果你熟悉控制理论呢?你看到这里面还有这个传函,是吧?还有这个状态空间,也就说你在这里面可以很很 简单的直接建立一个呃对象模型,对吧?啊?可以把他的船喊写出来,然后建立对,建立一个一个对象模型, 那么这里呢,咱就不说了啊,咱们这个专栏很少会用到控制理论的东西,然后再往下啊,看这个 discontinuer, discontinuous, 这里面它是啊,非线性模块啊,这里面包括了很多非线性的模块, 这个非线性啊啊,咱举一个例子啊,嗯,比如说这个呆子纵啊,就是死去环节啊,我们其实生活中很多地方都有死去啊,那比如说我们开车的时候 啊,方向盘,你握住方向盘在一个很小的角度转动的时候,你会发现你基本上不用使劲,对不对啊?你不需要用力就可以转动,而他转动的这个范围呢?呃,车轮不会动, 对不对啊?在这个范围内转动的时候,车轮不会跟着动,那么也就是说在这个范围内转动,车轮是不会响应的,那么这个范围啊,这个转动的角度范围就叫做死区啊,死区,那么死区是我们日常的这些啊,物体中非常常见的一种特性, 那么如何来描述这种特性?在森林林克里面,那么就用这个带字纵啊,这个四驱这种模块,那么类似的还有很多,这种在连续系统里面添加一些非线性特性的,这么一些模块我们用到的时候再说,好吧,那么再往下呢,是 discrete 离散模块,那么离散模块呢,它主要就 是涉及这个离散控制系统里面的,像什么差分啊,是吧?啊?然后还有这个离散的脉冲传函啊,这个 discreet 传送方式啊,这种东西你学过离散系统,你一看就能明白, 咱们这个专栏不太设计这部分东西啊,所以我们不去讲他,好吧,那 那么来到下一个,下一个栏目叫做 logic on the beat uproads 啊,就是逻辑与未运算对吧啊,这个写代码的人应该很清楚啊,尤其是写 单片机对吧?那么暗位与暗位或啊这个移位操作对不对?常用的这里面都有。然后还有这种逻辑操作啊,像说谁比谁大,谁比谁小,对不对啊?还有这种逻辑与或非这种东西都在里面啊,那么再往下呢,是 local table 啊,这个写就做单片机比较多的啊,尤其是面向这种产品,做单片机系统的人肯定肯定也很清楚啊,我们单片机里面是不做大量运算的啊,大量运算我们都把它做成一个表,然后我们直接去查表就行啊,斯文利可以支持各种查表,什么一维查表,二维查表都有啊。 然后再下一个是 mass uproads, 就是数学操作啊,数学运算这里面就很简单了,加减乘除是吧?乘方平方,什么开方乱七八糟都在里面啊,你到这里边找就行了啊。 那么要提一下的就是说它里面还支持矩阵运算啊,如果你做的这个模型里面涉及到矩阵运算的话,你也可以来到这里面去找,那么再一个呢,就是这个,是这个啊啊,叫做 porce and subsystems。 我在第一篇介绍斯文林克的优点的时候,给大家说, 包裹啊,身份证可以做出非常复杂,层级非常清晰的大型模型出来,对吧?那怎么实现呢?其实就是在不同层级上都给他封装这样来做的,那么封装用什么?就是用这个萨布斯特啊,就是用这个,那么这里面提供了很多种这个子系统的类型啊, 我们如果做复杂模型的时候,我们要考虑分层封装啊,但是咱们这个砖栏呢,比较简单啊,基本上不需要用到这个 啊,再往下就是这个 single routing 啊, single routing 那个这个中文名字我也不知道该怎么翻译啊,反正它里面这些内容呢,就是对信号进行一些处理操作, 比如说信号分叉啊,一个分两个啊,抽出两个头来,那么就用这个啊, dmix 啊,那么如果两个信号合在一起,那么就用 mix 啊,其实都是对信号通路的一种 啊处理。还有一个是这样,像这个 menu switch, 还有这个 switch 啊,我们也比较常用这个 switch 呢,相当于是个 fls 语句啊,就是条件满足走上面啊,条件不满足走下面啊,那么这个 mine switch 就是你手动控制的一种开关, 比如说我们想用这个在森林立刻里面啊做一个开关,然后来控制啊丢弄上面的一个灯啊,我们就可以把用这个东西来当这个开关啊,等我们程序建好了之后,把程序稍写到啊丢弄里面之后,我们在这 就是在这个模型里面操作这个开关,那么这个灯就会跟着闪烁啊,哎, sorry, 这是 single rooting 里面啊,然后最后要介绍两个,就是这两个啊,我们先介绍这个源头啊, sources, sources 呢,其实就是信号源了啊,信号源,那就是产生信号的一些模块,对吧?啊,那么这里面可以产生的信号信号的种类呢,非常丰富,像 clock 是吧?产生这个时这个时间信号,然后这个呢产生长述信号, 还有能产生这个方波信号啊, pos 还产生这个,呃,斜坡信号啊,还能产生这种正选信号啊,节约信号很多很多啊,基本上你能想到的都有,如果没有怎么办? 他还提供了一个工具叫做 single builder 啊,就是说你来自己建立一个信号啊,然后把这个信号当成一个源头输出去啊,所以这个呃基本上能满足你所有的期望啊,那么有源头就有尽头,对不对啊?有源头就有尽头,那么这个尽头呢?就 是 six, six 这个名称啊,顾名思义的讲的话,他是什么?他是水槽、水池的意思,对吧?啊?那你说这个东西和信号的劲头有啥关系啊?啊?你想啊,你要是把信号想成一个 水流,那就好理解了,对不对啊?那么水流从 sales 里面流出来,流到哪去啊?当然要流到一个容器里面去,对不对啊?所以这个里面其实就提供了一个信号的容器啊,来显示信号啊,这么一个作用。 那么显示呢?他有很多种啊,你像这个他就是显示信号具体的数值啊,他到底是这个信号是多少?他来显示一个具体数值, 那么像这这个呢?他来显示信号的一个波形啊,就是这个信号随着时间他是怎么流动的啊?怎么动的?这两个我们经常用的啊,那么这个试播器啊,这个 spo 我们更经常用啊, 我们经常用它来观察我们模型仿真的一个结果,然后还有当模型工作不正常的时候,我们经常用它来排错啊,看看这个信号传递的过程中哪一步出了错?我们只需要在哪一步把一个信号抽出来看看它模型就行啊,所以非常方便, 我们要以后要用好它。 ok, 这就是常见的模块的一些。呃,常见的一些模块啊,那么这些模块呢?是我们在建模中有很多事要经常会用到的, 下面我们就以一个非常简单的例子来向大家介绍一下斯密林可的模型是怎么来建立,怎么来运行的啊?还有哪些设置需要注意?好了,一会见。
