为什么这样挪动就可以实现自循环结构呢
先回顾这两个运算器是干嘛的
判断器的设置是任一*>=Average,输出任一*
计算器是用于清除信号A(Average),输出一个-A
开始工作流程:
0t:信号4 5 15 16发出,同时到达第一排的判断器和计算器
1t:此时信号A=0,判断器,所有信号都≥0,全部输出4 5 15 16;运算器,A*-1=0
此时所有信号均到达第二排判断器
2t:第二排运算器是求信号的个数(Number)和各个信号的加和(Summary),所以N=4,S=40
此时所有信号均到达第三排计算器
3t:求取平均值Average,所以信号A=int(S/N)=int(40/4)=10
此时信号A传送到第一排
4t:输入信号依旧是4 5 15 16,外加一个信号A=10。判断器工作4 5 15 16≥10,输出15 16 A=10;运算器工作输出-A=-10
此时,信号15 16 A -A均输出到第二排判断器,但是由于相同信号在红线内会自动进行加法运算,所以A+(-A)=0
真正到第二排的信号只有15 16
5t:信号N和S更新,N=2,S=31。并输出到第三排计算器
6t:更新A,平均值A=int(S/N)=int(31/2)=int(15.5)=15。并将更新后的A=15传送到第一排
7t:输入信号依旧是4 5 15 16,外加更新的信号A=15。判断器≥15输出15 16,运算器输出-A=-15
信号15 16输出到第二排
8t:信号N和S更新,N=2,S=31。
9t:更新A,平均值A=int(S/N)=int(31/2)=int(15.5)=15。
。。。。。。
可以发现,在输入信号平稳的情况下,这个模块的工作将无限循环输出一个稳定的信号15和16
也就是说,当信号在短暂2t时间变动后,它就能输出一个最大值的结果
如果排除相同值和运算器除法取整数这个因素,那么最简单的取极值模块完成了,它只需要简简单单的5个运算器就能搞定
有没有觉得神奇到爆炸啊

