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

📄 alpha.cpp

📁 基于C语言的Alpha稳定分布随机信号的产生方法。独一无二的源程序。
💻 CPP
字号:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <iomanip.h>
#include <iostream.h>
#include <fstream.h>
#include <time.h>
#define Pi 3.1415926
//double tan(double x) 返回x的正切tan(x)值,x为弧度
//double atan(double x) 返回x的反正切tan-1(x)值,x为弧度
//double fabs(double x) 返回双精度参数x的绝对值
//函数1
double Ka(double a)
{
return 1-fabs(1-a);
}
//函数2
double Bata(double a,double b)
{
double c;
 if (a==1)
	 c=b;
 else
	 c=2*(atan(b/(tan(Pi*(1-a)/2)))/(Pi*Ka(a)));
 return c;
}
//指数分布
double exp(double miu)
 {float x,y,drand();
  x=drand();
  y=-miu*(log(1-x));
  return(y);}
//生成服从U(0,1)分布的随机数
float drand()
{float x;
 int i;
 for(i=0;i<20;i++) rand();
 x=rand();
 x=65539*x+1743251541;
 x=fmod(x,2147483638);
 return(x/2147483638);}
//
void main()
{FILE *f1;
    if((f1=fopen("DL1.txt","w"))==NULL)
	{
	  printf("cannot open file\n");
      exit(0);
	}
int i,j,k=1000,s=10;
double a,p,e,t,Q0;
double u[1000],b[1000],B[1000],z[1000],d[1000],x[1000];
double V[1000],W[1000];
double x1,x2;
a=0.999999999;p=0;//---------------------------------------------------------setting
Q0=-0.5*Pi*Bata(a,p)*(Ka(a)/a);
e=1-a;
t=-e*tan(a*Q0);
srand(time(NULL));//初始化???
for(i=0;i<k;i++)
{
x1=(double)rand()/RAND_MAX;
V[i]=(-Pi/2)+(Pi*x1);//产生U(-Pi/2,Pi/2)
W[i]=exp(s);//均值为10的指数分布?
}
for(j=0;j<k;j++)
{
u[j]=tan(0.5*V[j]);
b[j]=tan(0.5*e*V[j]);
B[j]=b[j]/(0.5*e*V[j]);
z[j]=(cos(e*V[j])-(tan(a*Q0))*sin(e*V[j]))/(W[j]*cos(V[j]));
d[j]=(pow(z[j],(e/a))-1)/e;

x[j]=((2*(u[j]-b[j])*(1+u[j]*b[j])-Q0*t*B[j]*(b[j]*(1-u[j]*u[j])-2*u[j]))/((1-u[j]*u[j])*(1+b[j]*b[j])))*(1+e*d[j])+t*d[j];

printf("%lf\n",x[j]);
fprintf(f1,"%lf\n",x[j]);
}


}

⌨️ 快捷键说明

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