[問題] white noise

看板C_and_CPP (C/C++)作者 (~黑妞~)時間15年前 (2010/06/28 16:19), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串1/2 (看更多)
遇到的問題: (題意請描述清楚) 想用VC6產生white noise和matlab/simulink內建的方塊(Band-Limited White Noise) 一樣的訊號,但是不知道是查到的white noise公式錯還是,還是code錯, 不過感覺應該不是code錯,有去matlab版,本版,google爬文但是沒有找到方法 因為想用VC++來產生,所以來本版請教。 希望得到的正確結果: 預計想和matlab/simulink內建的方塊(Band-Limited White Noise)一樣的訊號 程式跑出來的錯誤結果: 我是根據一本書" 張靜,MATLAB在控制系統中的應用,電子工業出版社,2007 "裡所寫的 來產生white noise公式如下 u = 11/(2^35)-->初始值 0 u = 取小數(179*u ),i=1、2、3... i i-1 不過結果和matlab/simulink內建的方塊(Band-Limited White Noise)相似,但不太一樣 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VC++ 有問題的code: (請善用置底文標色功能) 以下是我寫的code #include <stdio.h> #include <math.h> #include <stdlib.h> double ts=0.005; double tf=10; double n=tf/ts; /*for saving data*/ #define size 2000 double u_white[size]; double time[size]; void data(void); void main() { int i; double t; double uw; double uw1=11/pow(2,35); /*signal generator*/ for(i=1;i<=(int)n;i++) { t=i*ts; time[i]=(i-1)*ts; /*white random*/ uw=179*(uw1-floor(uw1)); uw1=uw; u_white[i]=uw; } data(); } /*data-saving*/ void data(void) { int i; FILE *fptr; fptr=fopen("white.txt","w"); if(fptr!=NULL) { for(i=1;i<=(int)n;i++) { fprintf(fptr,"%f\t%f\n",time[i],u_white[i]); } } else { printf("fail\n"); } fclose(fptr); printf("write finished\n"); } 補充說明: -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.171.118.18 ※ 編輯: lovetone 來自: 118.171.118.18 (06/28 16:20) ※ 編輯: lovetone 來自: 118.171.118.18 (06/28 16:21) ※ 編輯: lovetone 來自: 118.171.118.18 (06/28 17:06)

06/28 21:47, , 1F
為何不用現成的code/library?
06/28 21:47, 1F

06/29 11:44, , 2F
有現成的C-code可以產生white noise嗎~~~?
06/29 11:44, 2F

06/29 22:25, , 3F
將Matlab 的 M檔編譯成DLL,再跟你的程式link起來就OK.
06/29 22:25, 3F
文章代碼(AID): #1CA5ik19 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1CA5ik19 (C_and_CPP)