我是靠谱客的博主 微笑火龙果,最近开发中收集的这篇文章主要介绍《C》C语言实现“非均匀分布白噪声—Gaussian Distribution”,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

非均匀分布白噪声——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π σ1e2σ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”所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部