利用伪随机序列理论产生均匀分布的随机序列_第1页
利用伪随机序列理论产生均匀分布的随机序列_第2页
利用伪随机序列理论产生均匀分布的随机序列_第3页
利用伪随机序列理论产生均匀分布的随机序列_第4页
利用伪随机序列理论产生均匀分布的随机序列_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、利用伪随机序列理论产生均匀分布的随机序列进而产生高斯白噪声 摘要:本文介绍了利用伪随机序列理论产生均匀分布的随机序列,进而产生高斯白噪声。高斯白噪声生成分两步实现。本文介绍这两步中的主流算法,并对其性能进行了分析;讨论了该算法组合的具体实现,包括加入对高斯白噪声均值和方差的控制。关键词: 均匀分布随机变量 高斯白噪声 线性同余法 目前,为获得参数可调的高斯白噪声,一般采用数字方法产生。数字方法产生分为两步:先产生均匀分布的白噪声,然后通过均匀分布的白噪声获得高斯白噪声。在这两步中均有多种方法可以选择。1 均匀分布白噪声生成算法的选择目前,有三种常用的均匀分布白噪声生成算法:线性同余算法、Shi

2、ft-Register方法和Lagged-Fibonacci算法。对三种算法的性能进行测试,包括随机数在分布上的均匀性、随机数在随机序列中分布的均匀性和随机序列种子序列的依赖关系等内容。就性能而言,lagged-Fibonacci算法采用乘最好,lagged-Fibonacci算法采用加或减次之,线性同余法又次之。从实现角度,Shift-Register方法、lagged-Fibonacci算法采用异或和lagged-Fibonacci算法采用加或减只需要移位、异或和加减法等操作,适合FPGA实现。而线性同余算法和lagged-Fibonacci算法采用乘需要乘法操作,适合编程实现。根据以上判

3、断,结合实际情况,采用线性同余法算法来实现产生均匀分布的随机序列。2. 均匀分布白噪声产生高斯白噪声算法的选择目前,比较常用的有地址方法和公式方法。(1) 查阅相关资料,可以知道两种方法产生高斯白噪声的性能相近。 (2) 从实现角度,前者具体实现时,产生高斯白噪声速度比较快,但需要使用Rom来保存映射关系。为获得较高性能的高斯白噪声,需要大容量的Rom。后者具体实现时,不需要使用大容量的内存,但需要n个均匀白噪声才可以产生一个高斯白噪声,产生速度比较慢。(3) 根据以上判断,结合实际情况,采用公式方法。3. 实际使用综合前面,采用线性同余法算法和公式方法的组合来实现高性能高斯白噪声。并且考虑加

4、入对高斯白噪声的均值和方差的控制!程序流图如下:开始产生随机数种子产生一个随机数N个随机数(近似白噪声)根据给定的期望与方差产生一般高斯随机数产生M个点的高斯白噪声序列计算概率密度计算概率密度计算实际的方差与期望,与理论相比较保存保存根据定理,产生标准高斯随机数(1)均匀白噪声模块中,采用线性同余法。这里使用的算法表达式如下:选取足够大的正整数M和任意自然数n0,a,b,由递推公式: ni+1=(a*f(ni)+b)mod M i=0,1,M-1生成的数值序列称为是同余序列。当函数f(n)为线性函数时,即得到线性同余序列: ni+1=(a*ni+b)mod M i=0,1,M-1以下是线性同余

5、法生成伪随机数的程序段:void uniform(double a,double b,long int *seed) double t; *seed=2045*(*seed)+1; *seed=*seed-(*seed/1048576)*1048576; t=*seed/1048576.0; t=a+(b-a)*t; return t;其中种子参数seed可以任意选择, a,b(w是一个字长)。应用递推公式产生均匀分布随机数时,式中参数a,b的选取十分重要。重复操作,获得均匀分布的随机序列。得到的序列如图: 由公式E(x)= 得序列的期望,其值为0.505151,与理想值0.5十分接近。由统计

6、各区间所含序列点数,绘得概率密度曲线如下图:(2)高斯白噪声模块中,采用公式法。中心极限定理 如果大量的随机变量组成一个随机变量,即 Y= ,且每个随机变量Xi对总量Y的影响足够小,在N趋近于无穷大时,Y(近似)服从正态分布,与Xi的分布律无关。公式方法取N12时,分布已经接近高斯分布了。即对产生的12个均匀白噪声按表达式进行操作来获得高斯白噪声。在获得高斯白噪声后,通过乘法器和加法器实现高斯白噪声方差和均值的调节就得到了参数可调的数字高斯白噪声。因为对高斯分布x,通过变换y=+x,可以获得均值为、方差为2的高斯分布y。程序段如下:/每产生M个高斯点中的一个点需要N_perpoint个均匀分布

7、的随机数。/N_perpoint越大越精确/该程序产生M个均值为MeanNeed,方差为SigmaNeed2的高斯随机数 for(i=0;i<M;i+) gaussi=0; s=s+i;/修改每次的种子,使产生不同的变量 for(n=0;n<N_perpoint;n+) xn=uniform(a,b,&s);/产生均匀分布的随机变量 gaussi=gaussi+sqrt(float)12/N_perpoint)*xn; gaussi=gaussi-(float)sqrt(float)12/N_perpoint)* (N_perpoint/2); gaussi=(float)(MeanNeed+SigmaNeed*gaussi);mean=mean+gaussi/M;/计算实际得到噪声的期望 for(i=0;i<M;i+) sigma=sigma+(gaussi-mean)*(gaussi-mean)/M;/计算实际得到噪声的方差产生的高斯白噪声序列如下图:(期望为0,方差为1,序列长度为1000)得到的序列期望为0.009893,方差为1.028599,与设定值接近。统计各区间所含序列点数,绘得概率密度曲线如下图:与

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论