粉丝91获赞678

大家好,今天为大家接着讲解 mateplut love。 上次我们说到了第五个案例,也就是这个列表里面的第三个案例,在分组的这个柱状图上面打标签。 今天我们讲解水瓶的八叉头, 好瑞咋偷八叉头。我们打开这个好瑞咋偷八叉头。 这是一个很简单的案例,展示了一个非常简单的水平 八叉头, 这个巴萨特是五个人的绩效的一个比拼。 下面是代码,我们把代码复制到我们的编辑器里面,代码我已经复制好了,我们把它启动一下。 右边是一个水平的柱状图, 我们看一下左边的代码。首先从 xplus love 里面引入这个 p y fot, 把它名名字重命名为 plt, 引入拿牌的包,重命名为 n p。 我们做一个随机种子,一个可以让我们产生的随机素进行重复生成,但是他们是一样的结果。 现在是 p l t r c 的 fox, 它是一个默认格式的恢复,这行代码在本利中其实它的作用并不大,我们可以看一。 当我们把这一行代码注解掉以后,右边是没有什么反应的,可以看一下, 只是有一个底色变得较为暗了,我们把它恢复, 他只是对右边图的样式的一个控制。 然后 p l t 三波 pro 的方法返回飞稿和 x, 飞稿就是整个白色区域, x 是指坐标系,就是由黑框框柱的这个坐标系。 然后看一下我们的一个蓝, 对他 pppo 等于 tomdik, 哈瑞,史蒂姆和 gm。 在右边的图,他是歪轴对应的这几个人。 ypos 等于 np, 锐者烂 ppo, ppo 是一个元组,只有五个元素, np 和锐者烂 ppo 就是 np 掉和睿智五,我们可以看一下这行代码生成了什么, 在左边这个框里面他是十五行代码,在这边也是对应的十五,可见这行代码生成了 五个数字,零,一、二三、四,然后 pofo max 就是这五个人对应的业绩,这边我们也用随机数来进行生存, 三加上十乘以 n p 掉,拉到 rur 的懒 ppo, 懒 ppo 这个参数是要告诉 rap 方法,生成五个水激素, 然后五个随机数乘以十加三,就等于泡泡 mac, 阿若,阿若是一个标准差,这个也是进行模拟的,也是调用了 横批钓软的吗钓软的方法, 然后我们切回我们的可视图键,可视化界面, x 掉 bug, ypos, ypos 就是零到五, pofo max 就是一个额瑞,里面有五个模拟的工作业绩数据。 xl 就是模拟了五个标准 x, ilan 声套是一个对齐方式,我们可以看一下 pople max 性能,他其实就对应了 x 轴的这五个蓝色图的长短, xl 对应了黑色, 黑色平行于 x 轴的一根线的长短。 lline 是声卡是是 y 轴这个标签的一个对齐方式,我们可以改一下。首先我们看一下 popo max, 假如说我们这边改成一,我们可以看一下这边的钢化,他明显的缩短了, 我们把它切回去。阿若,阿若也是一个五个数的随机,我们可以在基数上给他加个一,可以看一下效果。 黑色线明显变得更长了,然后来个声卡, 我们可以看一下这个里面这个和莱恩可以取的字。 这个方法掉的是 xs 的方法,所以他是在第二个里面,是由我们要看到的说明。本来 这边额莱恩可以取两个字,一个是声讨,一个是爱字,默认是声讨。他描述了歪坐标轴的标签的对齐方式,我们把爱字复制过去, 我们可以看到歪轴的刻度 都向上移了,他不再位于这个蓝色柱状图的中间,中间位置,我们我们把它再切回去。 好,他又移到了蓝色柱状图的中间位置。 sty t cas, 这个在设置歪轴的 tktk 是刻度的意思,就设置这个黑色小细线的位置。 y pos 是一个零到五的数字。 然后设置完刻度以后,我们要给刻度加一个标签,我们的标签就是这个人名, 套姆迪克,哈瑞,史蒂姆和字母。 然后我们需要把设置好以后, tom 是在下面的,我们需要把 tom 翻转到上面去,所以我们调用这个音 wort yex 就是把歪轴的这个坐标进行一个反转,我们先把它做掉,看一下效果。 默认情况下 tom 是在下面的,我们如果想让 tom 到上面,我们就要调 x 的一个方法,叫英 wort y ex。 第二十三 号代码主要是设置 x 的 vivo 就是这个抛方。 macc 给 x 轴加一个标签, 然后三字抬头,就是给整个坐标器增加一个标题,好 fast 独有 boost go 特别,然后 plt so 来确保我们整个图的展示, 这就是水瓶柱状图。我们要关注的是第十九行代码这个八叉,当我们把这个 h 去掉以后,他就会变成一个 垂直的啊,因为我们刚才做了个反转,他会把这个 柱状图的底部向上,向上面这个边靠起,我们把这个这个方法也注掉,他就会到下面。 好,我们把代码恢复一下, 然后这个随机数,假如我们不加随机数,我们看一下右边会有什么变化, 他变得和以前不一样了。假如说我们再随便改一些东西,比如说我们把这个加一去掉,他又进行了 一次变化,就是他这个变化,他这个蓝色区域的这个宽度的变化是随机的,不再是一个字了。 我们为了让这边这个图每次展示出的结果都是一样的,我们就要,就要加一个固定的水激素,给他一个种子, 这个蓝色区域就每次产生一样的字。

