登录
首页 » Others » pidnn代码,神经网网络pid控制代码

pidnn代码,神经网网络pid控制代码

于 2021-05-06 发布
0 267
下载积分: 1 下载次数: 0

代码说明:

可运行的神经元网络PID控制的matlab仿真代码

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • FreeRTOS中文入门手册
    FreeRTOS中文入门手册方便初学者入门学习,讲的很好,很值得学习第一章任务管理Designed For Micr。 contr。11exs;概览附录中提供了使用源代码的实用信息小型多任务嵌入式系统简介不同的多任务系统有不同的侧重点。以工作站和桌面电脑为例:·早期的处理器非常昂贵,所以那时的多仟务用于实现在单处理器上支持多用户。这类系统中的调度算法侧重于让每个用户公平共享处理器时间。随着处理器功能越来越强大,价格却更偏宜,所以每个用户都可以独占一个或多个处理器。这类系统的调度算法则设计为计用户可以同时运行多个应用程序,而计算机也不会显得反应迟钝。例如某个用户可能同时运行了一个字处理程序,一个电子表格,一个邮件客户端和一个浏览器,并且期望每个应用程序任何时候都能对输入有足够快的响应时间。桌面电脑的输入处珒可以归类为软实时。为了保证用户的最佳体验,计算机对每个输入的响应应当限定在一个恰当的时间范围——但是如果响应时间超出了限定范闱,并不会让人觉得这合电脑无法使用。比如说,键盘操作必须在键按下后的某个时间内作出明显的提示。但如果按键提示超出了这个时间,会使得这个系统看起来响应人慢,而不致于说这台电脑不能使用。仅仅从单处理器运行多线程这一点来说,实时嵌入式系统中的多任务与桌面电脑的多任务从概念上来讲是相似的。但实时嵌入式系统的侧重点却不同于桌面电脑特别是当嵌入式系统期望提供硬实时行为的时候。硬实时功能必须在给定的时间限制之内完成——如果无法做到即意味着整个系统的绝对失败。汽车的安全气囊触发机制就是一个硬实吋功能的例子。安全气囊在撞击发生后给定时间限制内必须弹出。如果响应时间超出了这个时间限制,会使得驾驶员受到伤害,而这原本是可以避免的大多数嵌入式系统不仅能满足硬实时要求,也能满足软实时要求。Designed For Micr。 contr。11exs;术语说明在屮,每个执行线程都被称为任务。在嵌入式社区屮,对此并没有个公允的术语,但我更喜欢用任务而不是线程,因为从以前的经验米看,线程具有更多的特定含义本章的目的是让读者充分了解:在应用程序中,如何为各仟务分配处理时间。●在任意给定时刻,如何选择任务投入运行。●任务优先级如何影响系统行为。●任务存在哪些状态。此外,还期望能够让读者解:●如何实现一个任务。●如何创建一个或多个任务的实例●如何使用任务参数。如何改变一个已创建任务的优先级●如何删除任务。●如何实现周期性处理。空闲任务何时运行,可以用来干什么本章所介绍的概念是理解如何使用的基础,也是理解基于的应用程序行为方式的基础——因此,本章也是这本书中最为详尽的一章Designed For Micr。 contr。11exs;任务函数任务是由语言数实现的。唯一特别的只是任务的函数原犁,其必须返回而且带有一个指针参数。其数原型参见程序清单。void ATaskFunction( void *pvParameters )程序清单任务函数原型每个任务都是在自己权限氾围内的一个小程序。其具有程序入口,通常会运行在一个死循环中,也不会退出。一个典型的任务结构如程序清单所示。仟务不允许以任何方式从实现函数中返回一一它们绝不能有条语句,也不能执行到函数末尾。如果一个任务不再需要,可以显式地将其删除。这也在程序清单展现个任务函数可以用来创建若干个任务—创建出的任务均是独立的执行实例,拥有属于自己的栈空间,以及属于自己的自动变量栈变量,即任务函数本身定义的变量v。 d ATaskFunction(v。1d* pArameters)/*可以像普通函数一样定义变量。用这个函数创延的每个任务实例都有一个属于自己的 vAria1b1 eExamp1e变量。但如果 varial1e3 xample被定义为 static,这一点则不成立-这种情况下只存在一个变量,所有的任务实例将会共享这个变量。int ivariableExample =0;/*仨务通常实现在一个死循环中。*/for(ii)/*完成任务功能的代码将放在这里。*//*如果任务的具体实现会跳出上面的死循环,则此任务必须在函数运行完之前朋除。传入NUL参数表示删除的是当前任务*vTaskDelete( NULL程序清单典型的任务函数结构Designed For Micr。 contr。11exs;顶层任务状态应用程序可以包含多个任务。如果运行应用程序的微控制器只有一个核那么在任意给定时间,实际上只会有一个仼务被执行。这就意味着一个任务可以有一个或两个状态,即运行状态和非运行状态。我们先考虑这种最简单的模型——但请牢记这其实是过于简单,我们硝后将会看到非运行状态实际上又可划分为若千个子状态。当某个任务处于运行态时,处理器就正在执行它的代码。当一个任务处于非运行态时,该任务进行休眠,它的所有状态都被妥善保存,以便在下一次调试器决定让它进入运行态时可以恢复执行。当任务恢复执行时,其将精确地从离开运行态时正准备执行的那一条指令开始执行。A tasks that areOnly one tasknot currentcan be in theRunning are in theRunning state atNot Running Stateany one timeNot RunningRunning图顶层任务状态及状态转移任务从非运行态转移到运行态被称为切换入或切入或交换入相反,任务从运行态转移到非运行态被称为切换出或切出或交换出的调度器是能让任务切入切出的唯一实体。Designed For Micr。 contr。11exs;创建任务函数创建仟务使用的函数这可能是所有数中最复杂的函数,但不幸的是这也是我们第一个遇到的函数。但我们必须首先掌控任务因为它们是多任务系统中最基本的组件。本书中的所有示例程序都会用到,所以会有人量的例子可以参考。附录:描述川到的数据类型和命名约定。portBASE TYPE xTaskCreate( paTASK CODE pvTaskCodeconst signed port CHAR conist pcNameunsigned portSHORT usstackDepthunsigned portEASE TYPE uxPriorityxTaskHandle *pxCreatedTask程序清单函数原型表参数与返回值参数名描述任务只是永不退出的函数,实现常通常是个死循环。参数只一个指向任务的实现函数的指针效果上仅仅是函数名具有描述性的任务名。这个参数不会被使用。其只是单纯地用于辅助调试。识别一个具有可读性的名字总是比通过句柄来识别容易得多。应用程序可以通讨定义常量来定义任务名的最大长度—一包括结朿符。如果传入的字符串长度超过了这个最大值,字符串将会自动被截断。Designed For Micr。 contr。11exs;当任务创建时,内核会分为每个任务分配属于任务自己的唯一状态。值用于告诉内核为它分配多人的栈空间。这个值指定的是栈空间可以保存多少个字,而不是多少个字节比如说,如果是位宽的栈空间,传入的值为则将会分配字节的栈空间。栈深度乘以栈宽度的绩果万不能超过~个类型变量所能表达的最人值。应川程序通过定义常量来决定空闲任条任用的栈空间大小。在为微控制器架构提供的应用程序中,赋予此常量的值是对所有任务的最小建议值如果你的任务会使用大量栈空间,那么你应当赋予一个更大的值。没有任何简单的方法可以决定一个任务到底需要多大的栈空间。计算出来虽然是可能的,但人多数用户会先简单地赋予一个自认为合理的值,然后利用提供的特性来确证分配的空间既不欠缺也不浪费。第六章包括了一些信息,可以知道如何去查询任务使用了多少栈空问。仟务函数接受一个指向的指钅的值即是传递到任务中的值。这篇文档中的一些范例程序将会示范这个参数可以如何使用指定任务执行的优先级。优先级的取值范围可以从最低优先级到最高优先级是一个由用户定义的常量。优生级号并没有上限除了受限于采用的数据类型和系统的有效内存空间,但最妊使用实际需要的最小数值以避免内在浪费。如果的值超过了,将会导致实际赋给任务的优先级被自动封顶到最大合法值。Designed For Micr。 contr。11exs;用于传出任务的句柄。这个句枢将在调川中对该创建出来的任务进行引用,比如改变任务优先级,或者删除仟务。如果应用程序中不会用到这个任务的包柄,则川以被设为返回值有两个可能的返回值:表明任务创建成功。由于内存堆空间不足,无法分配足够的空间来保存任务结构数据和任务栈,因此无法创建任务。第五章将提供更多有关内存管理方面的信息。例创建任务附录:包含一些关于示例程序生成工具的信息。本例演示了创建并启动两个任务的必要步骤。这两个任务只是周期性地打印输出守符串,采用原始的空循环方式来产生周期延迟。两者在创建时指定了相同的优先级,并且在实现上除输出的字符串外完全一样—程序清单4和程序清单5是这两个仟务对应的实现代码。Designed For Micr。 contr。11ers;
    2020-12-09下载
    积分:1
  • 基于ATO的列车速度曲线优化
    基于ATO系统的列车速度曲线优化的MATLAB代码,应用了遗传算法进行优化
    2020-12-05下载
    积分:1
  • 基于opencv的双目相机标定代码
    双目标定代码。解决方案Opencv已配置好。里面有说明文档和实验图片。可以直接运行,也可以根据自己的需要重新拍摄图像进行双目标定。
    2021-05-06下载
    积分:1
  • 课程设计--简易心电图仪设计
    包含了设计过程及测试分析,20多页本系统利用高精度通用运算放大器AD620对输入的心电信号进行放大,再进行高通滤波,滤去高频生物电,同时采用右脚屏蔽驱动电路,消除50Hz生物电和机器信号的影响,最后在数字示波器上得到清晰的心电波形。
    2021-05-06下载
    积分:1
  • 关于HOG+SVM的经典总结
    作者:BERNT SCHIELE 其是计算机视觉以及模式识别方面权威人士,本文重点总结HOG+SVM在分类识别方面的性能,并同其它算法如Adboost,Shape modebased等都作为了比较,相信对于这方面技术比较感性趣的朋友读完此文之后,对于整个识别算法方面有一个比较全面的了解!
    2020-12-06下载
    积分:1
  • MIT电路与电子学讲义
    【实例简介】
    2021-10-01 00:31:07下载
    积分:1
  • 支持向量机进行预测(SVM)Matlab版.rar
    基于matlab的svm预测 代码
    2020-05-29下载
    积分:1
  • 视频中背景建模目标检测综述(北京大学)
    基于视频的移动目标检测是一个重要且有挑战性的任务,在许多应用中都起到相当关键的作用。本次论文研读围绕该主题展开,深入阅读了十余篇论文,在本文总结了视频中移动目标检测的一些主要方法及各自的优劣。报告接下来的部分组织如下:第二节介绍一般问题的陈述及典型的应用,第三节与第四节分别介绍基于像素的移动目标检测方法与基于区域的移动目标检测方法,第五节进行简单的讨论与总结。2问题陈述及应用一般而言移动目标检测并不单独地构成应用,而是作为一个组件出现在许多实际的应用之中。故移动目标检测的具体要求随着应用的改变而有很大的不同。例如对足球场上球员及足球的检测与跟踪就和对视频中用户手势的跟踪有所不同,前者的关键在于如何应对复杂的光照变化有效提取运动物体,后者的难点则在于如何从整个躯休大范围的运动背景中将手势的运动识别并提取出来。尽管不同的应用可能提出不同的技术上的要求,但是相当一部分这类问题还是可以在同一的框架下进行探讨和比较的。以下就是本文讨论范围内一般问题的陈述( Figure1):a.高层次的模型一般具有检测、跟踪、识别三个模块,其中识别模块并不必须b.检测模块可细分为移动日标区域检测与移动目标分组,其中前者是这个模块能够顺利工作的保证,其日的是将各帧内移动日标所在的区域标出该模型的输入为连续的视频,输出为跟踪的物体(即轨迹)或分类的物体,DetectioTrackingbackgroundObject detectionMatching usingFramescolor texture andTrackedsubtractionusing contoursmotion featuresobiectsGr。 up handling(merging andlittonFigure1系统框架图中即为一个典型的流程图,其中省略了分类模块并把运动目标区域检测规定为背景差分方法。该模型的典型应用场景是室内外的视频监视分析( Figure2),特别是交通数据的分析。另外体育运动视频(如足球或台球)的分析也能在该模型下解决。Figure2移动目标检测的典型应用:视频监控本文讨论的就是这样一个系统之中移动目标检测部分内容,并且将重点放在了如何判定移动目标区域的部分。这是这样的系统中的最初的处理,对于之后的处理能否获得有效的信息至关重要。该内容主要涉及两个问题:如何提取运动的前景,及如何建立一个良好的背景模型。后者一般并不是应用任务中所要求完成的,但往往是用以提取运动前景很好辅助工具,将新的一帧“减去”背景即可获得移动前景,故同时具有这两个步骤的方法也被称为“背景差分”,是移动目标检测中的一大类主流方法,本报告中涉及的大部分方法即属于这一类3基于像素的移动目标检测31均值-阈限方法均值-阈限( Figure3)的基本思路是计算每个像素的平均值和标准差作为它的背景模型Mean 2*Avg DiffMean”Mean-2*Avg DiffFigure3均值-國限方法4图中为某视频中单个像素在一定时间内不断更新得到的平均值和平均差值3,该像素处在天空的位置,在一段时问后有人的手挥过该区域,可以看到由于前景目标明显不如背景中的天空明亮,所以可以很容易将其分辨出来实际上均值-阈限方法就是赋予视频中每个像素一个统计上的背景模型,例如高斯分布模型4。每个点需要两个参数来衡量:均值与方差。后面将看到,许多更先进的棊于像素的移动目标检测方法其实无非采用了更复杂的分布模型来描述每个像素32阴影去除及三高斯模型简单的帧差值或均值-阈限方法在很多应川中都面临一个很严重的问题:阴影。在某些光照条件下,移动物体产生的阴影相对背景具有非常显著的差别从而被识别成了前景,有时这些阴影比物体本身还人,并且导致原本独立的运动物体连接在一起无法分割。一种简单的思路是放弃使用灰度值进行背景建模,而采用颜色信息从而将阴影的移动去除掉。这类方法需要一条假设:移动目标投射到路面上的阴影主要改变了该位置的亮度而对色度没有大的影响°。部分情况下确实可以承认该假设。在不同的颜色模型下有不同提取亮度信息的方式。在HSV等空间中这个任务尤为简单,因为亮度本身就是一个独立的分量,所以在该分量以外的维度上进行背景建模与差分就能消除一定的阴影。如果在常用的RGB颜色空间中,亮度的提取就稍微复杂倒。Figure4RGB空间中的亮度与色度3类似标准差的作用,但是计算更快捷。C.R. Wren, A Azarbayejani, T. Darrell, and A P Pentland "pfinder Real-Time Tracking of the human body lEEETrans. Pattern Analysis and Machine Intelligence, vol. 19, no. 7, pp. 780-785, July 1997J.M. Alvarez, A Lopez, and r Baldrich, " Illuminant-Invariant Model-Based Road Segmentation",IEEE IntelligentVehicles Symposium, June 20085将一个像素的颜色值在RGB三维空间中表示( Figure4),背景建模就是确定了穿过原点的一条色度直线,所有在该直线上的颜色都认为是背景色。当前颜色相对参考颜色(背景)的亮度分量a1由最小化下式给出:φ(a;)=(l1-c1E)2a2表示该像素当前值相对参考背景色的相对亮度。如果其值为1则代表亮度相同,大于1代表比背景更亮,小于1代表比背景更培当前颜色到色度直线的垂直距离就表小色度的偏离:CD1=‖l2-aE1‖(3)利用色度与亮度的偏离值就可以将新的颜色值分为四个类别Forground: CDi> IcD or ai> Alow, elseM()Back ground:aτa2else(4)ShadowelseHighlightotherwise其中CD2与a分别代表均一化之后的两个偏离分量。这些方强烈依赖于上面提到的假设:阴影仅仅改变背景亮度而不改变色度。但是这个假设实际上并不总是有效,很多时候还需要更复杂的方法达到去除阴影,鉴别真正移动目标的目的。三高斯模型4就是针对去除阴影的考虑提出的。这个模型中采用三个高斯分布相结合( Figure5)对各像素进行建模。三个高斯成分分别为:道路、运动前景及阴影。这三个成分组合成为了完整的混合模型(b)和印甲品f叫intersity valeFigure5三个高斯分布相结合6此方法之后面临的主要问题是如何通过一定时间的学习获得每个高斯分布的参数从而建立有效的模型。相关文献中提出采用EM算法( ExpectationMaximization Algorithm)进行学习。EM算法是一个迭代的算法,通过有限步的迭代就能够获得较好的模型估计。一般而言,为了从一个数据集中获得该数据集满足的混合分布,可以采用最大后验概率估计的方法进行估计,但是这样的方法需要关于每个数据分类的信息(即每个值属于哪个类别)。然而在移动目标检测过程中往往都是无监督的学习从而不可能获得这样的分类信息,而只能自动设定个预先的分类,然后通过迭代不断改进,这就是EM算法的基本思路另外,由于各点的数据是不断改变的,于是采川原始的EM算法对每一帧都进行重复的迭代既不必要也不现实,可以采用EM算法的一个变种:增量EM算法33高斯混合模型(GMM331背景建虞在某些场景之下,采用三个高斯分布的混合模型仍然无法有效地描述复杂的现实环境,于是髙斯混合模型四被提出了。高髙斯混合模型采用类似3.2中三个髙斯模型的思路,希望采用多个高斯分布相结合的方法来描述环境。与前面的模型不同的是,现在高斯分布的个数不是固定的一个或三个了,而是随着各个像素实际的需要动态地进行设定。另外该方法也放弃采用费时的EM算法而采用更快捷的方式进行背景建模与更新。假设已知像素(xo,y)在过去一段时间中的颜色值或灰度值{X1,…,X}={(xo,yo,):1≤i≤t(5)若由K个高斯分布的高斯混合模型对该像素进行建模,则新观察到一个颜色值或灰度值的概率为P(x1)=)o*n(x,,E(6)在RGB等彩色空间中为了简化计算可以采用如下公式k,t7)A Dempster, N. Laird, and D. Rubin, "Maximum Likelihood from Incomplete Data via the EM algorithm", Journalof the Royal Statistical Society, pp. 1-38, 1977这个公式假设了各个颜色分量是相互独立的。尽管事实并不如此,但这样计算在保留充分的精确性的同时大大降低了计算复杂性。这样每个像素就采用κ个峰的髙斯混合模型完成了建模。剩余的问题同样是如何对模型中的各个参数进行估计,以及如何判别前景。3.3.2背景更新背景更新大致有这几个步骤:a.每一个新的值都与所有K个高斯分布进行匹配,直到找到充分吻合的分布(判断方式与均值-阈限方法类似)b.若新的值与所有K个分布都不接近,则将K个分布中权值最小的一个替换成一个新的分布,该分布以新的值为均值,并且具有很高的初始方差和很低的初始权重;C.若新的值与某个分布充分接近,则认为其属于该分布并更新各个分布的权值及参数Ort=(1-aOKt-1+aM(8)=(1-p)ut-1+p·X(9)=(1-p)21+p(X-1)(x-2)(10)here(kok(11)其中(8)式中Mkt对于匹配上的分布唯1,对于其他分布为0α表示适应性的强弱,α越大,给予新的值的权重越大,也就适应得越快;(9)式(10)式仅针对匹配上的分布,而其他分布的参数保持不表3.3.3前景检测运动前景的检测主要有以下几个步骤a.对所有的高斯分布按照ω/σ进行从大到小的排序;b.取前B个高斯分布,满足B= argminkT(12)k=其中T表示背景应该占的比重,如果T取得较小则类似于前面介绍的均值阈限模型,T取得较大则允许背景有更丰富的特性,如随风摆动的树叶或水面的波纹等等。C.如果当前出现的新的值并不符合这B个高斯分布,则认为是运动的前景,否则认为是背景。34非参数模型341背景建模为了能够更快速地适应变化的背景,并且保证对移动物体的敏感性,马里兰大学A. Elgammal等人提岀采用非参数的模型四对各个像素进行建模。该方法并不指定确切模型形式,而釆用核旳数来利用历史薮据建立模型。在釆用高斯核的情况下,一个颜色出现的概率’∑K(x-x∑∏1(13)2这样实际上就是对考虑范围内所有的历史值都建立一个高斯分布,并利用所有这些分布对当前值进行分析。由于高斯分布的假设,故(x1+1-x1)~N(0272),于是可以估计方差(14)0.68V2其中m是|x+1-xl的中位数。号外由于在这种方法下需要大量计算核函数的值,故可以预先计算出一定精度的核函数数据表,通过查表的方法大大加快计算的速度。实验表明这样的方法在一般的PC机上是可以达到实时的计算要求的。34.2减少错误检测为了降低由于局部抖动(如树叶抖动、摄像机抖动)带来的错误检测,该方法利用了一定的区域信息。原先的P(x1)现在改用Pm(x代替PN(t= maxyEN(x)Prix Byy(15)此处N(x)指该像索周围的一个小区域,B指像素y对应的背景模型。这样就充分降低了由于小范围抖动导致的错误检测。7该式成立仍然需要假设各个颜色分量相互独京。9该方法需要维护两个背景模型:长期模型及短期模型。其中短期的模型是为了能够快速适应变化的背景而提出的,仅利用相当短的一段历史值建立模型,另外该模型采用选择更新机制(仅对判定属于背景的值进行更新);长期的模型在相当长的时间内通过盲更新机制(对所有值进行更新)获得。两个模型判定结果的交集能够进一步降低错误的检测,但同时也去除了部分实际上是移动目标的部分。最终采用的策略为:所有由短期模型检测出来,并且与两个模型判定结果交集相邻的像素被视作运动的前景3.4.3去除阴景这个方法同样提到了去除阴影的问题( Figure6)采用RGB颜色模型的一个变种表示颜色:RBR+G+B·9=R+G+Bb=R+G+B′(16)s=RtG+B(17)令A为某个像素在一定时间内的取值,而定义B如下B={x1|x∈A≤≤阝(18)其含义就是该像素过去的背景取值中与当前值亮度接近的值的集合利用B中的值在(r,g)二维空间上进行上述的背景建模及前景检测,就能很有效地消除检测的阴影。Figure6非参数模型下的阴影去除4基于区域的移动目标检测从上面的介绍的方法来看,建立的背景模型越来越复杂:高斯分布的个数从一个到三个,再到K个,再到每个历史值各一个。这样的背景模型已经具有了高度的复杂性,但是在有些应用环境下效果仍然并不理想。反思一下这些方法的特点,仅仅利用各个像素的独立信息而没有考虑像素之间的关联性是键的原因。其实在3.42中采用方法实际上已经开始尝试以局部区域作为考虑问题的范围,
    2020-12-03下载
    积分:1
  • 利用基于直方图的自适应阈值方法实现分割前景与背景
    利用基于直方图的自适应阈值方法实现分割前景与背景,使用固定阈值和自适应阈值
    2020-12-04下载
    积分:1
  • MATLAB实现灰色预测程序
    MATLAB实现灰色预测程序灰色模型预测是在数据不呈现一定规律下可以采取的一种建模和预测方法,其预测数据与原始数据存在一定的规律相似性%下面程序是灰色模型GM(1,1)程序二次拟合和等维新陈代谢改进预测程序,matlab6.5 ,使用本程序请注明,程序存储为gm1.m%x = [5999,5903,5848,5700,7884];gm1(x); 测试数据
    2021-05-07下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载