常用数字信号的产生(C实现)-均匀分布&正态分布

小白博主开始学DSP之路,为了激励自己能坚持下去,写一系列博客来记录下来,也欢迎与大家一起讨论。介于我能力所限,这里学习目标定为,学习一个基础知识,写一个C语言程序实现,

最后会形成一个C的函数库,方便调用。对于学习的知识内容,不会面面覆盖,一般只学习一种实现方法,较少涉及复杂数学理论的证明,但保证有理论可以证明,可以查阅数学相关知识自寻证明。

对于所有的C程序,我会调通,供大家参考讨论,完整程序我放到github上,文章中会给出关键代码,程序只使用C语言,因为涉及数学与实现过程,C虽然繁琐,但是易于理解。

这里从数字信号的产生做为出发点,欢迎大家关注,一起学习!

这是第一篇博客,介绍均匀分布的随机数的产生和正态分布随机数的产生。

一、均匀分布随机数产生方法简介

       

 1 //混合同余法,产生(a,b)区间的均匀分布随机数
 2 //a:区间下界    b:区间上界        *seed:随机数种子
 3 double uniform(double a,double b,long int* seed)
 4 {
 5     double t;
 6     *seed = 2045 * (*seed) + 1;
 7     *seed = *seed - (*seed/1048576)*1048576;
 8     t = (*seed)/1048576.0;
 9     t = a + (b - a) * t;
10     return t;
11 }

二、正态分布随机数产生方法简介

            

 1 //产生均值mean方差sigma的高斯分布随机数
 2 #include"uniform.h"
 3 double gauss(double mean,double sigma,long int* seed)
 4 {
 5     int i;
 6     double x,y;
 7 
 8     for(x=0,i=0;i<12;i++)
 9         x = x + uniform(0.0,1.0,seed);
10     x = x - 6.0;
11     y = mean + x * sigma;
12     return y;
13 }

完整代码参考:https://github.com/HeYingnan/dsp

 

         

转载于:https://www.cnblogs.com/ziphe-from-teacher-chen/p/9227000.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值