杨贵琳 周强 胡江涛 刘伟伟
摘要:粉红噪声是电子、信号处理乃至声学领域常用的随机信号。针对于以PC机为代表的串行处理设备上生成的粉红噪声效果较差的问题,该文提出了一种在DSP中采用改进的混合同余法生成平稳白噪声并利用参数模型法来生成粉红噪声的方法。实验表明:在DSP中得到了性能良好的粉红噪声。
关键词:粉红噪声;DSP;参数模型;白噪声;改进的混合同余法
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2015)34-0204-03
Abstract: Pink noise is often used in electronics, signal processing, and acoustic field. In represented by PC serial processing equipment which cannot generate the ideal pink noise, so this paper presents the method which with the improved mixed congruence method to generate a steady white noise and the method which through a parameter model to generate pink noise in DSP. Eventually,I get the good performance of pink noise.
Key words: pink noise; DSP; parameters model ; white noise; improved mixed congruence method
1 背景
1.1 粉红噪声生成方法
粉红噪声是自然界中最常见的噪声,其能量主要分布在中低频段,并且能量从低频到高频不断衰减,曲线可近似为1/f,广泛应用于电子测试、声学测试等领域[1]。
目前常用的生成方法主要有Paul Kellet加权滤波法、Robert Bristow-Johnson的零极点滤波器法、Voss算法和传递函数逼近法等在计算机中直接生成的方法[2]。研究表明:Paul Kellet方法目前性能最佳,但计算量大且计算过程复杂;Robert Bris-tow-Johnson方法拟合粉红噪声的效果差;Voss算法实现性能差;传递函数逼近法存在不容忽视的拟合误差[3-4]。因此,本文提出了利用参数模型法来生成粉红噪声的方法,该方法实现容易且生成效果良好。
1.2 参数模型法生成粉红噪声
参数模型法生成粉红噪声的步骤为:1)在DSP或PC机等智能设备上生成白噪声[u(n)];2)建立粉红噪声参数模型[H(Z)];3)将白噪声通过粉红噪声参数模型得到粉红噪声[x(n)]。其示意图如图1所示。
常见的参数模型有三种:AR模型、MA模型、ARMA模型。其中ARMA模型能够准确地获得噪声功率谱中的峰值和谷值,较全面地模拟噪声的性质[5],因此本文采用ARMA模型对粉红噪声进行拟合估计。
由图1可知,要生成高质量的粉红噪声,不仅需要精确的ARMA模型,而且需要频谱分布均衡的平稳白噪声。本文提出了一种改进的混合同余法,来生成平稳白噪声。此方法与经典的混合同余法相比加大了白噪声的随机性,能够得到各频段更加均衡的白噪声。
2 粉红噪声硬件平台
2.1 PC机平台
在PC机中生成的粉红噪声并不是真正意义上的粉红噪声。由于作为源驱动信号的白噪声主要由软件中集成的白噪声发生器或库函数生成,得到的白噪声并不“白”,因此粉红噪声功率谱曲线更接近于[1f2]曲线,而非[1f]曲线,并无法获得良好的粉红噪声。
2.2 DSP平台
DSP是一种高性能的并行处理器,广泛应用于信号处理、电子和声学等领域[7],它具有很高的数据处理速度,能够克服Paul Kellet加权滤波等方法生成粉红噪声信号的不足。
目前在DSP上生成噪声的方法一种是利用计算机集成的库函数,得到的白噪声与PC机无异;另一种是通过在Matlab中搭建噪声模型并与DSP通信,但这种方法并不理想:一方面是Matlab与DSP间的通信会大大拖慢程序进程;另一方面机器自动转换的模型代码易读性差,调试困难。因此寻求一种方便且高效的方法,成为了一个很有价值的研究方向。
本文所提出方法在各系列DSP上均可行,首先在DSP的存储器中生成白噪声,通过所建立的粉红噪声参数模型滤波后得到粉红噪声,再由功能芯片将噪声声音传输使用。
3 改进的混合同余法生成平稳白噪声
白噪声的性能是影响粉红噪声质量的关键,混合同余法是生成白噪声的一种有效方法,但存在白噪声分布不均的缺陷。
3.1 混合同余法
通过同余算法生成白噪声序列数的方法称为同余法,常用的同余法包括加同余法、乘同余法、混合同余法。其中乘同余法和混合同余法性能较好,具有序列生成时间短、循环周期长、功率谱特性好等优点[8]。混合同余法递推公式为:
可证明由此获得的白噪声序列数周期是[M-1][9]。因此[M]的选取要尽可能的大,通常将[M]取为计算机所能表示的最大整数值。
由混合同余法生成的白噪声序列有以下不足[10]:
1)序列数周期[T]受[X0],[a],[c],[M]的影响。
2)在计算中,浮点运算会对[T]产生很大的影响。
3)在一个周期内两个噪声随机数不可能相等,这往往与实际情况不相符。
4)经统计分析,序列数随机性不明显,有集中分布的现象。
5)初始值的选定对后续序列的影响很大,性能上很难满足要求。
因此本文提出一种改进的混合同余法来生成平稳白噪声。
3.2 改进的混合同余法
针对以上不足,本文对混合同余法进行了三点改进:
1)选用两组种子数,并在计算过程中不断改变种子数的值,以增加数据随机性;
2)使[c=0],以减少DSP的运算量;
3)由于数据大多是非整数值,计算时若强制转换会导致数据丢失,因此改进运算类型。
由此得到改进的混合同余法公式为:
对比图2发现,图3的白噪声功率谱平稳波动小,数据方差为0.0013,更加接近理想白噪声。
4 生成粉红噪声
确定ARMA模型的参数,将获得的平稳白噪声通过滤波模型便可以得到粉红噪声序列。
4.1 基于噪声模型的粉红噪声生成方法
粉红噪声的ARMA数学模型为[11]:
从图4(b)中可以看出信号中低频部分存在突起,考虑到模型阶数已达到7阶,因此对模型参数进行优化,根据双线性Z变换法重新推导,提高参数精度值,得出如下模型:
5 结束语
本文提出一种在DSP中采用参数模型法来生成粉红噪声的新方法。在DSP中根据改进的混合同余法生成平稳的白噪声,确定出粉红噪声的ARMA参数模型,并在DSP中实现相关算法,最后将平稳白噪声经过此ARMA模型滤波,得到性能良好的粉红噪声。分析由此方法得到的粉红噪声,其功率谱特性满足粉红噪声的特性,与由计算机直接得到的粉红噪声相比,性能得到很大提高。
参考文献:
[1] 胡广书. 数字信号处理理论、算法与实现[M]. 北京: 清华大学出版社, 1997: 325-327.
[2] Whittle R.DSP generation of pink (1/f) noise [EB/OL]. (2006-03-27)[2006-05-15]. http//www.Firstpr.com.au/dsp/pink-noise/.
[3] 刘昱, 谢志文, 梁志强. 多频声逼近粉红噪声的研究[C]//2009年声频工程学术交流年会论文集. 北京: 中国电子学会/中国声学学会, 2009: 194-199.
[4] 黄松华, 马静, 邱小军. 数字粉红噪声的生成研究[J]. 电声技术, 2006,30(11): 56-58.
[5] 谭亚丽. 基于DSP的粉红噪声睡眠仪的研究[D]. 西安: 陕西科技大学, 2012.
[6] 徐小兵, 沈勇 鄔宁. IIR数字粉红噪声滤波器的优化设计[J]. 噪声控制, 2005, (12): 56-59.
[7] 吴飞. 产生随机数的几种方法及其应用[J]. 数值计算与计算机应用, 2006(1): 48-51.
[8] 宁改娣, 曾翔君, 骆一萍. DSP控制器原理及应用[M]. 北京: 科学出版社, 2009: 1-10.
[9] 杨振海, 张国志. 随机数生成[J]. 数理统计与管理, 2006, 25(2): 224-252.
[10] 秦雪陈. 混合同余法产生随机噪声的FPGA实现[J]. 电子设计工程, 2015, 23(9): 123-124.
[11] 吕鹏, 周强, 谭雅丽. 生成粉红噪声的ARMA模型[J]. 数据采集与处理, 2011, 26(6): 728-732.