声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2074|回复: 5

[综合] 过零点检测

[复制链接]
发表于 2009-8-14 11:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我现在处理的是带有噪声的类似于正弦波的信号,需要检测过零点的个数,不要求非常精确,但是个数的识别率要在99%以上。如果做个这方面工作的话帮我给推荐一些文章或者介绍一下算法。不胜感激:)
回复
分享到:

使用道具 举报

发表于 2010-8-26 15:53 | 显示全部楼层
我们的处理方法是首先选择一个阈值,将绝对值大于这个阈值的点设为某个固定值。然后选择两个已知固定值之间的数据段进行分析,如果这段数据的两端点符号相反,则可以认定有一次过零。具体过零的时间可以这样处理,对出现过零点的数据段两个端点之间的数据进行插值,寻找最接近零的插值曲线上的点对应的时间就是过零点的时刻。
但是我们的数据量很大,每条记录有100兆,这种算法在处理速度上有点慢,有没有更好的办法,希望跟帖。
发表于 2010-8-30 08:21 | 显示全部楼层
在计算机上,任何数值的正负都是标志在某一位是0或者1,比如如果你的数据类型是short,那么判断相邻两个数的第一位是否相同,如果不同那么即存在一个穿零点;单精度双精度类似处理。由于只是简单的位处理,速度应该很快。
发表于 2010-9-30 14:46 | 显示全部楼层
是个好方法,不过不是对每种编程语言都适用。
发表于 2010-10-1 15:14 | 显示全部楼层

这是利用数据在计算机中的符号位,所以如同impulse所述,不是所有语言都可以适用的。实际上songjianjiang给的思路是对的,但可以把相邻两个数相乘,再判断,若乘积小于零,则在这两个数之间必然有个零点。
发表于 2010-10-1 18:39 | 显示全部楼层
实际上我就是用乘积来计算穿零点的,但是毕竟位运算比乘积运算速度上快的多得多,而且楼主的数据有100M之多。不过并不是所有环境下都支持底层的数据位运算,这也是该方法的实际应用中的不足。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-21 22:17 , Processed in 0.064137 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表