一个循环不停的产生数据,如何实现比较前后两次数据的大小问题,如果两次相差小于1说明数据有效,那么就保留这次的值;反之如果前后两数相差大于1说明数据无效,则继续取前一次的值。请问各位如何实现前后两次值的比较?主要是不知道怎么保存前一次的值,请知道的指点一下,十分感谢。
2
|
|
|
|
走入了死胡同,基本bug解决不了,为了掩饰bug不断增加程序,解决一个bug又长生新的bug,没完没了了。
|
|
|
|
|
本帖最后由 vib001 于 2015-11-3 13:16 编辑
用移位寄存器可以实现你需要的功能, 简单明了可以使用 反馈节点
将经过反馈节点的数据和反馈之前的数据比较 ,就是你需要的结果
|
|
|
|
|
用移位寄存器可以实现你需要的功能, 简单明了可以使用 反馈节点
|
|
|
|
|
谢谢啊,还动手做了,很感谢。你的程序我认真看了,而且自己也做了一个。但是对我而言有两个问题。一是,相差小于1保留本次值没错,可是相差如果大于一却用零代替,这样跳跃一样很多,而且不能再去掉,因为我的输入数据是温度,有零度的可能,而且是实时采集,波形显示并存储的,所以没法剔除0.二是,我的数据是不断循环采集显示的,比较两次输入大小只是其中一部分,如果用个for或者while循环会影响整个循环的执行的。不知道你是否还有什么对策。
|
|
|
|
|
hejin515 发表于 2015-11-4 09:52
谢谢啊,还动手做了,很感谢。你的程序我认真看了,而且自己也做了一个。但是对我而言有两个问题。一是,相差小于1保留本次值没错,可是相差如果大于一却用零代替,这样跳跃一样很多,而且不能再去掉,因为我的输入数据是温度,有零度的可能,而且是实时采集,波形显示并存储的,所以没法剔除0.二是,我的数据是不断循环 ...
采集温度信号,可不可以尝试显示连续三个数或几个数的平均值?
|
|
|
|
|
我也觉得你的程序是对的,很有道理。但是我完全按照你的做了一个,发现还不是不对,曲线一点都不平滑,不知道到底哪儿出问题了。具体的程序和运行结果见图。
-
1.png
(22.89 KB, 下载次数: 16)
-
2.png
(17.74 KB, 下载次数: 8)
|
|
|
|
|
想到一个可能的原因,假设这次输入的值与上次的比相差过大,虽然这次输出会用上次的代替,但是这个值并没有被舍弃还是会进入反馈节点,这样如果下次的值与这个值通过了比较,它还是会输出,那么还是曲线还是不会那么平滑。请问这种情况该如何解决呢?
|
|
|
|
|
能实现while循环达到条件终止本次循环直接进行下次循环吗?
|
|
|
|
|
其实这个也并没有剔除那个在差值大于1的时候的数值,只是保留了上一个数值。要想曲线平滑一点,一般的温度采集会使用最近几个点的平均值
|
|
|
|
|