⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chaos_analyser.c

📁 混沌分析工具
💻 C
📖 第 1 页 / 共 5 页
字号:
  mut_info();  mut_paint_proc((Canvas)NULL,window2,        dpy,        canvas_win_mut, (Xv_xrectlist *) NULL); }voidmut_paint_proc(canvas_mut,window, dpy, xwin, xrects)Canvas        canvas_mut;           /* Ignored */Xv_Window    window;Display      *dpy;Window        xwin;Xv_xrectlist *xrects;           /* Ignored */{ int i,j,start,length; double MAX_delay,min_delay,MAX_mut,min_mut,ymult,xmult; char msg[50]; XFontStruct *font; font=XLoadQueryFont(dpy, "fixed"); MAX_delay=mut_delay[MUT_NUM]; min_delay=mut_delay[1]; MAX_mut=mut[1]; min_mut=mut[MUT_NUM]; xmult=200/(MAX_delay-min_delay); ymult=200/(MAX_mut-min_mut); XSetForeground(dpy, gc, pixel_table[BLACK]);    XClearWindow(dpy, xwin); XRotDrawString(dpy, font, 90. , xwin, gc, 15,180, "Mutual Information"); XRotDrawString(dpy, font, 0. , xwin, gc, 100,290, "Delay (samples)");  XDrawLine(dpy,xwin,gc,40,260,290,260); XDrawLine(dpy,xwin,gc,40,260,40,10); XDrawLine(dpy,xwin,gc,43,20,37,20); XDrawLine(dpy,xwin,gc,43,220,37,220); XDrawLine(dpy,xwin,gc,60,257,60,263);  XDrawLine(dpy,xwin,gc,260,257,260,263);  sprintf(msg,"%3.0lf",min_delay); XDrawString(dpy,xwin,gc,50,280,msg,strlen(msg)); sprintf(msg,"%3.0lf",MAX_delay); XDrawString(dpy,xwin,gc,250,280,msg,strlen(msg));  sprintf(msg,"%3.1lf",MAX_mut); XDrawString(dpy,xwin,gc,10,25,msg,strlen(msg)); sprintf(msg,"%3.1lf",min_mut); XDrawString(dpy,xwin,gc,10,225,msg,strlen(msg)); for (j=1;j<MUT_NUM;j++){   XDrawLine(dpy,xwin,gc,60+(mut_delay[j]-min_delay)*xmult,220-(mut[j]-min_mut)*ymult,60+(mut_delay[j+1]-min_delay)*xmult,220-(mut[j+1]-min_mut)*ymult); }}voidprint_mut(filename)     char filename[100];{ int i,j,start,length,p,interval; double MAX_delay,min_delay,MAX_mut,min_mut,ymult,xmult; char msg[100],fig_file[100]; FILE *optr; MAX_delay=mut_delay[LSVD_NUM]; min_delay=mut_delay[1]; MAX_mut=mut[1]; min_mut=mut[MUT_NUM];  xmult=4000/(MAX_delay-min_delay); ymult=4000/(MAX_mut-min_mut); sprintf(fig_file,"%s.gnu_setup",filename); optr = fopen(fig_file,"w"); fprintf(optr,"set xlabel \"Delay\"\n"); fprintf(optr,"set ylabel \"Mutual Information\"\n"); fprintf(optr,"set term post port 24\n"); fprintf(optr,"set output \"%s.ps\"\n",filename); fprintf(optr,"plot \"%s.gnu_data\" notitle w l\n",filename); fprintf(optr,"set term x11\n"); fclose(optr); sprintf(fig_file,"%s.gnu_data",filename); optr = fopen(fig_file,"w");  for (j=1;j<=MUT_NUM;j++){     fprintf(optr,"%lf %lf\n",mut_delay[j],mut[j]);   } fprintf(optr,"\n"); fclose(optr); sprintf(msg,"gnuplot < %s.gnu_setup",filename); system(msg); sprintf(msg,"rm %s.gnu_setup\n rm %s.gnu_data",filename,filename); system(msg);}/******************************************************************           Lyapunov Exponents********************************************************************/lya_accept(item,value)     Panel_item item;     int        value;{  Xv_Window window=canvas_paint_window(canvas_lya);  if (LYA_STOP==1){    LYA_STOP*=-1;    notify_stop();    xv_set(LYA_START_STOP,PANEL_LABEL_STRING,"stop",NULL);    lya_setup_proc((Canvas)NULL,window,		   dpy,		   canvas_win_lya, (Xv_xrectlist *) NULL);  }  else {    LYA_STOP*=-1;    xv_set(LYA_START_STOP,PANEL_LABEL_STRING,"start",NULL);  }}lya_print(item,value)     Panel_item item;     int        value;{  xv_set(print_frame,XV_SHOW,TRUE,NULL);    PRINT='l';}lya_zoom_inx(item,event)     Panel_item item;     Event      *event;{   Xv_Window window=canvas_paint_window(canvas_lya);  LYA_XSCALE*=1.25;   lya_setup_proc((Canvas)NULL,window,		     dpy,		     canvas_win_lya, (Xv_xrectlist *) NULL); }lya_zoom_outx(item,event)     Panel_item item;     Event      *event;{  Xv_Window window=canvas_paint_window(canvas_lya);  LYA_XSCALE*=1/1.25;lya_setup_proc((Canvas)NULL,window,		     dpy,		     canvas_win_lya, (Xv_xrectlist *) NULL); }lya_zoom_iny(item,event)     Panel_item item;     Event      *event;{  Xv_Window window=canvas_paint_window(canvas_lya);  LYA_YSCALE*=1.25;  lya_setup_proc((Canvas)NULL,window,		     dpy,		     canvas_win_lya, (Xv_xrectlist *) NULL); }lya_zoom_outy(item,event)     Panel_item item;     Event      *event;{  Xv_Window window=canvas_paint_window(canvas_lya);  LYA_YSCALE*=1/1.25;  lya_setup_proc((Canvas)NULL,window,		     dpy,		     canvas_win_lya, (Xv_xrectlist *) NULL); }voidlya_on_off(item,value)     Panel_item item;     int value;{  if (value==1)    xv_set(lya_frame,XV_SHOW,FALSE,NULL);  else{    xv_set(lya_frame,XV_SHOW,TRUE,NULL);   }}voidadjust_globdim(item,value)     Panel_item item;     int value;{   GLOBAL_DIM=value;}voidadjust_locdim(item,value)     Panel_item item;     int value;{   LOC_DIM=value;}voidadjust_reinit(item,value)     Panel_item item;     int value;{   REINIT=value;}  voidadjust_evolve(item,value)     Panel_item item;     int value;{   EVOLVE=value;}  voidadjust_B(item,value)     Panel_item item;     int value;{   B_VECT=value;} voidadjust_average(item,value)     Panel_item item;     int value;{   B_AVE=value;}lya_embed_choice(item,value)     Panel_item item;     int value;{  if (value==0){    EMBED='t';    xv_set(SVD_M_SLIDER,PANEL_LABEL_STRING,"Time Delay",NULL);    xv_set(SVD_ONOFF,PANEL_VALUE,1,NULL);    xv_set(SVD_M_SLIDER,PANEL_VALUE,M,NULL);    xv_set(M_SLIDER,PANEL_VALUE,M,NULL);    xv_set(M_SLIDER,PANEL_LABEL_STRING,"Time Delay",NULL);  }  else{    EMBED='s';    xv_set(SVD_M_SLIDER,PANEL_LABEL_STRING,"SVD window",NULL);    xv_set(SVD_ONOFF,PANEL_VALUE,0,NULL);    xv_set(SVD_M_SLIDER,PANEL_VALUE,SVD_COLS,NULL);    xv_set(M_SLIDER,PANEL_VALUE,SVD_COLS,NULL);    xv_set(M_SLIDER,PANEL_LABEL_STRING,"SVD window",NULL);  }}lya_embed(item,value)     Panel_item item;     int        value;{  int i,j;  Xv_Window window=canvas_paint_window(canvas);  MAX_VAL=0;  if (EMBED=='t'){    readfile(FILENAME,GLOBAL_DIM,&NO_POINTS,M,&MAX_VAL,DATA,0);  }  else{    svdred(DATA,GLOBAL_DIM,FILENAME,&NO_POINTS,SVD_COLS);    for (i=1;i<=NO_POINTS;i++)       for (j=1;j<=GLOBAL_DIM;j++){	 if (fabs(DATA[i][j])>MAX_VAL)	   MAX_VAL=fabs(DATA[i][j]);       }  }  SIZE=2.5* MULT/MAX_VAL;  TSIZE=45/MAX_VAL;    redraw_proc((Canvas)NULL,window,        dpy,        canvas_win, (Xv_xrectlist *) NULL); }voidsvd_m_window(item,value)     Panel_item item;     int value;{  if (EMBED=='t'){    M=value;    xv_set(M_SLIDER,PANEL_VALUE,value,NULL);  }  else{    SVD_COLS=value;    xv_set(M_SLIDER,PANEL_VALUE,value,NULL);  }}voidadjust_tau(item,event)     Panel_item item;     Event *event;{  char *test[50],str[50];   strcpy(str,(char *)xv_get(item,PANEL_VALUE));  TAU=strtod(str,test);}voidlya_drawline(item,event)     Panel_item item;     Event *event;{  char *test[50],str[50];  double yvalue;   XSetLineAttributes(dpy,gc,1,LineOnOffDash,CapRound,JoinRound);     strcpy(str,(char *)xv_get(item,PANEL_VALUE));  yvalue=strtod(str,test);  if ((yvalue*LYA_YSCALE<LYA_ZERO-20) && (yvalue*LYA_YSCALE>LYA_ZERO-360)){    XDrawLine(dpy,canvas_win_lya,gc,60,(LYA_ZERO-yvalue*LYA_YSCALE),360,(LYA_ZERO-yvalue*LYA_YSCALE));    XSetLineAttributes(dpy,gc,1,LineSolid,CapRound,JoinRound);    XDrawString(dpy,canvas_win_lya,gc,370,((LYA_ZERO+5)-yvalue*LYA_YSCALE),str,strlen(str));  }}voidlya_setup_proc(canvas_lya,window, dpy, xwin, xrects)Canvas        canvas_lya;           /* Ignored */Xv_Window    window;Display      *dpy;Window        xwin;Xv_xrectlist *xrects;           /* Ignored */{  char msg[50];  int i,j;  XFontStruct *font;  font=XLoadQueryFont(dpy, "fixed");    XClearWindow(dpy, xwin);  XSetForeground(dpy, gc, pixel_table[BLACK]);   XDrawLine(dpy,xwin,gc,60,360,360,360);  XDrawLine(dpy,xwin,gc,60,360,60,20);  XDrawLine(dpy,xwin,gc,60,LYA_ZERO,360,LYA_ZERO);  XDrawLine(dpy,xwin,gc,63,20,57,20);  XDrawLine(dpy,xwin,gc,63,360,57,360);  XDrawLine(dpy,xwin,gc,360,357,360,363);    XRotDrawString(dpy, font, 90. , xwin, gc, 15,225, "Lyapunov Exponents");  XRotDrawString(dpy, font, 0. , xwin, gc, 170,380, "Evolve Steps");   sprintf(msg,"%3.0lf",(300/LYA_XSCALE));  XDrawString(dpy,xwin,gc,345,375,msg,strlen(msg));  sprintf(msg,"%3.0lf",0);  XDrawString(dpy,xwin,gc,50,375,msg,strlen(msg));  sprintf(msg,"%3.2lf",((LYA_ZERO-20)/LYA_YSCALE));  XDrawString(dpy,xwin,gc,20,25,msg,strlen(msg));  sprintf(msg,"%3.2lf",0);  XDrawString(dpy,xwin,gc,20,LYA_ZERO+5,msg,strlen(msg));  sprintf(msg,"%3.2lf",((LYA_ZERO-360)/LYA_YSCALE));  XDrawString(dpy,xwin,gc,13,365,msg,strlen(msg));  for (i=1;i<=LOC_DIM;i++)     for (j=10;j<=EV_POS;j++){       if  (j*LYA_XSCALE<300)	 XDrawLine(dpy,xwin,gc,60+(j-1)*LYA_XSCALE,LYA_ZERO-(LYA_EXP[j-1][i]*LYA_YSCALE/(j-1)),60+j*LYA_XSCALE,LYA_ZERO-(LYA_EXP[j][i]*LYA_YSCALE/j));     }}voidlya_event_proc(window, event)     Xv_Window window;     Event    *event;{  int width,height; Xv_Window window2=canvas_paint_window(canvas_lya);  if (event_is_ascii(event));  else    switch (event_action(event)){    case ACTION_SELECT:    case MS_LEFT:      X_SET=event_x(event);      Y_SET=event_y(event);      break;    default:      return;    }    width=0.01 *event_x(event);  LYA_ZERO= event_y(event);  lya_setup_proc((Canvas)NULL,window2,		     dpy,		     canvas_win_lya, (Xv_xrectlist *) NULL); }voidlya_paint_proc(canvas_lya,window, dpy, xwin, xrects)Canvas        canvas_lya;           /* Ignored */Xv_Window    window;Display      *dpy;Window        xwin;Xv_xrectlist *xrects;           /* Ignored */{  int i,j;  double x,y,x_last,y_last;     XSetForeground(dpy, gc, pixel_table[BLACK]);    for (i=1;i<=LOC_DIM;i++){    if  (EV_POS*LYA_XSCALE<300)      XDrawLine(dpy,xwin,gc,60+(EV_POS-1)*LYA_XSCALE,LYA_ZERO-(LYA_EXP[EV_POS-1][i]*LYA_YSCALE/(EV_POS-1)),60+EV_POS*LYA_XSCALE,LYA_ZERO-(LYA_EXP[EV_POS][i]*LYA_YSCALE/EV_POS));  }    }/********************************************************************            General procedures********************************************************************/voidsave_to_file(outfile,save_canvas,save_canvas_win)     char *outfile;     Canvas save_canvas;     Window save_canvas_win;     {  XImage *xi;  char command[50],pgm_outfile[50];  unsigned char pixvalue;  int i,j,leave=0;  unsigned int width,height;  FILE   *optr;  height=xv_get(save_canvas,XV_HEIGHT)-2;  width=xv_get(save_canvas,XV_WIDTH)-2;  sprintf(pgm_outfile,"%s.pgm",outfile);  optr = fopen(pgm_outfile,"wb");   if (optr == (FILE *)NULL) {     xv_set(mes_frame,XV_SHOW,TRUE,NULL);      leave=1;  }  if (leave==0){    sprintf(command,"pnmcrop %s |pnmtops -noturn > %s",pgm_outfile,outfile);    fprintf(optr,"P1\n%d %d\n",width,height);        xi = XGetImage(dpy,save_canvas_win,0,0,width,height,AllPlanes,XYPixmap);    for (i=0;i<height;i++)      for (j=0;j<width;j++)	fputc('0'+XGetPixel(xi,j,i),optr);        fclose(optr);    system(command);    sprintf(command,"rm %s",pgm_outfile);    system(command);  }}voidmain_print(item,value)     Panel_item item;     int        value;{  xv_set(print_frame,XV_SHOW,TRUE,NULL);    PRINT='m';}voidshow_axes(item,value)     Panel_item item;     int value;{  Xv_Window window=canvas_paint_window(canvas);  AXES*=-1;  if (AXES==1)    xv_set(AXES_ON_OFF,PANEL_LABEL_STRING,"Axes off",NULL);  else     xv_set(AXES_ON_OFF,PANEL_LABEL_STRING,"Axes on",NULL);  redraw_proc((Canvas)NULL,window,        dpy,        canvas_win, (Xv_xrectlist *) NULL);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -