概述
在音频中有时候用白噪声作为测试信号,下面是一个具体的简单白噪声产生算法。
算法参考文献:http://wenku.baidu.com/view/a643788dec3a87c24028c453
下面Code的算法使用的是“线性混合同余法”。
x(i) = (a x(i-1) + c) mod (m)
m = 2^k
a选优质的乘子589
c和x(i-1)选能够让白噪声刚开始产生信号比较小的值。
x(i-1) = 27
c = 481
在16bit中选k=16.
由此得到如下产生16bits 白噪声信号的简单算法。
<span style="font-family:Microsoft YaHei;font-size:18px;">long iGenWhiteNoiseMLCG16bitsLite(short *pdat, long samples)
{
static long x = 27;
long s;
long y;
s = 0;
if ((NULL != pdat) && (0 != samples))
{
for (; s < samples; s++)
{
x *= 589;
x += 481;
y = x >> 16;
*pdat = (short)y;
pdat++;
}
}
return s;
}
</span>
测试结果如下
按16bits PCM格式打开的波形如下:
对应的频谱图如下:
看来结果还是可以满足基本白噪声要求的。
完整的Code以及测试代码可以去AudioKits下载查看:
https://git.oschina.net/webwater/AudioKits/blob/master/src/math/t_wnoise.c
最后
以上就是淡淡保温杯为你收集整理的[Math]简单产生白噪声的算法的全部内容,希望文章能够帮你解决[Math]简单产生白噪声的算法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复