gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 01:50:38 28 4
gpt4 key购买 nike

我需要找到一个样本的频率,以字节数组的形式存储(在 vb 中)。样本是一个正弦波,频率已知,所以我可以检查),但数字有点奇怪,我的 maths-foo 很弱。
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 范围之外的结果。

现在您可以计算过零。为确保您不会被噪音所迷惑,您可能需要跟踪最后几个点的坡度,并且仅在平均坡度方向正确时才计算交叉点。

关于vb.net - 声音样本的数学分析(作为数字数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/87262/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com