NS2 学习笔记—— AODV协议分析

  • 新的改变
  • 功能快捷键
  • 合理的创建标题,有助于目录的生成
  • 如何改变文本的样式
  • 插入链接与图片
  • 如何插入一段漂亮的代码片
  • 生成一个适合你的列表
  • 创建一个表格
    • 设定内容居中、居左、居右
    • SmartyPants
  • 创建一个自定义列表
  • 如何创建一个注脚
  • 注释也是必不可少的
  • KaTeX数学公式
  • 新的甘特图功能,丰富你的文章
  • UML 图表
  • FLowchart流程图
  • 导出与导入
    • 导出
    • 导入

在NS2中,AODV路由协议主要包括以下几个组件:
1、协议实体
2、路由表
3、定时器
(1)广播定时器
(2)周期Hello报文广播定时器
(3)用于邻居管理的定时器
(4)用于路由缓存的定时器
(5)用于本地修复的定时器
(6)缓存广播ID的定时器
4、日志记录器
5、路由缓存队列
首先来看协议从接收到一个分组开始的基本流程。
当协议接收到一个分组,即recv(Packet*,Handler*)函数被调用,函数根据分组类型调用不同的处理函数进行处理。
1、如果是协议分组,则将分组的ttl值减1,并调用recvAODV(Packet*)函数进行处理。recvAODV函数再根据分组的不同类型来调用不同的函数进行处理。
(1)如果接收到的是路由请求分组,则调用recvRequest(Packet*)函数进行处理。
如果该分组由节点自身产生或已经接收过的,会被节点丢弃,并结束处理。否则,节点将缓存该分组的序列号,并将该分组发送来的路径添加到反向路由中,转发相应分组。然后,节点根据该分组的目的地址进行判断并调用不同函数进行处理。
如果节点自身即为目的节点,则调用sendReply(nsaddr_t, u_int32_t, nsaddr_t, u_int32_t,u_int32_t,double)函数进行响应。如果节点不是目的节点,但知道通往目的节点的路由,则调用sendReply函数进行响应,并在源和目的前驱列表中分别插入到源和目的的下一跳节点。否则,不能直接响应该请求,将跳数加1,并调用forward(aodv_rt_entry*,Packet*, double)函数转发该分组。
在sendReply函数中,节点首先查找到达目的节点(即发送路由请求分组的节点)的路由,创建并填充分组,然后调用Scheduler::instance().schedule()函数来发送该分组。
(2)如果接收到的是路由响应分组,则调用recvReply(Packet*)函数进行处理。
节点首先查询前往分组目的节点的路由,如果不存在则新增一条路由项。然后,节点更新到该目的节点的路由项,并发送所有相关分组。
如果节点为目的节点则更新路由发现延迟并发送所有相关的分组。如果节点不是目的节点,但知道通往目的节点的路由,则将跳数加1,调用forward函数转发该分组,并修改响应的前驱列表。如果节点不是目的节点,也不知道通往目的节点的路由,则丢弃该分组。
(3)如果接收到的是路由错误分组,则调用recvError(Packet*)函数进行处理。
节点首先清除所有受到影响的路由项,丢弃所有受影响的分组。然后,如果前驱节点中存在会受该路由错误影响的分组,则调用sendError(Packet*,bool)函数转发该分组。
sendError函数创建并填充分组,然后调用Scheduler::instance().schedule()函数来发送该分组。
(4)如果接收到的是Hello消息分组,则调用recvHello(Packet*)函数进行处理。
节点会将该邻居的信息添加到邻居列表中(或更新该邻居的信息)。
2、如果是数据分组,则节点丢弃已经发送过或者ttl为0的分组,并结束处理。如果分组是由上层协议产生的,则节点添加IP报头。随后,节点根据目的路由进行不同处理。
(1)如果目的节点路由未知,则调用rt_resolve(Packet*)函数进行路由解析和转发。
如果目的节点路由在路由表中存在,则直接调用forward函数进行转发。如果分组是由节点自身产生的,则将分组保存到缓冲队列中,并调用sendRequest(nsaddr_t)函数查询目的路由。如果目的路由已知,但正在进行本地修复,则将分组保存到缓冲队列中。否则,丢弃该分组,并调用sendError函数报错。
(2)如果目的节点路由已知,则调用forward进行转发。
节点丢弃ttl为0的分组,并根据分组类型决定下一步操作。
如果接收到的是数据分组,且自身为目的节点,则通过调用PortClassifier对象的recv(Packet*,Handle*)函数将分组交递给高层协议,并结束处理。否则,节点设置分组属性,并调用Scheduler::instance().schedule(Handler*, Event*,double)函数来发送分组。其中,Handler为基类中的属性target_(会根据脚本中的设置指向相应的协议实体),Event为要发送的分组即可。
以上就是在节点收到分组后的一个处理过程。接下来看看各个定时器所做的工作。
1、广播定时器BroadcastTimer在到时后调用id_purge()函数删除广播项中已超时的项目,并通过调用Scheduler::instance().schedule()函数来设置下次被调用的时间(Handler为this指针,Event为类属性intr)。
2、周期Hello报文广播定时器HelloTimer在到时后调用sendHello()函数向邻居创建并发送Hello消息,并调用schedule()函数来设置下次被调用的时间。
3、邻居管理定时器NeighborTimer在到时后调用nb_purge()函数来清除邻居列表中已超时的邻居项,并调用schedule()来设置下次被调用的时间。nb_purge会调用nt_delete(nsaddr_t)函数来清除超时的邻居项,其又会调用handle_link_failure(nsaddr_t)函数来处理由于邻居节点被删除而引起的路由变化。
4、路由缓存定时器RouteCacheTimer在到时后调用rt_purge()函数来清除路由表中已超时的路由项,并丢弃相关的分组,再调用schedule()来设置下次被调用的时间。
5、本地修复定时器LocalRepairTimer在调用后根据传递的分组的目的地址关闭相应的路由项。
6、缓存广播ID定时器BroadcastID用来保存广播分组的ID。
此外,路由表、日志记录和队列三个类就相对比较简单了,都只实现了一些非常基本的功能,在此就不做介绍了

1、AODV简介

AODV是由Nokia研究中心的Charles E.Perkins和加利福尼亚大学Santa Barbara的Elizabeth M.Belding-Roryer以及Cincinnati大学Samir R.Das等共同开发,已经被 IETF MANET工作组于2003年7月正式公布为自组网路由协议的RFc标准。AODV实质上就是DSR和DSDV的综合,它借用了DSR中路由发现和路由维护的基础程序,及DSDV的逐跳(Hop-by-Hop)路由、目的节点序列号和路由维护阶段的周期更新机制,以DSDV为基础,结合DSR中的按需路由思想并加以改进。

AODV在每个中间节点隐式保存了路由请求和应答的结果,并利用扩展环搜索的办法来限制搜索发现过的目的节点的范围。AODV支持组播功能,支持QoS,而且AODV中可以使用IP地址,实现同Internet连接,但是不支持单向信道。和DSDV保存完整的路由表不同的是,AODV通过建立基于按需路由来减少路由广播的次数,这是AODV对DSDV的重要改进。和DSR相比,AODV的好处在于源路由并不需要包括在每一个数据分组中,这样会使路由协议的开销有所降低。AODV是一个纯粹的按需路由系统,那些不在路径内的节点不保存路由信息,也不参与路由表的交换。AODV协议可以实现在移动终端间动态的、自发的路由,使移动终端很快获得通向所需目的的路由,同时又不用维护当前没有使用的路由信息,并且还能很快对断链的拓扑变化做出反应。AODV的操作是无环路的,在避免了通常Bellman-ford算法的无穷计数问题的同时,还提供了很快的收敛速度。AODV的路由表中每个项都使用了目的序列号(Destination Sequence Number)。目的序列号是目的节点创建,并在发给发起节点的路由信息中使用的。使用目的序列号可以避免环路的发生。

AODV使用3种消息作为控制信息 :RouteRequest(RREQ),RouteReply(RREP)和 RouteError(RERR)。这些消息都在UDP上使用654端口号。

当源节点需要和目的节点通信时,如果在路由表中已经存在了对应的路由时,AODV不会进行任何操作。当源节点需要和新的目的通信时,它就会发起路由发现过程,通过广播RREQ信息来查找相应路由。当这个RREQ到达目的节点本身,或者是一个拥有足够新的到目的节点路由的中间节点时,路由就可以确定了。所谓“足够新”就是通过目的序列号来判断的。目的节点或中间节点通过原路返回一个RREP信息来向源节点确定路由的可用性。在维护路由表的过程中,当路由不再被使用时,节点就会从路由表中删除相应的项。同时,节点会监视一个活动路由(activeroute,有限跳的,可用于数据转发的路由表)中,下一跳节点的状况。当发现有链路断开的情况时,节点就会使用RERR通知上游的节点,而上游的节点就会使用该RERR分组拷贝通知更上游的节点。在RERR消息中,指明了由于断链而导致无法达到目的节点。每个节点都保留了一个“前驱列表”(precursor list)来帮助完成错误报告的功能,这个列表中保存了把自己作为到当前不可达节点的下一跳的相邻节点(可以通过记录RERR很容易地获得)。在路由表中,针对每一个表项,需要记录相应的的特征内容。其中,序列号是防止路由环路的关键所在。当发生断链时,通过增加序列号和度量值(跳数)来使路由表项无效。

