常用數字信號的產生(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

 

         


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM