小白博主開始學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