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

📄 get_series.c

📁 时间序列工具
💻 C
字号:
/* *   This file is part of TISEAN * *   Copyright (c) 1998-2007 Rainer Hegger, Holger Kantz, Thomas Schreiber * *   TISEAN is free software; you can redistribute it and/or modify *   it under the terms of the GNU General Public License as published by *   the Free Software Foundation; either version 2 of the License, or *   (at your option) any later version. * *   TISEAN is distributed in the hope that it will be useful, *   but WITHOUT ANY WARRANTY; without even the implied warranty of *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *   GNU General Public License for more details. * *   You should have received a copy of the GNU General Public License *   along with TISEAN; if not, write to the Free Software *   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA *//*Author: Rainer Hegger Last modified: Sep 3, 1999 */#include <stdio.h>#include <stdlib.h>#include <string.h>#include "tsa.h"#include "tisean_cec.h"#define SIZE_STEP 1000extern void check_alloc(void*);double *get_series(char *name,unsigned long *l,unsigned long ex,		unsigned int col,unsigned int verbosity){  char *input,*format;  int i;  unsigned long count,allcount,max_size=SIZE_STEP,hl;  int input_size=INPUT_SIZE;  double *x;  FILE *fin;    check_alloc(input=(char*)calloc((size_t)input_size,(size_t)1));  check_alloc(format=(char*)calloc((size_t)(4*col),(size_t)1));  strcpy(format,"");  for (i=1;i<col;i++)    strcat(format,"%*lf");  strcat(format,"%lf");    check_alloc(x=(double*)malloc(sizeof(double)*max_size));  hl= *l;    count=0;  allcount=0;  if (name == NULL) {    for (i=0;i<ex;i++)      if ((input=myfgets(input,&input_size,stdin,verbosity)) == NULL)	break;    while ((count < hl) && 	   ((input=myfgets(input,&input_size,stdin,verbosity)) != NULL)) {      if (count == max_size) {	max_size += SIZE_STEP;	check_alloc(x=(double*)realloc(x,sizeof(double)*max_size));      }      allcount++;      if (sscanf(input,format,&x[count]) != 1) {	if (verbosity&VER_INPUT)	  fprintf(stderr,"Line %lu ignored: %s",allcount,input);      }      else	count++;      if ((verbosity&VER_FIRST_LINE) && (count == 0))	fprintf(stderr,"get_series: first data item used:\n%lf\n",x[0]);    }  }  else {    fin=fopen(name,"r");    for (i=0;i<ex;i++)      if ((input=myfgets(input,&input_size,fin,verbosity)) == NULL)	break;    while ((count < hl) && 	   ((input=myfgets(input,&input_size,fin,verbosity)) != NULL)) {      if (count == max_size) {	max_size += SIZE_STEP;	check_alloc(x=(double*)realloc(x,sizeof(double)*max_size));      }      allcount++;      if (sscanf(input,format,&x[count]) != 1) {	if (verbosity&VER_INPUT)	  fprintf(stderr,"Line %lu ignored: %s",allcount,input);      }      else	count++;    }    fclose(fin);  }  free(input);    *l = count;  if (*l == 0) {    fprintf(stderr,"0 lines read. It makes no sense to continue. Exiting!\n");    exit(GET_SERIES_NO_LINES);  }  else {    if (verbosity&VER_INPUT)      fprintf(stderr,"Use %lu lines.\n",*l);  }  if (max_size > count)    check_alloc(x=(double*)realloc(x,sizeof(double)*count));    return x;}#undef SIZE_STEP

⌨️ 快捷键说明

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