小白博主开始学 DSP 之路, 为了激励自己能坚持下去, 写一系列博客来记录下来, 也欢迎与大家一起讨论. 介于我能力所限, 这里学习目标定为, 学习一个基础知识, 写一个 C 语言程序实现,
最后会形成一个 C 的函数库, 方便调用. 对于学习的知识内容, 不会面面覆盖, 一般只学习一种实现方法, 较少涉及复杂数学理论的证明, 但保证有理论可以证明, 可以查阅数学相关知识自寻证明.
对于所有的 C 程序, 我会调通, 供大家参考讨论, 完整程序我放到 github 上, 文章中会给出关键代码, 程序只使用 C 语言, 因为涉及数学与实现过程, C 虽然繁琐, 但是易于理解.
这里从数字信号的产生做为出发点, 欢迎大家关注, 一起学习!
这是第一篇博客, 介绍均匀分布的随机数的产生和正态分布随机数的产生.
一, 均匀分布随机数产生方法简介
- // 混合同余法, 产生 (a,b) 区间的均匀分布随机数
- //a: 区间下界 b: 区间上界 *seed: 随机数种子
- 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;
- }
二, 正态分布随机数产生方法简介
- // 产生均值 mean 方差 sigma 的高斯分布随机数
- #include"uniform.h"
- double gauss(double mean,double sigma,long int* seed)
- {
- int i;
- double x,y;
- for(x=0,i=0;i<12;i++)
- x = x + uniform(0.0,1.0,seed);
- x = x - 6.0;
- y = mean + x * sigma;
- return y;
- }
完整代码参考: https://github.com/HeYingnan/dsp
来源: https://www.cnblogs.com/ziphe-from-teacher-chen/p/9227000.html