这节课我们一起学习一下数据类型转换模块它的使用, 这个模块它主要应用在与硬件相关的一些数据的一些转换。 呃,如果是我们只做纯仿真啊,不依赖于硬件,那么整个我们在算法或者是仿真的时候呢,所有的数据类型都认为都默认成 double 类型,那么 基本上你整个算法里面都不用,都不会用到这个数据类型转换。但是你的算法如果跑在不同的硬件设备上,比如说跑在 呃八位,十六位,三十二位,呃,甚至六十四位这种单片机或嵌入式系统里面,那么这个模块数据类型转换模块可能就用的是比较多的了。 好,我们先看一下这个模块在哪里啊?嗯,打开 simulink 库浏览器啊,在第一啊, common blocks 啊,通用模块里面,第四个就这一个模块。然后呢,我们可以右键啊,把它加载到我们的呃模型工程里面去啊, 好,这样就加载出来了。加载出来之后呢,我们先看一下 它的配置啊,呃,输出的最小最大值啊,这两个呢?呃,一般呢,就是说,呃, 经过这个数据类型转换模块,你要呃设置他的最小最大值,可以设置也可以不设置啊,一般情况下我们都不会设置啊,就是使用理论上的最大值。好,这个就用的比较多。 输出类数据类型,就说你想把输入的数据转化成什么输入输出类型,什么数据类型啊?这里有。 嗯,用的比较多的呢,就是中间的这个 double 类型到布尔类型啊之间的这些啊,这些啊,根据不同的硬件设备进行选择 啊,还有下面呢,还有一种是那个 fix d t 啊,这个函数,它呢是那个用定点数来表示啊,一些小数的一些呃方法啊,这个呢就是也是一种数据类型,还有一种呢是这个媒体类型啊,媒体类型 好,嗯,再往下这个呢就是勾或不勾输,锁定输出数据类型,以防止被定点工具更改。这个呢一般呢一般的呢是 呃不勾的啊,就说我们我们一般很少用到定点工具啊,定点工具箱里面的一些是呃那个呃模模块,所以呢这个呢就可以。不不不,勾。 好,我们说出来你输出数据类型和输入和输出的依据是什么呢?这里呢有两种选择啊,一种呢是真实值相同, 就相当于你输入和输出的,这虽然是两种不同的数据类型,但是呢数值是相同的啊,这是第一种真实值,第二种是存储的是整整数, 这是什么意思?就是一些数他在计算机内存里面都是按照字节啊字节来进行表示的,按照计算机内存里面存储了这些字节的。呃数值,这这里面的这个数数值是不变 变的啊,依据是这个啊,这个呢就是 s r s r。 好,这还有一个摄入类型啊,摄入类型呢?有有好几种啊有好几种,我们来看一下啊。 舍入类型默认的话呢是向下,向下是什么意思呢?你看将正直和负直朝负无穷方向舍入啊,朝富无穷方向舍入啊。 嗯,过会我们会举个例子。还有一种是正向上,将正直和负直朝正五经方向舍入啊,朝正五经方向舍入。 嗯,就是这个。然后呢这个配置里面还有一个就是溢出啊,对溢出默认的话,溢出呢是 off 啊。 off 是什么意思啊?溢出将 倒回到数据类型可以表示的一个合适值。其实啊,你如果选择 off 了,他一旦溢出啊,他溢出的这个数据值啊有可能是一个 嗯时时刻刻在变呢,而且是不确定的一个字啊。呃建议呃建议可以选择啊啊。就说将艺术饱和处理为数据类型,能够表示的最小值或最大值就是负的一负的幺二八或正的幺二七,比如话有符号的数,呃可以保证负幺八, 他还有一个提示啊啊。如果你希望优化生成的代码的效率,请考虑清除此副选框。 就说如果我们在开发过程当中你可以把它改成啊,但是如果一旦你的算法所有的 逻辑都已经固定了,然后也也经过了验证,那么你可以把它画成 off 啊,把它画成 off, 因为你一旦选择 on 的话呢它这个是是是影响代码的执行效率啊。好,我们看一下。呃现在的这个 现在的这个这个功能使用好。第一个呢,我们这的是这个数据类型呢是 int 八,然后呢转把它转换成 double 类型, 就相当于我们把一个整数啊,不管是正整数还是负整数啊,我们把它转化成一个 double 或牲口类型啊,我们看一看一下这个效果啊 喂,你你可以看一下输入的是负五三,然后输出的经过 double 类型之后转的也是负五三。也是说 不管你前面啊,我们看一下,先看一下这个配置啊,输出的是 w, 然后呢是真实值向下移出啊呃然后对整数进行饱和处理,这个我勾上了啊,因为在测试当中,所以我把它勾上了 啊,也说如果你前面的是一个整数,然后呢,你把它转换成申购或 w 类型,那么转换的这个数和你输入的这个数是一模一样,而且值都不是不会变化的啊。嗯 嗯,比如说你负的,呃,负五三,负啊,一百零三啊,负一百零三啊,这也是个整数, 你看这个显示的这个值都是一模一样不会变,就是这种是是也是一种用的比较多,但是这种值的好理解啊,就说前后值一模一样。还有一种情况是前面呢 啊,是啊啊,牲口或 double 啊,这后面呢,你要把它转化成 inter 或 you inter 啊,我们看一下这种情况,比如我们先双击一下看一下,哎,他呢这个就是 double 类型啊, double 类型负五百三,这个 double 类型,然后呢你输入的这个是 inter 八啊, inter 八啊, inter 八,然后呢输入类型是 这个呢是印的八,然后真实值,然后呢向下移出啊向下移出,然后对整数进行饱和处理啊饱和处理,这个我勾上了啊 啊饱和处理之后你会发现你这个已经超过负运营的八的表示范围,你看他默认的就是就让他为负了一百二十八啊,如果我把这个给取掉啊,不溢出饱和处理,他呢就是一个,就是一个,就是另外一个值,而且这个值呢,他会 随着你这个字输了这个字的变化而变化。比如啊,你的负五百三,对吧?嗯,负五百三十一啊,我们举个例,举个例子啊, 你看他这这个值变,其实你后面这个值也是在变的好,呃,这是这一个,还有一个, 我们这里面有一个整数使用模式选择是默认的是向下,比如说啊,我举个例子啊,你这里是负五十一点,负五十一点三啊,比如这个啊,负的五十一点三,然后我们再看一下这个结果,哎,你看这种,如果这个输入的这个数据 在它 inter 八的这个表示范围内啊,它表示的是负二,负五是二。为什么呢?刚才说了 啊,向下时而入,就是说把 正值和负值朝负无穷方向舍入,我们看一下负五十一点三,朝负无穷方向的第一个整数是多少,是不是负五十二,对吧?是负五十二,所以他就变换成负五十二,这个是你的舍入方向决定的。比如我再改一下舍入方向,我选择向上, 也说他向正无穷方向深入啊,我们看一下向上,是将正直和负直朝正无穷方向深入,你看你这个朝正无穷方向的第一个整数是不是负的五十一啊? 对吧?我们看一下结果是不是负的五十一,哎,你们看这结果就是负的五十一了。因此就说我们这个模块这两,呃,这个模块的两种使用方法,一种是整数转 w 型, 另外一种是 double 转整数型,这两种情况啊,大概都讲解了。

