窄带高斯白噪声

更新时间:2023-11-02 22:59:08 阅读: 评论:0

委托付款函-关于我的作文

窄带高斯白噪声
2023年11月2日发(作者:高明的近义词)

窄带高斯随机信号功率谱的产生

摘要

基于Visual Studio的开发环境,本文首先通过线性同余法产生高斯白噪声。接着利用FIR

数字滤波器的原理,产生低通滤波器。然后让高斯信号过滤波器,最后通过莱斯表达式的方

式表示窄带高斯白噪声,求出其对应的自相关函数,利用维纳—辛钦公式,对自相关函数进

行傅里叶变换便可以得出功率谱密度函数。

一、问题重述、分析

画出窄带高斯白噪声的功率谱。

要画出窄带高斯白噪声的功率谱,最主要的问题是求出它的自相关函数,然后通过维纳

—辛钦公式便可求出。而对于自相关函数的求解主要是得出窄带高斯信号,所以本文基于莱

斯表达式,求出它的窄带高斯信号。具体流程如图(1

sinwt

0

Nt

a

低通滤

波器

加法

高斯白噪声

Nt

b

低通滤

波器

窄带高斯随

机信号

coswt

0

(1)算法流图

二、问题的解决与算法分析

1、产生高斯白噪声

基于前一次大作业,我们知道产生白噪声的方法有线性同余法。

void gauss(float b[])

{

SYSTEMTIME sys;

GetLocalTime(&sys);

int ed;

float a[100];

ed=conds; //随机种子输入,产生范围为02^31-1

int i,j,w,k;

float x,y;

for(w=0;w<5000;w++)

for(k=0;k<20;k++) //5000*20个均匀分布的统计近似服从正态分布

{

x=0;y=0;

for(i=0;i<100;i++)

{

ed=16807*(ed%127773); //利用乘同余法产生其他随机数,100

if (ed<0)

ed += 2147483647; //处理溢出的情况

a[i]=ed/2147483647.0; //a即为0-1均匀分布数

}

for(j=20;j<32;j++)

{

x=a[j]+x; //取其中12的个数的和,方便计算

}

y=x-6; //产生标准正态分布随机数

for(j=0;j

{

if(-3+6.0/L1*jy)

b[j]=b[j]+1; //统计各个范围内随机数个数

}

}

int gdriver=DETECT,gmode,errorcode;

initgraph(&gdriver,&gmode,"");

initgraph(1000, 600);

int X0=100,Y0=500;

tcolor(RED);

for(i=0;i

{

moveto(X0+i/2,Y0);

lineto(X0+i/2,Y0-b[i]);

}

getch();

clograph();

}

2、低通滤波器的产生

对于低通滤波器的选取我们这里选取FIR(有限脉冲响应滤波器)滤波器。我们这里采用

窗化法的方法。对于窗化法我们首先要先确定截止频率,然后通过阻带最小衰减的分贝

w

d

值确定窗函数的类型,依据主瓣宽度小于过渡带宽度的指标,确定点数N然后求出M(位

移量)。最后确定窗函数。

窗函数的产生在数字信号处理的实验课中已经做过,所以此处相对比较简单。

代码:

//*************低通滤波器

int firlpf(float h[],float as,float wp,float ws,float fs)//h[]为滤波器,as wp ws 单位是Hz

{

float wd,bt;

int m,n,i;

wp=wp/fs*2*PI;

ws=ws/fs*2*PI;

wd=(wp+ws)/2;

bt=ws-wp;

if(as<21)//选择矩形窗

{

n=ceil(4*PI/bt);

3、高斯信号过低通滤波器

高斯信号过低通滤波器之后变成窄带高斯信号,但是是低频的。然后通过莱斯表达式

产生窄带高斯噪声(高频)----目标信号。

根据莱斯表达式的方式,我们将两个高斯信号通过低通滤波器后分别乘以正弦和余弦函

数,将信号搬移到高频区域。最后求出信号的自相关函数,对自相关函数做傅里叶变换得

出功率谱密度函数。

(1)利用公式可求出窄带高斯信号的自相关函数Rxm

1

R[m]xx

根据课本第180页自相关函数估计公式,,求出自相关函数后利

N

FFT可求出其功率谱密度函数;

代码:

for(m=0;m<L1+NN-1;m++) //求出自相关函数

{

for(i=0;i<L1+NN-1-m;i++)

{

r[m]=r[m]+N[i]*N[i+m];

}

r[m]=r[m]/(L1+NN-1);

}

N|m|1

i0

ii|m|

2)因为自相关函数Rxm)与功率谱密度函数Gxw)互为傅里叶变换对,所以可以利用

FFT求出功率谱密度函数;

fft(r,xi,1,L1+NN-1);//维纳—辛钦公式产生功率谱密度

//FFT的实现程序

void fft(float xr[],float xi[],int m,int n)

{

int loop1,loop2,loop3,le,le1,ip,i=1;

float wr,wi,tr,ur1,ur,ui,ls,ti;

ls=log((float)(n+1))/log(2.0);

ss(xr,xi,n);

for(loop1=1;loop1<=ls;loop1++)

{

ur=1.0;

ui=0.0;

le=pow(2.0,loop1);

le1=le/2;

wr=cos(PI*m/le1);

wi=-sin(PI*m/le1);

for(loop2=0;loop2

{

for(loop3=loop2;loop3

{

ip=loop3+le1;

tr=ur*xr[ip]-ui*xi[ip];

ti=ur*xi[ip]+ui*xr[ip];

xr[ip]=xr[loop3]-tr;

xi[ip]=xi[loop3]-ti;

xr[loop3]=tr+xr[loop3];

xi[loop3]=ti+xi[loop3];

}

ur1=wr*ur-ui*wi;

ui=wr*ui+ur*wi;

ur=ur1;

}

}

if(m==-1)

{

for(i=0;i

{

xr[i]=xr[i]/n;

xi[i]=xi[i]/n;

}

}

}

void ss(float xr[],float xi[],int n) //比特逆序

{

int i=0,j,s;

float a,bj;

for(j=1;j

{

for(s=n/2;s<=i;s=s/2)

{

i=i-s;

}

i=i+s;

if(i>j)

N2(t)的时域图

窄带高斯噪声的功率谱密度函数

结果分析:通过上面的图形我们可以看出我们产生的高斯白噪声与标准正态分布较为接

近,窗函数的时域和频域的图形都较为接近理论。如果想要进一步提高精度可以

1、增加高斯白噪声的准确度。

2、减小窗函数的过渡带。

3、若要提高分辨率,则提高fft点数。

三、心得体会

通过本次大作业,对知识点的理解,还有编程能力的提高都有很大帮助。比如对于随机

信号产生,高斯信号的产生,还有如何去处理时域与频域的关系,如何将这个问题转换到

另一个问题,通过这种联想的思想去解决生活中的问题。但是,从宏观角度来看,我最大

与时缠绵-什么是心理活动

窄带高斯白噪声

本文发布于:2023-11-02 22:59:08,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/169893714879673.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:窄带高斯白噪声.doc

本文 PDF 下载地址:窄带高斯白噪声.pdf

标签:窄带
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|