testclassif.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054 #ifdef HAVE_CONFIG_H
00055 #include <config.h>
00056 #endif
00057
00059 #define _GNU_SOURCE
00060
00061
00062 #ifdef HAVE_SYS_TYPES_H
00063 #include <sys/types.h>
00064 #endif
00065 #ifdef HAVE_SYS_STAT_H
00066 #include <sys/stat.h>
00067 #endif
00068 #ifdef HAVE_FCNTL_H
00069 #include <fcntl.h>
00070 #endif
00071 #ifdef HAVE_UNISTD_H
00072 #include <unistd.h>
00073 #endif
00074 #ifdef HAVE_STDIO_H
00075 #include <stdio.h>
00076 #endif
00077 #ifdef HAVE_STRING_H
00078 #include <string.h>
00079 #endif
00080 #ifdef HAVE_STDLIB_H
00081 #include <stdlib.h>
00082 #endif
00083 #ifdef HAVE_MATH_H
00084 #include <math.h>
00085 #endif
00086 #ifdef HAVE_TIME_H
00087 #include <time.h>
00088 #endif
00089 #ifdef HAVE_LIBGEN_H
00090 #include <libgen.h>
00091 #endif
00092
00093 #include <gsl/gsl_rng.h>
00094 #include <gsl/gsl_randist.h>
00095
00096 #include <classif.h>
00097
00099 void show_usage(char *pgm);
00100
00102 int main(int argc, char **argv)
00103 {
00111 int i;
00112 int j;
00113 int neof;
00114 int ndays;
00115 int nclusters;
00116 int nclassif;
00117
00118 double *pc_eof_days = NULL;
00119 double *clusters = NULL;
00120
00121 const gsl_rng_type *T;
00122 gsl_rng *rng;
00123
00124
00125 (void) banner(basename(argv[0]), "1.0", "BEGIN");
00126
00127
00128 for (i=1; i<argc; i++) {
00129 if ( !strcmp(argv[i], "-h") ) {
00130 (void) show_usage(basename(argv[0]));
00131 (void) banner(basename(argv[0]), "OK", "END");
00132 return 0;
00133 }
00134 else {
00135 (void) fprintf(stderr, "%s:: Wrong arg %s.\n\n", basename(argv[0]), argv[i]);
00136 (void) show_usage(basename(argv[0]));
00137 (void) banner(basename(argv[0]), "ABORT", "END");
00138 (void) abort();
00139 }
00140 }
00141
00142
00143 neof = 10;
00144
00145 ndays = 15000;
00146
00147 nclassif = 1000;
00148
00149 nclusters = 8;
00150
00151
00152 T = gsl_rng_default;
00153 rng = gsl_rng_alloc(T);
00154 (void) gsl_rng_set(rng, time(NULL));
00155
00156
00157 pc_eof_days = (double *) calloc(neof*ndays, sizeof(double));
00158 if (pc_eof_days == NULL) alloc_error(__FILE__, __LINE__);
00159 clusters = (double *) calloc(neof*nclusters, sizeof(double));
00160 if (clusters == NULL) alloc_error(__FILE__, __LINE__);
00161
00162
00163 for (i=0; i<neof; i++) {
00164 for (j=0; j<ndays/2; j++) {
00165 pc_eof_days[i+j*neof] = fabs(gsl_ran_gaussian(rng, 1.0) / 2.0);
00166 #ifdef DEBUG
00167
00168 #endif
00169 }
00170 for (j=ndays/2; j<ndays; j++) {
00171 pc_eof_days[i+j*neof] = fabs((gsl_ran_gaussian(rng, 1.0) / 2.0))+ 0.5;
00172 #ifdef DEBUG
00173
00174 #endif
00175 }
00176 }
00177
00178 (void) gsl_rng_free(rng);
00179
00180
00181 (void) generate_clusters(clusters, pc_eof_days, "euclidian", nclassif, neof, nclusters, ndays);
00182
00183
00184 for (i=0; i<neof; i++)
00185 for (j=0; j<nclusters; j++)
00186 (void) fprintf(stdout, "%d %d %lf\n", i, j, clusters[i+j*neof]);
00187
00188
00189 (void) free(pc_eof_days);
00190 (void) free(clusters);
00191
00192
00193 (void) banner(basename(argv[0]), "OK", "END");
00194
00195 return 0;
00196 }
00197
00198
00202 void show_usage(char *pgm) {
00207 (void) fprintf(stderr, "%s: usage:\n", pgm);
00208 (void) fprintf(stderr, "-h: help\n");
00209
00210 }