微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vb.net – 声音样本的数学分析(作为数组)

我需要找到一个样本的频率,存储(以vb为单位)作为字节数组.样本是一个正弦波,已知的频率,所以我可以检查),但数字有点奇怪,我的数学弱点.
全范围值0-255. 99%的数字在235到245之间,但有一些异常值下降到0和1,剩下的1%中有255个.
如何规范化这个以消除异常值(计算235-245间隔,因为它可能随不同的样本而改变),然后如何计算过零点来获得频率?
道歉,如果这个描述是垃圾
FFT可能是最好的答案,但如果您真的想通过您的方法执行此操作,请尝试:

为了规范化,首先要做一个直方图来计算每个值从0到255的出现次数.然后从每个末尾抛出X%的值,如下所示:

for (i=lower=0;i< N*(X/100); lower++)
  i+=count[lower];
//repeat in other direction for upper

现在正常化

A[i] = 255*(A[i]-lower)/(upper-lower)-128

将结果丢在-128..127范围之外.

现在你可以计算过零点.为了确保你没有被噪音愚弄,你可能想要跟踪最后几点的斜率,只有当平均坡度正确进行时才计算交叉点.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