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范围之外.

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

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...