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

📄 chaos_analyser.c

📁 混沌分析工具
💻 C
📖 第 1 页 / 共 5 页
字号:
    xv_set(LYA_EMBEDDING,PANEL_VALUE,0,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(LYA_EMBEDDING,PANEL_VALUE,1,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",NULL);  }}/*************************************************************************                 Multi Column input		 **************************************************************************/void readredfile(filename,dataarray,window,num_of_points)     char   *filename;     double  **dataarray;     int    window,num_of_points;{  double databit;  FILE *ioptr;  int i,l;  ioptr = fopen(filename,"r");  if (ioptr == (FILE *)NULL) {    printf("\nCannot open file !");    exit(1);  }   for (i=1;i<=num_of_points;i++){    for (l=0;l< window;l++){      if (read_double(ioptr,&databit)==1)	printf("\n.. break in the data !!!");      dataarray[i][l+1]=databit;    }  }  printf("\nFinished reading data ... ");  fclose(ioptr);} /**********************************************************************                 File input procedures***********************************************************************/void readfile(filename,window,num_of_points,m,MAX_VAL,data_array,skip)     char   *filename;      int    window,*num_of_points,m,skip;     double *MAX_VAL,**data_array;{  double databit,buffer[100];  FILE *ioptr;  int i,l,j,check,sect=1,leave=0;  char data[256],space;  ioptr = fopen(filename,"r");   if (ioptr == (FILE *)NULL) {     xv_set(mes_frame,XV_SHOW,TRUE,NULL);      leave=1;  }   if (leave==0){    i=0;    while (read_double(ioptr,&databit)==0 && i<=skip)      i++;    for(l=1;l<=m* window;l++){      read_double(ioptr,&databit);      buffer[l]=databit;    }    i=0;    while (read_double(ioptr,&databit)==0 && i<=*num_of_points){      i++;      for (l=0;l< window;l++)	data_array[i][l+1]=buffer[l* m +1];      for (l=1;l<=m* window -1;l++)	buffer[l]=buffer[l+1];      buffer[m* window]=databit;    if (databit<0) databit*=-1;      if (*MAX_VAL < databit)	*MAX_VAL=databit;    }    *num_of_points=i-1;    fclose(ioptr);  }}voidnewfile(){  int num_points=NO_POINTS,skip1,skip2,i,j;  char filein[50];  Xv_Window window1=canvas_paint_window(canvas);  MAX_VAL=0;    COUNTER=1;  sprintf(filein,"%s",FILENAME);    if (EMBED=='s'){     svdred(DATA,GLOBAL_DIM,filein,&num_points,SVD_COLS);     for (i=1;i<=num_points;i++)       for (j=1;j<=GLOBAL_DIM;j++){	 if (fabs(DATA[i][j])>MAX_VAL)	   MAX_VAL=fabs(DATA[i][j]);       }   }  else     readfile(filein,GLOBAL_DIM,&num_points,M,&MAX_VAL,DATA,0);		      NO_POINTS=num_points;  xv_set(NUM_POINTS,PANEL_VALUE,num_points,NULL);   SIZE=2.5* MULT/MAX_VAL;  TSIZE=45/MAX_VAL;  redraw_proc((Canvas)NULL,window1,		dpy,	       canvas_win, (Xv_xrectlist *) NULL);}voidget_name(item,event)    Panel_item item;     Event *event;{  strcpy(FILENAME,(char *)xv_get(item,PANEL_VALUE));     newfile();}/*********************************************************************               Error messages*********************************************************************/voidmessage_off(item,value)     Panel_item item;     int value;{   xv_set(mes_frame,XV_SHOW,FALSE,NULL);}/*********************************************************************               Print messages*********************************************************************/voidget_print_name(item,event)    Panel_item item;     Event *event;{  strcpy(PRINT_NAME,(char *)xv_get(item,PANEL_VALUE));  xv_set(PRINT_MESSAGE,PANEL_LABEL_STRING,"Printing ....",NULL);  if (PRINT=='l'){    save_to_file(PRINT_NAME,canvas_lya,canvas_win_lya);  }  if (PRINT=='m'){    print_attr(PRINT_NAME);  }  if (PRINT=='s'){    print_lsvd(PRINT_NAME);  }   if (PRINT=='i'){    print_mut(PRINT_NAME);  }  xv_set(PRINT_MESSAGE,PANEL_LABEL_STRING,NULL,NULL);    xv_set(print_frame,XV_SHOW,FALSE,NULL);}/********************************************************************            Time Domain********************************************************************/voidtdomain_on_off(item,value)     Panel_item item;     int value;{  Xv_Window window2=canvas_paint_window(canvas_time);   if (value==1)    xv_set(time_frame,XV_SHOW,FALSE,NULL);  else     xv_set(time_frame,XV_SHOW,TRUE,NULL);  time_paint_proc((Canvas)NULL,window2,        dpy,        canvas_win_time, (Xv_xrectlist *) NULL);  }voidzoom_out(item,value)     Panel_item item;     int value;{   Xv_Window window2=canvas_paint_window(canvas_time);   TMULT*=0.8;  time_paint_proc((Canvas)NULL,window2,        dpy,        canvas_win_time, (Xv_xrectlist *) NULL); }voidzoom_in(item,value)     Panel_item item;     int value;{  Xv_Window window2=canvas_paint_window(canvas_time);  TMULT*=1.25; time_paint_proc((Canvas)NULL,window2,        dpy,        canvas_win_time, (Xv_xrectlist *) NULL); }voidtime_paint_proc(canvas_time,window, dpy, xwin, xrects)Canvas        canvas_time;           /* Ignored */Xv_Window    window;Display      *dpy;Window        xwin;Xv_xrectlist *xrects;           /* Ignored */{ char msg[50];  GC gc2; int i,j,start,length;  gc2 = DefaultGC(dpy,DefaultScreen(dpy)); length=250/TMULT - LENGTH/2; XClearWindow(dpy, xwin); XSetForeground(dpy, gc, pixel_table[BLACK]); sprintf(msg,"%3.0lf",MAX_VAL); XDrawString(dpy,xwin,gc,5,10,msg,strlen(msg)); sprintf(msg,"%3.0lf",-MAX_VAL); XDrawString(dpy,xwin,gc,1,95,msg,strlen(msg)); sprintf(msg,"0",-MAX_VAL); XDrawString(dpy,xwin,gc,5,50,msg,strlen(msg)); XDrawLine(dpy,xwin,gc2,50,5,50,95); XDrawLine(dpy,xwin,gc2,55,5,45,5); XDrawLine(dpy,xwin,gc2,55,95,45,95); XDrawLine(dpy,xwin,gc2,55,50,45,50); j=0; if ((start=COUNTER-length)<0) start=0; XSetForeground(dpy, gc2, pixel_table[GREY]);   for (i=start;i<=COUNTER;i++){   j++;   XDrawLine(dpy,xwin,gc2,j*TMULT+50,50-TSIZE*DATA[i][1],(j+1)*TMULT+50,50-TSIZE*DATA[i+1][1]); }  XSetForeground(dpy, gc2, pixel_table[BLACK]); for (i=COUNTER;i<=COUNTER+LENGTH;i++){   j++;   XDrawLine(dpy,xwin,gc2,j*TMULT+50,50-TSIZE*DATA[i][1],(j+1)*TMULT+50,50-TSIZE*DATA[i+1][1]); }  XSetForeground(dpy, gc2, pixel_table[GREY]);   for (i=COUNTER+LENGTH;i<=COUNTER+LENGTH+length;i++){   j++;   XDrawLine(dpy,xwin,gc2,j*TMULT+50,50-TSIZE*DATA[i][1],(j+1)*TMULT+50,50-TSIZE*DATA[i+1][1]); }}/********************************************************************            Poincare section procedures********************************************************************/voidadjust_p_size(item,value)     Panel_item item;     int value;{  Xv_Window window=canvas_paint_window(canvas);  MULT=value;  P_SIZE=1.5* value/MAX_VAL;  redraw_proc((Canvas)NULL,window,        dpy,        canvas_win, (Xv_xrectlist *) NULL);}voidpoin_on_off(item,value)     Panel_item item;     int value;{  Xv_Window window=canvas_paint_window(canvas_poin);  if (value==1)    xv_set(poin_frame,XV_SHOW,FALSE,NULL);  else{    xv_set(poin_frame,XV_SHOW,TRUE,NULL);   }  poin_paint_proc((Canvas)NULL,window,        dpy,        canvas_win_poin, (Xv_xrectlist *) NULL);}voidpoin_paint_proc(canvas_poin,window, dpy, xwin, xrects)Canvas        canvas_poin;           /* Ignored */Xv_Window    window;Display      *dpy;Window        xwin;Xv_xrectlist *xrects;           /* Ignored */{  int i,start;  double x,y,x_last,y_last;  char pos_msg[128];    XClearWindow(dpy, xwin);  XSetForeground(dpy, gc, pixel_table[BLACK]);   P_SIZE=1.5* MULT/MAX_VAL;   for (i=2;i<NO_POINTS;i++){    if (T1*DATA[i-1][1]+T2*DATA[i-1][2]+T3*DATA[i-1][3] <(250-X_SET)/SIZE && T1*DATA[i][1]+T2*DATA[i][2]+T3*DATA[i][3]>(250-X_SET)/SIZE){      x=T4*DATA[i][1]+T5*DATA[i][2]+T6*DATA[i][3];      y=T7*DATA[i][1]+T8*DATA[i][2]+T9*DATA[i][3];      XDrawPoint(dpy,xwin,gc,X_SET_P+x*P_SIZE,Y_SET_P-y*P_SIZE);    }  }}/********************************************************************          Mutual Information*********************************************************************/voidmut_print(item,value)     Panel_item item;     int        value;{  xv_set(print_frame,XV_SHOW,TRUE,NULL);    PRINT='i';}voidmut_on_off(item,value)     Panel_item item;     int value;{  Xv_Window window=canvas_paint_window(canvas_mut);  if (value==1)    xv_set(mut_frame,XV_SHOW,FALSE,NULL);  else{    xv_set(mut_frame,XV_SHOW,TRUE,NULL);   }  mut_paint_proc((Canvas)NULL,window,        dpy,        canvas_win_mut, (Xv_xrectlist *) NULL);}void read_mutfile(filename,num_of_points,data,max,max_delay,radius)char *filename;double max,radius;int *num_of_points,*data,max_delay;{  double databit,buffer,how_close,temp;  FILE *ioptr;  int i=0,l,j=1,m=0;  ioptr = fopen(filename,"r");  if (ioptr == (FILE *)NULL)    {      printf("\nCannot open file !");      exit(1);    }  for (i=1;i<COUNTER-*num_of_points/2;i++){    read_double(ioptr,&databit);  }  while (read_double(ioptr,&databit)!=2 && m< *num_of_points + max_delay){    m++;    temp=MAX_VAL + databit;    if (temp<0){      printf("\nDiameter too small ... increase by at least %lf",temp);      exit(1);    }    data[m]= (int)(temp/radius);  }  *num_of_points=m-max_delay-1;    fclose(ioptr);}mut_info(){  char *file_in;  double radius,max,Hqs,Hqsj,Iqs,Hq;  float percentage;  int num_of_points,*data,num,*s,**sq,delay,max_delay,i,j,n;     file_in = FILENAME;  num_of_points=MUT_NO_POINTS;  radius=MUT_RAD;  max_delay=MUT_DELAY;  max=MAX_VAL*2;  data=ivector(1,num_of_points+max_delay);  sq=imatrix(0,(int)(max/radius),0,(int)(max/radius));  s=ivector(0,(int)(max/radius));  read_mutfile(file_in,&num_of_points,data,max,max_delay,radius);  num=num_of_points;    for (i=0;i<(int)(max/radius);i++)    s[i]=0;  for (n=1;n<=num;n++)    s[data[n]]++;  Hq=0;  for (i=0;i<(int)(max/radius);i++){    if (s[i]!=0)      Hq+=(s[i]/(float)num)*( log(s[i]/(float)num)/log(2));  }    for (delay=1;delay<=max_delay;delay++){    for (i=0;i<(int)(max/radius);i++)      for (j=0;j<(int)(max/radius);j++)	sq[i][j]=0;       for (n=1;n<=num;n++)      sq[data[n]][data[n+delay]]++;            Hqs=0;    for (i=0;i<(int)(max/radius);i++){      Hqsj=0;      for (j=0;j<(int)(max/radius);j++){	if (sq[i][j]!=0 && s[i]!=0){	  Hqsj += (sq[i][j]/(float)s[i])*(log(sq[i][j]/(float)s[i])/log(2));	}      }      Hqs += Hqsj * (s[i]/(float)num);    }    Iqs =-Hq+Hqs;    mut[delay]=Iqs;    mut_delay[delay]=delay;  }  MUT_NUM=max_delay;  free_imatrix(sq,0,(int)(max/radius),0,(int)(max/radius));  free_ivector(s,0,(int)(max/radius));  free_ivector(data,1,num_of_points+max_delay);}mut_num_adjust(item,event)     Panel_item item;     Event *event;{  MUT_DELAY=xv_get(item,PANEL_VALUE);}mut_st_rad(item,event)     Panel_item item;     Event      *event;{  char *test[50],str[50];   strcpy(str,(char *)xv_get(item,PANEL_VALUE));  MUT_RAD=strtod(str,test);}mut_length(item,event)     Panel_item item;     Event *event;{  MUT_NO_POINTS=xv_get(item,PANEL_VALUE);}  mut_accept(item,value)     Panel_item item;     int value;{  Xv_Window window2=canvas_paint_window(canvas_mut);

⌨️ 快捷键说明

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