概述
非均匀分布白噪声——Gaussian Distribution
1. 方法说明
高斯分布(正态分布)概率密度函数: f ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 f(x)=frac{1}{sqrt{2pi}sigma}e^{-frac{(x-mu)^2}{2sigma^2}} f(x)=2πσ1e−2σ2(x−μ)2
2. 函数语句与形参说明
double Normal(double mu,double sigma,double x)
形参与函数类型 | 参数意义 |
---|---|
double mu | 正态分布的均值 |
double sigma | 正态分布的方差 σ 2 = g 2 sigma^2=g^2 σ2=g2 |
double x | 自变量 |
double Normal() | 过程 |
源程序【Grns.c】
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.1415926
double Normal(double mu,double sigma,double x) //形参mu为正态分布均值,sigma为正态分布方差,x为所取的自变量
{
double result; //结果变量
result=exp((-1)*(x-mu)*(x-mu)/(2*sigma*sigma))/(sqrt(2*PI)*sigma);
return result;
}
main(int argc, char *argv[])
{
if(argc<2) //输出提示信息,提示如何使用
{
printf("nProduce data of Gaussian 2018 ygaairspace Copyright(C)n");
printf("Usage: Grns index1(mu) index2(sigma) index3(initial value) index4(single squence dots[initial:0])");//第一个参数为所设均值,第二个参数为所设方差,第三个参数为所设自变量初始值,第四个参数为所设自变量的点数
printf("nExample: Grns 0 1 -1 10n");
return 0;
}
int i,j,L;
double mu,sigma,period;
mu=atoi(argv[1]); //将命令行参数赋值给相应的变量
sigma=atoi(argv[2]);
period=atoi(argv[3]);
L=atoi(argv[4]);
for(i=0;i<=L;i++)
{
printf("%ft%lfn",period,Normal(mu,sigma,period));
period += 0.1;
}
}
3. 正态分布实例
产生均值为0,方差为1的高斯分布。
4. 作图
绘图指令:
set xlabel "N"
set ylabel "Gaussian result"
plot "<Grns 0 1 -1.0 20" w l title "N~(0,1)"
绘图演示:
5. 结果验证
通过matlab作图来验证此程序是否正确。
1. 同样通过matlab产生均值为0,方差为1的高斯分布。
matlab程序:【Gussian.mat】
x=-1:.1:1
N=normpdf(x,0,1)
plot(x,N)
xlabel 'N'
ylabel 'Gaussian result'
grid on
运行结果:
2. 图形对比。
C语言作的图:
matlab作的图:
- 结论:对比两图,结果一致
最后
以上就是微笑火龙果为你收集整理的《C》C语言实现“非均匀分布白噪声—Gaussian Distribution”的全部内容,希望文章能够帮你解决《C》C语言实现“非均匀分布白噪声—Gaussian Distribution”所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复