2、AODV路由协议的运行方式

(a)AODV路由发现  

AODV路由协议是一种典型的按需驱动路由协议,该算法可被称为纯粹的需求路由获取系统,那些不在活跃路径上的节点不会维持任何相关路由信息,也不会参与任何周期路由表的交换。此外,节点没有必要去发现和维持到另一节点的路由,除非这两个节点需要进行通信。移动节点间的局部连接性可以通过几种方法得到,其中包括使用局部广播Hello消息。这种算法的主要目的是:在需要时广播路由发现分组一般的拓扑维护;区别局部连接管理(邻居检测)和一般的拓扑维护;向需要连接信息的邻居移动节点散播拓扑变化信息。AODV使用广播路由发现机制,它依赖中间节点动态建立路由表来进行分组的传送。为了维持节点间的最新路由信息,AODV借鉴了DSDV中的序列号的思想,利用这种机制就能有效地防止路由环的形成。当源节点想与另外一个节点通信,而它的路由表中又没有相应的路由信息时,它就会发起路由发现过程。每一个节点维持两个独立的计数器:节点序列号计数器和广播标识。源节点通过向自己的邻居广播 RREQ(Route Requests)分组来发起一次路由发现过程。

(b)反向路由的建立  

在RREQ分组中包含了两个序列号:源节点序列号和源节点所知道的最新的目的序列号。源节点序列号用于维持到源的反向路由的特性,目的序列号表明了到目的地的最新路由。当RREQ分组从一个源节点转发到不同的目的地时,沿途所经过的节点都要自动建立到源节点的反向路由。节点通过记录收到的第一个RREQ分组的邻居地址来建立反向路由,这些反向路由将会维持一定时间,一该段时间足够RREQ分组在网内转发以及产生的RREP分组返回源节点。当RREQ分组到达了目的节点,目的节点就会产生RREP分组,并利用建立的反向路由来转发RREP。

(c)正向路由的建立  

RREQ分组最终将到达一个节点,该节点可能就是目的节点,或者这个节点有到达目的节点的路由。如果这个中间节点有到达目的的路由项,它就会比较路由项里的目的序列号和RREQ分组里的目的序列号的大小来判断自己已有的路由是否是比较新的。如果RREQ分组里的目的序列号比路由项中的序列号大,则这个中间节点不能使用己有的路由来响应这个RREQ分组,只能是继续广播这个RREQ分组。中间节点只有在路由项中的目的序列号不小于RREQ中的目的序列号时,才能直接对收到的RREQ分组做出响应。如果节点有到目的地的最新路由,而且这个RREQ还没有被处理过,这个节点将会沿着建立的反向路由返回RREP分组。

  在RREP转发回源节点的过程中,沿着这条路径上的每一个.节点都将建立到目的节点的同向路由,也就是记录下RREP是从哪一个邻居节点来的地址,然后更新有关源和目的路由的定时器信息以及记录下RREP中目的节点的最新序列号。对于那些建立了反向路由,但RREP分组并没有经过的节点,它们中建立的反向路由将会在一定时间(Active-Route-Timeout)后自动变为无效。收到RREP分组的节点将会对到某一个源节点的第一个RREP分组进行转发,对于其后收到的到同一个源的RREP分组,只有当后到的RREP分组中包含了更高的目的序列号或虽然有相同的目的序列号但所经过的跳数较少时,节点才一会重新更新路由信息,以及把这个RREP分组转发出去。这种方法有效地抑制了向源节点转发的RREP分组数,而且确保了最新及最快的路由信息。源节点将在收到第一个RREP分组后,就开始向目的节点发送数据分组。如果以后源节点了解到的更新的路由,它就会更新自己的路由信息。

3、AODV路由表的管理  