今天我再给大家讲一个使用者海图是如何使用的,就是 youthcat 这个使用者海图,它是用来可以做一些马克标记, 一些报告线啊,警戒线啊都可以做。然后我们要先打开 play, 点击 play, 然后 planning 和设计航线一样,然后我们点击第二个 use 恰的就是使用者海图,然后我们就出来一个表格,然后我们就点击一个新 new, 然后我们开始设计 啊,我们打比方要到一个报告线,我们不知道怎么办,我们先我们在书上查好了,我们就开始做好标记,然后点击这个线这个线,然后我们点击好以后,我们也可以画随便点一个,然后这就是哎,这就出来一条线, 然后我们在这个点击 finish 这个线就好了,像一个报告线,然后我们在 这里可以做一些说明啊,就是 vgs report 啊什么的,然后点击或者有什么频道动吧频道啦,什么频道的我们可以在这里详细说明。等我们即将抵达, 他就会有警报会提示,他就会显示一个表格,然后就说你即将要到达哪个警戒点,他会给你提示这有 uta 的里面的一些小功能,然后这个就是可以画圈, 这个就是可以画圈,如果有个毛地啊啥的在这里不能出圈,在这画个圈就可以,这里也可以做标志做标记一些,然后再把这些打勾,这个就是在打完勾以后,他就会在雷达上显示出来,但是这个圈在雷达上显示不了,因为我们这个雷达不行,如果雷达在 高级一点还是可以显示的,之前的雷达是可以显示的,这个就是一些 不规则的,行,不规则,哎,有点不规则,图形图案用它来标,用它来标记, 然后这个就是朝西的,然后还有一些数字的,还有箭头的,都是用它来标记,然后我标记完以后,然后点击保存,然后再输入一个名字,以后要记住我们怎么用,要使用那个,我们随随便出一个 tt, 然后保存, 然后这个 u 下的就已经编辑好了,然后我们再关掉就行了,然后他就没了,但是我们这个海,我们的这个标记如何使用呢?这个就要在航行里面,如果我们想我们困,我们是 设计好报告线啊,然后我们就点击 navy, 这里面有有个 use chart, 点击 use chart, 然后选择这是我之前编辑的,然后我们找刚才编辑的这个 gt, 看到这是我们刚才编辑的,然后我们打上勾,然后把它导到航线上,哎,然后 open, open, 然后马上就出来了, 看到没有?这些就是一些我们刚才输入的,所以我们航行的时候这些就会出现,一直在这就是使用者海图如何使用? 很方便的,可以做一些标记什么的,很方便的。然后这个我我不需要,我就要取消他,因为这是我闺蜜测试呢,然后选择 use chart, 再选择 onsilex 就行了,这个点击,然后再导出来,再 open, 然后他就没了,这就没了,所以我们不需要,然后我还要把它删掉。怎么删呢?还要还要在这个呃 playing 里面,我要把这个删掉,然后我们就在这些呃数据,这个,这个是删航线啊,什么还有 uscet, 点击数据,然后点击这个 utec, 然后我们不使用呢?啊?这个 tt 啊,我不要了,我点击他一下,然后有个可以导出来,也可以删掉,直接点击删掉, ok, 这个就不需要了 啊,这是我们经常用的,我要保存,但是这个里面还有一个删航线,也是在这里删,和这个删这个 u 下子是一模一样的,这都是我的航线,点击点击,然后点击 delete 就删掉了,但是我一般我也不删掉它,我直接导出来。 这就是使用者海图如何使用?现在我们在航行在中国的沿海岸啊,有需要的就关注或者是啊收藏就可以了。

