我需要找到一个样本的频率,存储(以vb为单位)作为字节数组.样本是一个正弦波,已知的频率,所以我可以检查),但数字有点奇怪,我的数学弱点.
全范围值0-255. 99%的数字在235到245之间,但有一些异常值下降到0和1,剩下的1%中有255个.
如何规范化这个以消除异常值(计算235-245间隔,因为它可能随不同的样本而改变),然后如何计算过零点来获得频率?
道歉,如果这个描述是垃圾!
全范围值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范围之外.
现在你可以计算过零点.为了确保你没有被噪音愚弄,你可能想要跟踪最后几点的斜率,只有当平均坡度正确进行时才计算交叉点.