节点的路由中除了存储源和目的节点的序列号外,还存储了其他有用的信息,这些信息成为有关路由项的软状态。与反向路由相关的是路由请求定时器,这些定时器的目的是清除一定时间内没有使用的反向路由项。定时器的设置依赖于自组网的规模大小,与路由表相联系的另外一个重要的参数是路由缓存时间,即在超过这个时间之后,对应的路由表就变为无效。  此外,在每一个路由表中,还要记录本节点用于转发分组的活跃邻居。如果节点在最近一次活跃期间(Active-Timeout)发起或转发了到某个目的节点的分组,那么就可以称这个节点为活跃节点。这样,当到达某一个目的节点的链路有问题时,所有与这条链路有关的活跃节点都可以被通知到。一个路由表还有活跃邻居在使用,就可以认为是有效的。通过各个活跃路由项所建立的源节点到目的节点的路径,也就是一条活跃路径。路由表中的目的节点序列号,正如在DSDV路由协议中所使用的那样,可以在无序分组的传送和节点高度移动的极端条件下避免路由环路的产生。

  移动节点为每一个相关的目的节点维护了一个路由表。每一个路由表包含以下一些信息:目的地址、下一跳地址、跳数、目的序列号及路由项的生存时间。路由表在每一次被用来传送一个分组时,它的生存时间都要重新开始计算,也就是用当前时间加上Aetive-Route-Timeout。如果一个移动节点被提供了到达某一个目的节点的新路由,那么它就会把这个新路由的目的序列号与自己路由表中己有的目的序列号做比较,并将目的序列号大的作为到达目的节点的路由表。如果目的序列号相同,则采用到目的节点所经过的节点数(跳数)最少的那个路由。

4、AODV路由维护  

如果节点的移动不是沿着活跃路径进行的,那么就不会影响己经建立的路由。如果一个源节点在活跃路径上移动,它就要向目的节点重新发起一次路由发现过程。如果移动的节点是中间节点或目的节点,那么一个特殊的RREP分组将转发到那些受移动影响的源节点。周期性发送的Hello分组可以用来确保链路的对称性,并检测不能用的链路。如果不用Hello分组,也可以采用链路层通告机制来报告链路的无效性,这样可以减少延迟。此外,节点在尝试向下一跳节点转发分组失败后,也能检测出链路的不可用性。

  一旦一个节点的下一跳节点变得不可达,这时它就要向利用该损坏链路的活跃上游节点发送未被请求的RREP(RERR)分组,这个RREP(RERR)分组带有一个新的序列号(即在目的序列号上加1),并将跳数值设置为二。收到这个RREP(RERR)分组的节点再依次将RREP(RERR)分组转发到它们各自的活跃邻居,这个过程持续到所有的与损坏链路有关的活跃节点都被通知到为止。源节点在收到断链的通知后,如果它还要与目的节点联系,它就需要再次发起新的路由发现过程。这时,它将会广播一个RREQ分组,这个RREQ分组中的目的序列号要在源节点已知的最新目的序列号之上加1,以确保那些还不知道目的节点最新位置的中间节点对这个RREQ分组做出响应,从而能保证建立一条新的、有效的路由。

5、AODV协议评价  

总之,AODV是一种距离矢量路由协议,采用的算法克服了以前提出的一些算法(如DSDV)的缺点,具有如下优点:  

(a)基于传统的距离向量路由机制,思路简单、易懂。  

(b)支持中间节点应答,能使源节点快速获得路由,有效减少了广播数,但存在过时路由问题。  

(c)节点只存储需要的路由,减少了内存的需求和不必要的复制。  

(d)快速响应活跃路径上断链。  

(e)通过使用目的序列号来避免路由环路,解决了传统的基于距离向量路由协议存在的无限计数问题。  

(f)具有网络的可扩充性。  

(g)需要周期性地广播分组,需要消耗一定的电池能源和网络带宽。与DSDV以及其他持续存储更新路由信息的算法相比,AODV需要相对较长的路由建立时延,不过AODV采取了以下的一些措施来加以改善:  

(a)到某个目的节点的路由可以由知道路由的中间节点进行响应。  

(b)链路失效能够被立即报告,这样路由可重新建立。  

(c)不活跃的路由在一定时间后会被删除。

# 欢迎使用Markdown编辑器

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片:

带尺寸的图片:

居中的图片:

居中并且带尺寸的图片:

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目

    • 项目

      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to-HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ(n)=(n−1)!∀n∈N\Gamma(n) = (n-1)!\quad\forall n\in\mathbb NΓ(n)=(n−1)!∀n∈N 是通过欧拉积分

Γ(z)=∫0∞tz−1e−tdt .\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞​tz−1e−tdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06Mon 13Mon 20已完成 进行中 计划一 计划二 现有任务Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间,文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0开始我的操作确认?结束yesno
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