快速创建一个上伪技程序,工具箱里面拿出一个标签,修改他的属性前缀改成 ng, 数据类型改成自类型,允许输入,等一下好,演示输入监控地址功能改成数据显示器, 然后复制一份,再修改一下,他的属性前缀改成 ok, 监控地址改成 db 一点二,再从工具箱里面拿出一个图表,添加显示内容,登机, ok, 点击确定,添加起始地址,这里用了两个地址, 点击确定启动运行。我们在拨图软件上修改它的数值, 下面这个也修改一下。好,现在这里的区域的占比发生了变化,我们还可以在上面修改数字, 这下面也修改一下,这就是一个柄图的效果。

这节课我们学习一下 simulink 里面非常常用的一个模块, constant 模块的使用, 这是我们搭建的一个简单的一个模型,我们先来看一下这个模块在哪里? simulink 酷浏览器里面啊,第一个就是 simulink, 然后这里面有一个啊,最顶层的这个叫做 common 啊,常用的模块里面啊,点击一下在这里我们就可以看到啊。第三个是 constant 啊,这个就是, 呃,长长束模块,然后呢,我们怎样加载把它加载到模型里面去呢?啊,可以用右键啊,点击这里啊,像模块 啊,像你自己新建的这个,呃,模型名里面添加这个模块啊,添加, 哎,调好了之后呢,这个模块就来了啊,就到这了,嗯, 这个呢是我原来建的啊,这在这里,我把它删掉,就是删掉。好,这是一个一种方法,还有一种比较简单的一种方法啊,我们知道这个模型名呢,他叫做 constant 模块啊,所以呢还有一种方法,就是啊,在模型啊,你既然的这个空的模型名的 任意一个位置双击啊,然后这里呢啊, constant 啊, constant 他啊,你输入 constant 或者是 constant 前几个,呃,英文字母啊,他会自动的联想,然后呢联想的第一个啊,他就是这个, 然后呢你可以回车啊,回车。哎,这样呢,也是一样的啊,这个模块也被加载到这个模型里面去了,好,呃,这是我们今天要使用的这模块,然后呢我们为了方便观测,我们要加一个,呃,观测模块啊,观测模块呢?这里呢?我们用 display 啊, display 啊 display, 然后呢也是用第一个啊选择,呃,回车它呢,这个啊,然后连到一起啊,这就是我们今天要讲解的这个呃 模型 d display, 这个模块呢它显示的是一个,呃,就是数值型,数值型动态显示,呃那个我们以前用过 scope, scope 呢,它是一个动态显示,你可以呃一段时间内看你这个数据的变, 因为我们是个常数,所以呢我们只需要看到它的数值就行了。好,然后呢我们对这个模型进行一个配置,我们看一下双击, 双击里面你看它上面写的是一个 constant, 然后写上它的一个基本功能,他说输出有常量值参数指定的常量, 如果常量值是向量,并且将向量参数解释为一位向量处于启用状态,则常量值是为一位数组,否则输出七为数与常数值相同的矩阵。啊,这个呃 比较长啊,三句话啊,第一句话就说他输出的是一个长量值啊。啊,然后呢在这里我们可以看一下, 如果默认值是一好,那么一,然后呢我们就仿真一下,好点击这个运行, 呃点击运行这里呢之前呢你看他可以看到,呃, ctrl 加 t 也是,呃仿真运行啊,以后呢我们就按 ctrl 加 t 啊,然后点击他,哎,你看他就把这个长值,呃,据说这个模块他输出了,就是你输入了这个长值啊, 我们知道我们输入的话如果,如果有时候是一个数组,呃一个元素啊,就是一个长数是一个也有可能呢是长啊,就是 长的,呃长的,呃向量,或者是长的矩阵,对吧?啊?我们再输入一下,看看每输一个长的呃向,呃长的向量啊,一 二啊,这样长项量呢,他就这样写。是就是中间要加个中国号啊,跟我们这个矩阵表示是一样的, 然后呢这个是一二,呃,只呃元数一呢是一,元数二呢是二,然后呢中间空格啊就行了,然后点击确定啊,然后我们把它再稍微拉大一点,哎,他显示的时候啊,就可以看到是这样的,然后呢我们再访问一下, 哎,你看哈这个时候啊,注意啊, 这个时候他就 这时候,你看哈它就是, 嗯,把一和二这两个元素都都输出了啊,都输出了, 好,嗯,这是这样的,如果你就是说是一个,其他的,比如说是一个,嗯,再再来一个是二乘以二的矩阵啊,二乘三四啊,这样的话啊,我们看一下效果 啊,这样看抽屉啊,哎,这样的话,你看他就是输出一个一二三四是一个矩阵,相当于就说这个场量呢,可以是呃标量啊,也可能向量,也可以是矩阵,就说他这个这个就是形式比较多多样,嗯, 好,这个是我们要长竖直角填的第二个,我们看一下这个,这个呢他勾上了,就是默认的是将向量参数解释为一位向量,什么意思呢?我给大家举个例子啊,还是刚才这个啊,我们显示 是一二啊,让他显示一二,我们看一下,反正啊一二的时候他把一二直接呃输出了,但是呢他这个矩阵的这个尾数啊,是二,呃呃,矩阵的这个尾数显示的是二,我们看一下啊。 呃,矩阵尾数怎么看?查看呢?我们可以在这里啊,其他显示里面,嗯,信号和端口啊啊显示信号的维度啊,信号的维度啊,这里面就是如果你把它勾上,它显示的是一个二啊,维度是二, 就是他以项链的形式就是有几个元素,这个项链里面有几个元素为数呢?是呃二啊,如果你不勾上啊,我们看一下啊,如果你不勾上啊,就说你把这个长量不解释为因为 向量不解释因为向量,那是什么呢?那就是呃,矩阵对吧?矩阵,我们知道我们现在这个矩阵是一,一行两列,对吧?啊?一行两列哎,你看他的输出还是一和二,但是呢他的形式就不一样了,他呢就是他的尾数就是一乘以二,就相当于 你把它勾上啊,把它勾上,你把这个给勾上的时候,当这个长数值是一个 向量的形式,他输出的他输出的为数是向量的个数啊, 如果你不把它勾上,那么它输出的就是一个矩阵啊,一个矩阵它的维度就是一乘以二,就是一行两列啊,默认情况呢,我们是把它勾上啊,默认情况把它勾上啊,点击应用。哎呀 ok, 好,我们再访问一下, ctrl, 哎,他就是这个,就说你不管你是勾还不勾,最后的输出的这个值呢,是一样的,只不过呢在输出的过程当中他的维度显示是不一样的啊,这是这个原这一个功能啊,这个呢是采样时间, 产项时间呢,最好是用 r n f 啊, r n f 是相当于长量就相当于,因为你既然是长数嘛,你就 就是相当于每次不需要采样,因为你只负一次值就可以了。如果你写成负一的话,那么每个周期,每个周期这个 呃,他都会重新给某给输出的这个变量,然后负啊负这个元素的值啊,这样是浪费 cpu 的时间,尤其是在呃嵌入式系统里面啊,最好呢,我们是用 rnf 啊,这里呢我们就讲完了, 接下来我们往后看,这里有一个输出的最小值,最大值啊,如果你对他进行线服,你这个里可以写那个数最小最大,一般呢我们这个都不用啊。 然后这个输出类型啊,讲解一下啊,输出类型默认的话呢,就是 constant, 就是 double 类型啊, double 类型,如果你不用 double, 那么你就要在这里进行命名啊,比如一二,我用,比如说啊,我用 in the in the 十六啊, in 十六 啊,然后我再访问一下,哎哎,他输出的值还是一二,但是呢,但是他真正在呃计算机里面内存里面呢,占用了呃字节的个数是不一样的,就是 int 十六呢,是只占两个字级啊,这个呢是康斯定的是呃,是是是,是八个字 啊,一般的都是呃 w 类型,是八个字节啊,这是这一个类型,然后这个呢是锁定输出类型啊,呃,背定点工具啊,如果你使用使用到了那个定点工具箱 注,就要注意这个地方要不要勾和不勾,一般情况下,如果你不使用定点工具箱,这个地方都是空的啊,都是空的啊。这节课我们就主要学习了这个 constant 这个模块的使用。



查德沃尔的申请海图和电子图书,首先打开之后在这个 lotro 成这个菜单下,在这里输入目的港和骑士港,输进去之后点击这个地方出来这个线,出来好线之后,然后 切换到这个普洱大哥的菜单,然后进行选择这个这里 银 c, 这里改成银 c, 这里就是 ip, 然后 把线调合适之后点击这个篮子, 把海图线经过的海图放入到篮子当中,海图选完了。海图选完之后,同样是在普洱大哥的前面申请电子图书,只需要改动这里就行了。 看到这里,然后选带 dj 套的,有这个 dj 套抄西表, dj 套灯标标, dj 套这个无线电信号表第二卷, 然后往下一个一个的来,还有低低头第六卷,最后这个是音屁啊,一个一个的旋,还可以根据这个电子图书的这个 清单对着来, 选完了之后统一放到这个下面 篮子里,一边选一边核对,核对了完都齐全之后都齐全之后,然后就点击生的土奥德 先多熬点香了,先熬出锅了。到这一步,拿出全村最新版的光盘收进去,然后我就发送, ok 了,他会为你这个数字产品啊,除了海口之外会包含在里面, 如果你希望改正的话就选择不要发送,如果全选了的话,就点击新的奥特纳奥可以了。

咱们上个,咱们上一个视频提到就是把中间这个模块本来之前用的是 cmoling 里边自带的一个呃卡尔曼滤波器的一个模块,然后咱们在上面设给设置一些参数就可以了。 然后咱们上一个视频不是说咱们不用这个 similink 里边自带的这个卡儿们,咱们给自己编写这样一个 s 函数, 然后写这样一个呃卡尔曼绿波的一个模块,虽然这两个模块达到的一个效果呃都是一样的,并且这个 s 函数呢,还需要咱们自己来进行编写,没有用 siri 那个里边自带的那个模块方便, 但是他有一个致命的缺陷,就是因为因为因为 cmd 里边自带的这个卡尔曼滤波器的模块只有三个,一个是卡尔曼滤波,还有一个是扩展卡尔曼滤波, 还有一个无忌卡尔曼铝箔,咱们可以看一下,比如说咱们呃搜索一下这个卡尔曼,从这个从一个列表里边咱们能看出来,呃,首先是这个卡尔曼铝箔,然后下面的是这个 无忌卡尔曼铝箔,然后这个 extended carman filter 是这个扩展卡尔曼铝箔,就是 这个里边咱们都用的很局限,咱,咱们里边只能用它现成的,而且只有这么三种,那咱们如果想自己编写一个程序呢?就比如说,呃,就是卡尔曼绿波的一些变种,就是如果咱们涉及到咱们自己去编写这样一个就是卡尔曼的一些变种的一些算法,那, 那这样的话咱们就没法使用他这个 cmd 里边自带的这个模型,那咱们就只能用这个 s 函数去进行一个咱们自定义的一个编写,那这个 就是咱们上一个视频为什么放着这个现成的这个卡尔曼滤波器不用,而咱们用,而用咱们的一个 s 函数去 呃自己进行编写的一个这样一个目的,用这个 s 函数进行编写的话,相当于相当于咱们编写算法的这个自由度更更高一点,不用再局限于 cmink 里边给定的这几种卡尔曼绿波的一个算法。因为上一个视频咱们在这个 s 函数这个模块里边 编写了一下这个卡尔曼绿波的一个模块,那咱们那咱们这个视频咱们还是用这个 s 函数去进行一个编写, 但是咱们这次编写的是这个强跟踪卡尔曼滤波器的这样一个模块,那咱们先看一下这个模型,这个模型呢?还是跟咱们上一个视频,呃,用的还是同样一个模型,唯一的一个变化就是这里边 这个 s 函数里边的一个具体的编写,那咱们还是打开这个 s 函数模块,咱们看一下就是具体改动的有哪些,那这个 m 文件就是咱们编写的一个 s 函数,前面还是跟咱们上一个视频写的一样,呃,没有发生变化,就还是这些东西, 那咱们主要进行改动的地方在哪?呃,就是这一块,因为它这一块,呃定义的是就是这个,呃对这个状态变量进行更新 新的这样一个函数,那咱们对状态变相进行更新,那几个核心的公式呢?呃都是在这一块去进行一个完成的,那,那这一部分,这一部分还是咱们上一这一部分还是没有动,还是延续咱们,呃上一个视频里边讲的这些程序, 然后然后到这一块呢开始发生一个变化,那这一块就是用的咱们强跟踪,呃, carbon、 绿波的几这几行核心的一个公式,估计那第一行还是去求咱们状态变量的一个鲜艳, 然后下面给定义了一个,呃,下面,下面定义咱们的这个遗忘因子跟这个弱化因子,那这一行同样,那还是 定义一下咱们的输入的观测量,因为咱们输入的量总共有三维,从这个图里边咱们能看出来,咱们输入的变量总共有三个,第一个是咱们的这个控制变量 u, 也就是咱们的前转角,然后后两个这个,还有这个 后两个才是咱们的一个观测变量,所以所以在这在这咱们给区分开,上面用的是优一,呃, 观测变量用的是 u 二跟 u 三,下一行是定义的这个信息序列 dk, dk 呢就是咱们的观测值跟这咱们的预测值之间做一个差值。这边先咱们先命名这样一个 vk, 呃,这么一个变量,呃,给 vk 复制一个零,然后这几行就是 vk 取值的一个分段函数的一个定义, 就是当 t 等于零点零零一,因为咱们迭代一次使用的时间是零点零零一,也就是当 t 等于零点零零一的时候, 那咱们迭代的次数是一,也就是咱们迭代次数这个 k, k 取值是就是 k 等于一的这样一个效果,然后那这是 vk 的一个取值,呃,然后呢?当 t 大于零点零零一,也就是当, 也就是当迭代次数大于,就是也就也就是当迭代次数从二开始之后,然后下一个公式是咱们, 呃 vk 的一个曲折就变了,然后这边是个 n 的,就到这这个 e 函数相当于结束,然后下面给出来这个 n 矩阵和 m 矩阵它的一个定义,然后下面还是求这个 n 的 g 比上这个 m g 的一个比值,然后下面是咱们这个见消因子拉木的 k, 呃,取值的一个分段函数,就当这个 g 的一个比值他大一点一的时候,那这个 number k 就等于这个 g 的比值,然后出, 除此之外就是当这个 eta, 除此之外就是当这个 eta 小于一的时候,那咱们这个拉门的 k 见效因子的曲值是等于一,然后这边把这个,然后这行求咱们 p 矩阵的一个鲜艳, 把这个拉布达 k 给乘到最前面,然后下面这几行求卡尔曼增益,对,咱对咱们这个状态变量和斜方叉矩阵去进行一个更新。呃,就是下面这三行就跟传统卡尔曼滤波一样,然后下面咱们没有发生任何变化,那刚才讲的就是那刚才讲的就是咱们对 卡尔曼绿波那个 s 函数进行咱们这样一个改写,就把这个卡尔曼绿波改成了这个强跟踪卡尔曼绿波。然后这时候咱们运行一下咱们的模型 啊,现在,现在现在模型运行通了,咱们看一下咱们直音侧面角的估计值和和面角速度的一个估计,然后 这个是咱们指定瓷盘角的一个估计效果。我个人感觉因为强跟中卡尔曼滤波,跟卡尔曼滤波用的核心公式都是卡尔曼滤波那么几行公式,呃,就是他的这个估计效果就本质上来说没有特别大的一个改变。 呃,然后我感觉他唯一的一个变化的就是在,就是在这个波峰和这个波谷处,这就是,这,就是这四个位置,就是咱们能看出来。 呃,我,我个人感觉就是在这个波风波鼓处这个曲线的变,因为因为这个强跟踪 carmen 绿波它是针对这个曲线发生突变的时候去提高这个传统 carmen 绿波它的一个跟踪效果。我个人感觉这个强跟踪 carmen 绿波就是在这个波风波谷 处。呃,他这个变化的这个,他这个变化的这个程度要比这个卡尔曼绿波更猛烈一点,因为这个卡 sim 里面跑的是一个双一线的这样一个工况,所以这个曲线他变变动的这个幅度没有那么剧烈。 呃,有兴趣同学可以跑一下绞金月工矿试一下,因为我觉得绞金月工矿因为他 涉及到一个曲线的一个突变,可能效果要比这个要明显一些。下面咱们看一下这个横摆角速度,横摆角速度跟刚才那个直线四边角情况差不多,基本上也是没有发生。呃,一个很明显的一个变化,就是在这个波风波鼓这四个地方,可能这个曲线他这个抖的要猛。

这张我们来讲一个关于这个开源图表库的一个增强的一个性能的一个使用啊,然后就是这个 di 啊,然后呢我们创建一个项目啊,一个 wp f 项目,然后我们直接进入到里面, 为了测试这个图表库的一个最基础的开源一个库的一个性能和我们增强之后的性能啊, 他们的一个区别。我首先呢给这个项目当中导入一个开的这个图表库啊,我们可以在 vs 当中使用快捷键,按住是 ilad, 然后按住 t, 然后一个 n, 一个 o, 就可以导出这个程序包的一个控制台,然后我们可以通过这里 啊命令的方式安装这个包,这个包的名字就叫加点 ws, 点 wp f。 然后呢我们安装完成之后,我们可以看到我们的目录当中已经有了这个相关的一个主见了啊啊,接下来就是我们要怎么去使用这个东西啊?我们怎么使用这个东西?我们首先在我们的这个首页当中,我们引用相关的一个程序级啊, 我们可以找到他这个,找到他这个库哈,然后我们引用一下就可以了, 你用完成之后,我们就在我们的页面当中创建一个一个标准的一个图表,好吧,一个线形的图表,我们创建 两行啊,放放一些按钮来用于测试,我们绑定一些数据啊, 第一行呢就放几放几个按钮,用一把定数据的,然后呢高度的话我们就不用太多。第二行的话 一边是展示普通版的开源的一个性能,然后另外一边展示我们这个优化之后的性能,然后他们进行比较啊,然后呢下面的话我们也创建一个国内的啊,国内当中我们有两列, 两列分开,然后呢给他放到第一行当中,可以看到已经分开了,现在我们呢就在第一个里面,我们创建一个 中间一个图图表,然后呢这个图表的话我们就直接这样啊,然后给他取个名字就可以了,不用太多的,一个给他取名叫一个 c 一啊,然后第二个就叫 谁呀?把它放到第一列当中,第二列这样完成之后,我们就在第一排放一个两个按钮,一个按钮绑定一个列表,这样我们用来比较这两个东西的一个性能差距啊, 我们再放一个按钮,然后呢让他一个水平,然后让他往中间走一点啊,这个时候呢,我们给这两个绑定 取个名字啊,取完名字之后我们就开始解他的一个后台的代码,绑定的代码我们呢就不用什么 vmvm 了哈,因为我们用于测试的话,我们就直接直接给他 绑定一些事件用于测试啊,然后我们直接 ff 十二进去就可以了, 然后这里 f 三啊,接下来呢我们就来写一个他的一个普通版的一个绑定啊,绑定怎么去绑定这个数据源?那绑定数据源呢?我们就先走到这个代码当中呢,我们首先我们需要创建一个数据源的一个类型啊, 我们就用过的应该都知道啊,如果你不知道的话呢,你就点开这个点 wpf 啊,你可以注意到他这里面的他有一个是用于绑定数据源的,然后呢我们得首先找到他这个 数据园的一个 他的一个名称空间啊,找到他,如果你不知道的话,我给大家找 一下,就是这个一个 s 开头的啊。 好,我先声明出来啊,他这里我再去看一下他的命名空间的位置,然后呢那是一啊, i e s c u 呃, e c t i n。 主要是这个哈,这个也是在里面的,我们可以看下他的命名空间啊,他是在这个这个里面,然后呢我我们可以给他生命一个数据员, 首先我们创建做出来,然后呢我们需要创建完另外一个增强版的啊,这是第第第两个, 然后呢我们在第一个按钮当中我们要绑定这个数据源,我们怎么绑定?我们在这个绑定一个就绑定一个普通的一条线啊,我们用的就是一个 卡哇六 s, 然后我们绑定一个 w 型, 然后给他创建一个实力啊 啊,这个测试呢,我们就首先以一百条,一千条为准,一千条我们来测试一下这个数据,那能否正常啊? 然后呢我们给这个里面添加进去啊,我们添加一个什么?添加一个 线型的一个数据源啊,就是一条线 连一下命名空间,然后呢我们就随便给他取个名称了,名称也不用取了,我们直接就给他一个数据源了哈, 里面有一个这样类型的数组,然后我们绑定就可以了,那绑定之前我们肯定是需要给他创建一个实力的嘛,对吧?创建完这个实力的我们就可以用了,然后这是第一个,然后第二个的话啊,我们就先不写啊,我们就先运行一下 啊,运行起来之后呢啊,我们就先点击一下, 哎,我看一下啊啊?这是为什么呢?因为我们没有绑定数据啊,我们只写了初始画的数据,对吧?刚才我们在前台定了一个 s c 一,对吧?我们要绑定他才行,不绑定没有的,然后我们绑定这个数据员,绑定完之后我们再启动一下, 我们点击启动 啊,这个已经添加进来了啊,然后这个没什么问题。然后呢接下来呢,我们把我们这个增强版的一个开裆裤的一个破解版的一个性能增强的一个 dl 的增强,引用到我们的项目当中。首先我们找到这个目录当中啊, 我们就添加进来,先把它放进来,然后当然我们要引用一下了啊,引用一下, 我们找到他并且添加啊,添加完之后呢?呃,其他的我们不需要改变哦,我们只需要把这这一段代码拿过来改进一下, 然后把这改成 c r 啊,他正常版的之后呢,我们可以找到他的第二里面看一看到他相关的一个实线啊,是一个声明,可以找到,这里面可以看到他在原有的基础上啊,所有的名 前面都加了个 g, 对吧?比如说我们原来是现行图表,他前面加了个 g 啊,这个就代表是增强之后的啊,那毫无疑问我们这边使用了也就非常方便,加个 g 就可以了。然后呢命名,引用一下命名空间啊,还有一步就是什么呢?他绑定的一个数据 数据结构啊,他也发生了改变,我们可以发现他这里面有一个,对吧?这种 这种结构的,然后呢跟我们原有的类型不一样了吗?对吧?是这种原来是圈五二六吗?对吧?但现在他改了之后呢,我们就把他这个名字拿过来,对吧? g 一 是个这个类型,那把他这个结构也发生了改变,然后呢,主要就是发生这两个改变之后呢,那他们的性能就可以体现出来了,那这个时候我们来测试一下啊, 我们运行起来,首先呢我们绑定右边的哈,当我们点击的时候,可以发现他已经还不到一秒钟的时间就可以已经出来了哈,那我们点击左边,我们可以发现当我们点击之后呢,他反应还是非常迟钝的哈,已经出来了 啊,那这个如果不够明显的话,我们就把这个数据和数据啊再拉大啊,我们就变成一万条,变成一万条之后,我们看一下他们之间的相互的一个反应的一个时间啊,绑定的时间,可以看到左边也是同样的啊,没有什么区别,一千跟一万没有什么区别。然后我们再点击一下左边的, 那左边的是他一直没有加载出来啊,他绑定这个过程当中,我们可以看到这个进程的内存呢,不停的增加,看见没有,不停的还在加。然后这个界面上这个绑定的数据呢,他还没有没有绑定到界面 当中,那可能这个过过程当中呢,这个时间还更长 啊,你看花花费了非常久的时间还没有绑定,并且这个界面已经卡死了啊,由于我们没有做什么处理,他是在 ui 线程上执行这个逻辑的操作,所以呢他已经现在已经卡死了, 所以我们只有等待他的一个加载完成之后呢,这个界面可能就会恢复到我们的正常显示当中,可以看到这个界面已经现在已经点不动了啊, 那这个正墙板之后的这个性能呢?呃,是非常的明显的啊,我们可以看到现在我们这个程序当中呢,还是没有 没有反应,并且这个进程的一个内存呢,他不停的增加,现在已经一百多兆了啊, 我们可以看到我们就不用等了这个时间了,我们这个是体明显体现的出来的啊,那他这个优势在哪里呢?他不仅仅是说一点点性能啊,我们就哪怕绑定再再多加两个零啊,他绑定的速度也是非常之快的啊, 你们可以看到右边,对吧?哪怕我们我们绑定一百万条数据,他也是非常快的, 所以说呢,如果大家呃要用这个开源的库的一个 dl 的话呢,那可以在我的群里下载我的群文件当中都有啊,那群文件呢? 还有一些其他的相关的资料,很多进群的朋友也不知道,这里我也声明一下啊。嗯,可以给大家看一下啊。 啊,因为很多朋友他们了解 wpf 相关的一个资料,然后呢,呃,自己处理了之后,有些问题他解决不了,或者是资料找不到的话呢,他还会私聊我,私聊我之后最终还是告诉他,你去情文件找一下,对吧? 这个其实大家习惯的话,你可以在这个全文件里面先查看一下有没有自己想要的内容啊。这里其实大部分那个 wp f 相关的资料我都有在里面写的,放着的大概有三个多个 g, 哎,这个下载不出来了哈。 啊,这个文件呢,主要在我的这个群文件当中啊,如果大家感兴趣,大家可以看一下。 那这个这张就讲到这里啊,这个已经出来了哈,可以看到这个文件我已经上传到这里了,如果大家需要的话可以在这里下载,包括那个这个图表酷的一个视力代码啊,包括那个 wpf 的里面的视力代码,这里面都有啊,那这张就讲到这里。