看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 想用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)
Risingforce:為何不用現成的code/library? 06/28 21:47
lovetone:有現成的C-code可以產生white noise嗎~~~? 06/29 11:44
charleshu:將Matlab 的 M檔編譯成DLL,再跟你的程式link起來就OK. 06/29 22:25