NS2 学习笔记—— AODV协议分析相关推荐

  1. NS2 学习笔记—— AODV协议

    在NS2中,AODV路由协议主要包括以下几个组件: 1.协议实体 2.路由表 3.定时器 (1)广播定时器 (2)周期Hello报文广播定时器 (3)用于邻居管理的定时器 (4)用于路由缓存的定时器 ...

  2. Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4)...

    Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4) 今天再次分析了Eva的源码,也看 ...

  3. 【转】医疗业务学习笔记--DICOM协议的基础内容!!!!!!!!!!

    转自:医疗业务学习笔记--DICOM协议的基础内容 - 知乎 本文首发于"雨夜随笔"公众号,欢迎关注. DICOM协议是医疗领域对如何处理.存储.打印和传输医疗图片的一系列标准.D ...

  4. oracle in查询 一直等待,学习笔记:Oracle awr 分析解决inactive transaction branch等待事件...

    天萃荷净 通过Oracle AWR报告分析inactive transaction branch等待事件的原因 分析一份awr,发现不太熟悉的等待事件"inactive transactio ...

  5. RT-1052学习笔记 - GPIO架构分析

    RT-1052学习笔记 - GPIO架构分析 一.RT1052之GPIO与IOMUX 二.GPIO架构分析 分析GPIO的外设框架 库函数操作 1.初始化MUX 2.初始化PAD 3.初始化GPIO外 ...

  6. ARM学习笔记--LPC1788引脚分析

    http://zgmgypb.blog.163.com/blog/static/962028192012730104640980/ RM学习笔记--LPC1788引脚分析 一.电源分析 要弄清楚单片机 ...

  7. HFSS学习笔记 21 扫频分析

    HFSS学习笔记之扫频分析-----------锋锋的快乐小窝 通过求解设置,可以对模型结构进行自适应网格剖分,并计算指定的网络剖分频率点处的 S S S参数和场解 b如果需要分析或计算某个频段范围内 ...

  8. Replica Island 学习笔记 03 - Activity分析

    MainMenuActivity Activity界面 MainMenuActivity启动的时候,会用fade in动画逐个显示菜单按钮,并在屏幕最下方显示一个Ticker:     点击任一菜单按 ...

  9. 学习笔记 | 独立成分分析(ICA, FastICA)及应用

    学习笔记 | 独立成分分析[ICA, FastICA]及应用 1 背景说明 2 算法原理 2.1 ICA简介 2.2 形式化表达 3 算法步骤与代码 4 算法改进:FastICA 5 ICA实例与应用 ...

  10. 自控原理学习笔记-系统稳定性分析(2)-环路分析及Nyquist-Bode判据

    自控原理学习笔记 自控原理学习笔记专栏 文章目录 3. 环路分析 3.1环路分析基本思想: 3.2 稳定程度的性能指标(相对稳定) 3.3 环路整形 4.Nyquist判据 4.1 与幅角原理关系 4 ...

最新文章

  1. 【网络流】解题报告:luogu P3376 【模板】网络最大流
  2. Linux系统服务(systemctl)的使用
  3. 哨兵2号波段_分布式框架之高性能:Redis哨兵模式
  4. big sur java home_无法在macOS Big Sur上运行Eclipse
  5. enspar启动失败40_适合烘焙新手第一次做的芝士面包,简单易上手,好吃松软零失败...
  6. 图解SQL的Join(转摘)
  7. hackmyvm之warez
  8. 给程序员推荐一些提高工作效率的工具
  9. 什么是广域网和局域网?
  10. MPB:山大倪金凤组-​​白蚁肠道微生物样品收集与制备
  11. 伊利洛伊大学厄巴纳-香槟分校计算机专业,伊利诺伊大学厄巴纳香槟分校哪些专业比较好?...
  12. linux vi回到末行模式,Linux vi/vim 的命令模式,,编辑模式,末行模式
  13. 在QPixmap的图片上添加文字
  14. Booksir路线:先成材,再成功,警察到书生的传奇(转载)
  15. c++生成随机数详解(包含可执行代码)
  16. Linux 用户管理 文件目录指令 时间日期指令 搜索查找类 解压压缩类
  17. [Python/转载]Python 100 Day : 初识Python
  18. 郊区春游(状压DP水题)+ 记录路径
  19. 等维递推GM(1,1)模型、无偏灰色模型
  20. STM 32汇编语言的学习

热门文章

  1. 在10分钟内完成微信小程序开发
  2. 可以在手机预览ps设计稿的软件
  3. 做量化投研必须掌握的三大基本模型理论
  4. 【java学习之旅】——JSP入门
  5. 基于mybatis的数据库脱敏
  6. MemTest和Memtest86+使用教程
  7. c语言实现生成彩票随机号
  8. java txt中文乱码_Java读写txt文件中文乱码问题的解决
  9. ZedGraph例子
  10. matlab坐标轴非均匀分布,matalb——生成离散非均匀随机数