GRASS Programmer's Manual
6.4.2(2012)
|
00001 #include <grass/cluster.h> 00002 00003 int I_cluster_exec_allocate(struct Cluster *C) 00004 { 00005 /* 00006 fprintf(stderr,"I_cluster_exec_allocate(npoints=%d,nclasses=%d,nbands=%d)\n", C->npoints, C->nclasses, C->nbands); 00007 */ 00008 00009 C->class = I_alloc_int(C->npoints); 00010 C->reclass = I_alloc_int(C->nclasses); 00011 C->count = I_alloc_int(C->nclasses); 00012 C->countdiff = I_alloc_int(C->nclasses); 00013 C->sum = I_alloc_double2(C->nbands, C->nclasses); 00014 C->sumdiff = I_alloc_double2(C->nbands, C->nclasses); 00015 C->sum2 = I_alloc_double2(C->nbands, C->nclasses); 00016 C->mean = I_alloc_double2(C->nbands, C->nclasses); 00017 if (C->class == NULL || C->reclass == NULL || 00018 C->sum == NULL || C->sumdiff == NULL || 00019 C->count == NULL || C->countdiff == NULL || 00020 C->sum2 == NULL || C->mean == NULL) { 00021 I_cluster_exec_free(C); 00022 return 0; 00023 } 00024 return 1; 00025 } 00026 00027 int I_cluster_exec_free(struct Cluster *C) 00028 { 00029 I_free(C->class); 00030 I_free(C->reclass); 00031 I_free(C->count); 00032 I_free(C->countdiff); 00033 I_free_double2(C->sum2); 00034 I_free_double2(C->sum); 00035 I_free_double2(C->sumdiff); 00036 I_free_double2(C->mean); 00037 00038 C->class = NULL; 00039 C->count = NULL; 00040 C->countdiff = NULL; 00041 C->sum = NULL; 00042 C->sumdiff = NULL; 00043 C->sum2 = NULL; 00044 C->mean = NULL; 00045 00046 return 0; 00047 }