⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text1.txt

📁 c++产生高斯白噪声
💻 TXT
字号:
#include<stdio.h>
#include<math.h>
int main()
{
 //double sinwn(double a[1],double f[1],double ph[1],double fs,double snr,double seed,double x[],int n)
{ int  n;
  long int seed;
  double fs,snr,a,f,ph,x[200]; 
  double guass(double mean,double sigma,long int *s);
  int i,k;
  double  z,pi,nsr;
  //double fs,snr,x[200];
  a=1;
  f=5;
  ph=45;
  //FILE *fp;
  n=200;
  seed=13579l;
  fs=150;
  snr=1000.0;
  pi=4.0*atan(1.0);
  z=snr/10.0;
  z=pow(10.0,z);
  z=1.0/(2*z);
  nsr=sqrt(z);
 
  
  f=2*pi*f/fs;
  ph=ph*pi/180.0;
    
    for(k=0;k<n;k++)
    { 
       x[k]=0.0;
     
       x[k]=a*sin(k*f+ph)+nsr*guass(0.0,1.0,&seed);
    }
	/*for(i=0;i<n;i++)
	{
		cout<<"The result is"<<x[i]<<endl;
	}*/
	for(i=0;i<n;i++)//添加一组输出看看改动
	
    {return x[i];}
  }

}
/***********************************************************/
/*接着利用中心极限定理对服从(0.1)均匀分布的uniform()求和产 */
/*生一个高斯白噪声信号 guass()子函数                       */
/***********************************************************/
double guass(double mean,double sigma,long int *s)
{
   int i;
   double x,y;
   double uniform(double a, double b,long int *seed);
   for(x=0,i=0;i<12;i++)
     x+=uniform(0.0,1.0,s);
     x=x-6;
     y=mean+x*sigma;
    return(y);
   }
/****************************************************/
/*最里层函数产生一个均匀分布的随机信号子函数uniform */
/****************************************************/
double 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);
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -