Changeset 9730 for trunk/psLib/src/math
- Timestamp:
- Oct 24, 2006, 12:55:05 PM (20 years ago)
- Location:
- trunk/psLib/src/math
- Files:
-
- 8 edited
-
psMinimizeLMM.c (modified) (6 diffs)
-
psMinimizePolyFit.c (modified) (12 diffs)
-
psMinimizePowell.c (modified) (2 diffs)
-
psPolynomial.c (modified) (31 diffs)
-
psPolynomial.h (modified) (2 diffs)
-
psSparse.c (modified) (3 diffs)
-
psSpline.c (modified) (4 diffs)
-
psStats.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psMinimizeLMM.c
r9556 r9730 10 10 * @author EAM, IfA 11 11 * 12 * @version $Revision: 1.2 3$ $Name: not supported by cvs2svn $13 * @date $Date: 2006-10- 14 00:15:47$12 * @version $Revision: 1.24 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2006-10-24 22:52:56 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 163 163 psImage *Alpha = psImageAlloc (params->n, params->n, PS_TYPE_F64); 164 164 psVector *beta = psVectorAlloc(params->n, PS_TYPE_F64); 165 beta->n = beta->nalloc;166 165 psVector *Params = psVectorAlloc(params->n, PS_TYPE_F64); 167 Params->n = Params->nalloc;168 166 psVector *dy = NULL; 169 167 psBool rc = true; … … 175 173 } else { 176 174 dy = psVectorAlloc(y->n, PS_TYPE_F32); 177 dy->n = dy->nalloc;178 175 psVectorInit(dy, 1.0); 179 176 } … … 246 243 psF64 ymodel; 247 244 psVector *deriv = psVectorAlloc(params->n, PS_TYPE_F32); 248 deriv->n = deriv->nalloc;249 245 250 246 // zero alpha and beta for summing below … … 380 376 psImage *Alpha = psImageAlloc(params->n, params->n, PS_TYPE_F64); 381 377 psVector *beta = psVectorAlloc(params->n, PS_TYPE_F64); 382 beta->n = beta->nalloc;383 378 psVector *Beta = psVectorAlloc(params->n, PS_TYPE_F64); 384 beta->n = beta->nalloc;385 379 psVector *Params = psVectorAlloc(params->n, PS_TYPE_F32); 386 Params->n = Params->nalloc;387 380 psVector *dy = NULL; 388 381 psF64 Chisq = 0.0; … … 398 391 } else { 399 392 dy = psVectorAlloc(y->n, PS_TYPE_F32); 400 dy->n = dy->nalloc;401 393 psVectorInit(dy, 1.0); 402 394 } -
trunk/psLib/src/math/psMinimizePolyFit.c
r9640 r9730 10 10 * @author EAM, IfA 11 11 * 12 * @version $Revision: 1.2 3$ $Name: not supported by cvs2svn $13 * @date $Date: 2006-10- 19 02:57:18$12 * @version $Revision: 1.24 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2006-10-24 22:52:56 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 46 46 #define PS_VECTOR_GEN_CHEBY_INDEX(VEC, SIZE, TYPE) \ 47 47 VEC = psVectorAlloc(SIZE, TYPE); \ 48 VEC->n = VEC->nalloc; \49 48 if (TYPE == PS_TYPE_F64) { \ 50 49 for (psS32 i = 0 ; i < SIZE ; i++) { \ … … 93 92 if (sums == NULL) { 94 93 sums = psVectorAlloc(nSum, PS_TYPE_F64); 95 sums->n = sums->nalloc;96 94 } else if (nSum > sums->n) { 97 95 sums = psVectorRealloc(sums, nSum); 98 sums->n = sums->nalloc;96 sums->n = nSum; 99 97 } 100 98 … … 333 331 psImage *A = psImageAlloc(numTerms, numTerms, PS_TYPE_F64); // Least-squares matrix 334 332 psVector *B = psVectorAlloc(numTerms, PS_TYPE_F64); // Least-squares vector 335 B->n = numTerms;336 333 psImageInit(A, 0.0); 337 334 psVectorInit(B, 0.0); … … 509 506 psImage *A = psImageAlloc(nTerm, nTerm, PS_TYPE_F64); // Least-squares matrix 510 507 psVector *B = psVectorAlloc(nTerm, PS_TYPE_F64); // Least-squares vector 511 B->n = B->nalloc;512 508 513 509 // Initialize data structures. … … 805 801 psVector *fit = NULL; 806 802 psVector *resid = psVectorAlloc(f->n, PS_TYPE_F64); 807 resid->n = resid->nalloc;808 803 809 804 // eventual expansion: user supplies one of various stats option pairs, … … 976 971 psImage *A = psImageAlloc(nTerm, nTerm, PS_TYPE_F64); // Least-squares matrix 977 972 psVector *B = psVectorAlloc(nTerm, PS_TYPE_F64); // Least-squares vector 978 B->n = B->nalloc;979 973 980 974 // Initialize data structures. … … 1256 1250 } 1257 1251 psVector *resid = psVectorAlloc(f->n, PS_TYPE_F64); 1258 resid->n = resid->nalloc;1259 1252 1260 1253 // eventual expansion: user supplies one of various stats option pairs, … … 1434 1427 psImage *A = psImageAlloc(nTerm, nTerm, PS_TYPE_F64); // Least-squares matrix 1435 1428 psVector *B = psVectorAlloc(nTerm, PS_TYPE_F64); // Least-squares vector 1436 B->n = B->nalloc;1437 1429 1438 1430 // Initialize data structures. … … 1790 1782 psVector *fit = NULL; 1791 1783 psVector *resid = psVectorAlloc(f->n, PS_TYPE_F64); 1792 resid->n = resid->nalloc;1793 1784 1794 1785 // eventual expansion: user supplies one of various stats option pairs, … … 1967 1958 psImage *A = psImageAlloc(nTerm, nTerm, PS_TYPE_F64); // Least-squares matrix 1968 1959 psVector *B = psVectorAlloc(nTerm, PS_TYPE_F64); // Least-squares vector 1969 B->n = B->nalloc;1970 1960 1971 1961 // Initialize data structures. … … 2368 2358 psVector *fit = NULL; 2369 2359 psVector *resid = psVectorAlloc(f->n, PS_TYPE_F64); 2370 resid->n = resid->nalloc;2371 2360 2372 2361 // eventual expansion: user supplies one of various stats option pairs, -
trunk/psLib/src/math/psMinimizePowell.c
r9540 r9730 11 11 * NOTE: XXX: The SDR is silent about data types. F32 is implemented here. 12 12 * 13 * @version $Revision: 1.1 1$ $Name: not supported by cvs2svn $14 * @date $Date: 2006-10- 13 22:04:58$13 * @version $Revision: 1.12 $ $Name: not supported by cvs2svn $ 14 * @date $Date: 2006-10-24 22:52:56 $ 15 15 * 16 16 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 549 549 ((psVector *) (v->data[i]))->data.F32[j] = 0.0; 550 550 } 551 ((psVector *)(v->data[i]))->n++; 552 } 553 v->n++; 551 } 554 552 } 555 553 -
trunk/psLib/src/math/psPolynomial.c
r9540 r9730 7 7 * polynomials. It also contains a Gaussian functions. 8 8 * 9 * @version $Revision: 1.15 1$ $Name: not supported by cvs2svn $10 * @date $Date: 2006-10- 13 22:04:58$9 * @version $Revision: 1.152 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2006-10-24 22:52:56 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 266 266 // General case where the Chebyshev poly has 2 or more terms. 267 267 d = psVectorAlloc(nTerms, PS_TYPE_F64); 268 d->n = d->nalloc;269 268 if(poly->mask[nTerms-1] == 0) { 270 269 d->data.F64[nTerms-1] = poly->coeff[nTerms-1]; … … 571 570 psTrace("psLib.math", 4, "---- %s() end ----\n", __func__); 572 571 return(tmp * exp(-((x - mean) * (x - mean)) / (2.0 * sigma * sigma))); 573 }574 575 /*****************************************************************************576 p_psGaussianDev()577 This private routine (formerly a psLib API routine) creates a psVector of the578 specified size and type F32 and fills it with a random Gaussian distribution579 of numbers with the specified mean and sigma.580 581 XXX: It's possible to have a different seed everytime. However, for now,582 for testability, we use a common seed.583 *****************************************************************************/584 #define PS_XXX_GAUSSIAN_SEED 1995585 psVector* p_psGaussianDev(psF32 mean,586 psF32 sigma,587 unsigned int Npts)588 {589 PS_ASSERT_INT_NONNEGATIVE(Npts, NULL);590 591 // psRandom *r = psRandomAlloc(PS_RANDOM_TAUS, p_psRandomGetSystemSeed());592 psRandom *r = psRandomAlloc(PS_RANDOM_TAUS, PS_XXX_GAUSSIAN_SEED);593 psVector* gauss = psVectorAlloc(Npts, PS_TYPE_F32);594 for (unsigned int i = 0; i < Npts; i++) {595 gauss->data.F32[i] = mean + p_psRandomGaussian(r, sigma);596 gauss->n++;597 }598 psFree(r);599 600 return(gauss);601 572 } 602 573 … … 808 779 for (unsigned int i=0;i<x->n;i++) { 809 780 tmp->data.F64[i] = psPolynomial1DEval(poly, x->data.F64[i]); 810 tmp->n++;811 781 } 812 782 break; … … 815 785 for (unsigned int i=0;i<x->n;i++) { 816 786 tmp->data.F32[i] = psPolynomial1DEval(poly, x->data.F32[i]); 817 tmp->n++;818 787 } 819 788 break; … … 877 846 for (unsigned int i=0; i<vecLen; i++) { 878 847 tmp->data.F32[i] = psPolynomial2DEval(poly,x->data.F32[i],y->data.F32[i]); 879 tmp->n++;880 848 } 881 849 break; … … 892 860 for (unsigned int i=0; i<vecLen; i++) { 893 861 tmp->data.F64[i] = psPolynomial2DEval(poly,x->data.F64[i],y->data.F64[i]); 894 tmp->n++;895 862 } 896 863 break; … … 959 926 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F32[i], 960 927 y->data.F32[i], z->data.F32[i]); 961 tmp->n++;962 928 } 963 929 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F32) … … 966 932 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F32[i], 967 933 y->data.F32[i], z->data.F64[i]); 968 tmp->n++;969 934 } 970 935 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) … … 973 938 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F32[i], 974 939 y->data.F64[i], z->data.F32[i]); 975 tmp->n++;976 940 } 977 941 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) … … 980 944 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F32[i], 981 945 y->data.F64[i], z->data.F64[i]); 982 tmp->n++;983 946 } 984 947 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) … … 987 950 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F64[i], 988 951 y->data.F32[i], z->data.F32[i]); 989 tmp->n++;990 952 } 991 953 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) … … 994 956 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F64[i], 995 957 y->data.F32[i], z->data.F64[i]); 996 tmp->n++;997 958 } 998 959 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) … … 1001 962 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F64[i], 1002 963 y->data.F64[i], z->data.F32[i]); 1003 tmp->n++;1004 964 } 1005 965 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) … … 1008 968 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F64[i], 1009 969 y->data.F64[i], z->data.F64[i]); 1010 tmp->n++;1011 970 } 1012 971 } … … 1079 1038 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], 1080 1039 y->data.F32[i], z->data.F32[i], t->data.F32[i]); 1081 tmp->n++;1082 1040 } 1083 1041 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F32) … … 1086 1044 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], 1087 1045 y->data.F32[i], z->data.F32[i], t->data.F64[i]); 1088 tmp->n++;1089 1046 } 1090 1047 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F32) … … 1093 1050 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], 1094 1051 y->data.F32[i], z->data.F64[i], t->data.F32[i]); 1095 tmp->n++;1096 1052 } 1097 1053 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F32) … … 1100 1056 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], 1101 1057 y->data.F32[i], z->data.F64[i], t->data.F64[i]); 1102 tmp->n++;1103 1058 } 1104 1059 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) … … 1107 1062 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], 1108 1063 y->data.F64[i], z->data.F32[i], t->data.F32[i]); 1109 tmp->n++;1110 1064 } 1111 1065 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) … … 1114 1068 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], 1115 1069 y->data.F64[i], z->data.F32[i], t->data.F64[i]); 1116 tmp->n++;1117 1070 } 1118 1071 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) … … 1121 1074 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], 1122 1075 y->data.F64[i], z->data.F64[i], t->data.F32[i]); 1123 tmp->n++;1124 1076 } 1125 1077 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) … … 1128 1080 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], 1129 1081 y->data.F64[i], z->data.F64[i], t->data.F64[i]); 1130 tmp->n++;1131 1082 } 1132 1083 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) … … 1135 1086 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], 1136 1087 y->data.F32[i], z->data.F32[i], t->data.F32[i]); 1137 tmp->n++;1138 1088 } 1139 1089 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) … … 1142 1092 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], 1143 1093 y->data.F32[i], z->data.F32[i], t->data.F64[i]); 1144 tmp->n++;1145 1094 } 1146 1095 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) … … 1149 1098 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], 1150 1099 y->data.F32[i], z->data.F64[i], t->data.F32[i]); 1151 tmp->n++;1152 1100 } 1153 1101 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) … … 1156 1104 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], 1157 1105 y->data.F32[i], z->data.F64[i], t->data.F64[i]); 1158 tmp->n++;1159 1106 } 1160 1107 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) … … 1163 1110 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], 1164 1111 y->data.F64[i], z->data.F32[i], t->data.F32[i]); 1165 tmp->n++;1166 1112 } 1167 1113 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) … … 1170 1116 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], 1171 1117 y->data.F64[i], z->data.F32[i], t->data.F64[i]); 1172 tmp->n++;1173 1118 } 1174 1119 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) … … 1177 1122 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], 1178 1123 y->data.F64[i], z->data.F64[i], t->data.F32[i]); 1179 tmp->n++;1180 1124 } 1181 1125 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) … … 1185 1129 y->data.F64[i], z->data.F64[i], 1186 1130 t->data.F64[i]); 1187 tmp->n++;1188 1131 } 1189 1132 } -
trunk/psLib/src/math/psPolynomial.h
r7766 r9730 11 11 * @author GLG, MHPCC 12 12 * 13 * @version $Revision: 1.6 3$ $Name: not supported by cvs2svn $14 * @date $Date: 2006- 06-30 02:20:06 $13 * @version $Revision: 1.64 $ $Name: not supported by cvs2svn $ 14 * @date $Date: 2006-10-24 22:52:56 $ 15 15 * 16 16 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 45 45 float sigma, ///< Standard deviation for the Gaussian 46 46 bool normal ///< Indicates whether result should be normalized 47 );48 49 /** Produce a vector of random numbers from a Gaussian distribution with50 * the specified mean and sigma51 *52 * @return psVector* vector of random numbers53 *54 */55 psVector* p_psGaussianDev(56 psF32 mean, ///< The mean of the Gaussian57 psF32 sigma, ///< The sigma of the Gaussian58 unsigned int Npts ///< The size of the vector59 47 ); 60 48 -
trunk/psLib/src/math/psSparse.c
r8627 r9730 35 35 psMemSetDeallocator(sparse, (psFreeFunc)sparseFree); 36 36 37 sparse->Aij = psVectorAlloc(Nelem, PS_DATA_F32); 38 sparse->Si = psVectorAlloc(Nelem, PS_DATA_S32); 39 sparse->Sj = psVectorAlloc(Nelem, PS_DATA_S32); 40 41 sparse->Aij->n = 0; 42 sparse->Si->n = 0; 43 sparse->Sj->n = 0; 37 sparse->Aij = psVectorAllocEmpty(Nelem, PS_DATA_F32); 38 sparse->Si = psVectorAllocEmpty(Nelem, PS_DATA_S32); 39 sparse->Sj = psVectorAllocEmpty(Nelem, PS_DATA_S32); 40 44 41 sparse->Nelem = 0; 45 42 46 43 sparse->Bfj = psVectorAlloc(Nrows, PS_DATA_F32); 47 44 sparse->Qii = psVectorAlloc(Nrows, PS_DATA_F32); 48 sparse->Bfj->n = Nrows;49 sparse->Qii->n = Nrows;50 45 51 46 sparse->Nrows = Nrows; … … 157 152 // temporary storage for intermediate results 158 153 psVector *dQ = psVectorAlloc(output->n, PS_DATA_F32); 159 dQ->n = output->n;160 154 161 155 for (int j = 0; j < Niter; j++) { … … 197 191 psVector *tSi = psVectorAlloc(Nelem, PS_DATA_S32); 198 192 psVector *tSj = psVectorAlloc(Nelem, PS_DATA_S32); 199 tAij->n = tSi->n = tSj->n = Nelem;200 193 201 194 for (int i = 0; i < Nelem; i++) { -
trunk/psLib/src/math/psSpline.c
r9540 r9730 6 6 * This file contains the routines that allocate, free, and evaluate splines. 7 7 * 8 * @version $Revision: 1.15 5$ $Name: not supported by cvs2svn $9 * @date $Date: 2006-10- 13 22:04:58$8 * @version $Revision: 1.156 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2006-10-24 22:52:56 $ 10 10 * 11 11 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 239 239 for (psS32 i = 0 ; i < x->n ; i++) { 240 240 spline->knots->data.F32[i] = x->data.F32[i]; 241 spline->knots->n++;242 241 } 243 242 } else if (x->type.type == PS_TYPE_F64) { 244 243 for (psS32 i = 0 ; i < x->n ; i++) { 245 244 spline->knots->data.F32[i] = (psF32) x->data.F64[i]; 246 spline->knots->n++;247 245 } 248 246 } … … 250 248 for (psS32 i = 0 ; i < y->n ; i++) { 251 249 spline->knots->data.F32[i] = (psF32) i; 252 spline->knots->n++;253 250 } 254 251 } … … 415 412 for (psS32 i=0;i<x->n;i++) { 416 413 tmpVector->data.F32[i] = psSpline1DEval(spline, x->data.F32[i]); 417 tmpVector->n++;418 414 } 419 415 } else if (x->type.type == PS_TYPE_F64) { 420 416 for (psS32 i=0;i<x->n;i++) { 421 417 tmpVector->data.F32[i] = psSpline1DEval(spline, (psF32) x->data.F64[i]); 422 tmpVector->n++;423 418 } 424 419 } -
trunk/psLib/src/math/psStats.c
r9540 r9730 16 16 * use ->min and ->max (PS_STAT_USE_RANGE) 17 17 * 18 * @version $Revision: 1.18 7$ $Name: not supported by cvs2svn $19 * @date $Date: 2006-10- 13 22:04:58$18 * @version $Revision: 1.188 $ $Name: not supported by cvs2svn $ 19 * @date $Date: 2006-10-24 22:52:56 $ 20 20 * 21 21 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 388 388 389 389 // Allocate temporary vectors for the data. 390 psVector* vector = psVectorAlloc (myVector->n, PS_TYPE_F32); // Vector containing the unmasked values390 psVector* vector = psVectorAllocEmpty(myVector->n, PS_TYPE_F32); // Vector containing the unmasked values 391 391 long count = 0; // Number of valid entries 392 392 … … 486 486 long numBins = histogram->nums->n; // Number of histogram bins 487 487 psVector *smooth = psVectorAlloc(numBins, PS_TYPE_F32); // Smoothed version of histogram bins 488 smooth->n = smooth->nalloc;489 488 const psVector *bounds = histogram->bounds; // The bounds for the histogram bins 490 489 … … 723 722 // We copy the mask vector, to preserve the original 724 723 psVector *tmpMask = psVectorAlloc(myVector->n, PS_TYPE_U8); 725 tmpMask->n = tmpMask->nalloc;726 724 psVectorInit(tmpMask, 0); 727 725 if (maskVector) { … … 901 899 psVector *x = psVectorAlloc(3, PS_TYPE_F64); 902 900 psVector *y = psVectorAlloc(3, PS_TYPE_F64); 903 x->n = 3;904 y->n = 3;905 901 psF32 tmpFloat = 0.0f; 906 902 … … 1066 1062 1067 1063 psVector *mask = psVectorAlloc(myVector->n, PS_TYPE_MASK); // The actual mask we will use 1068 mask->n = myVector->n;1069 1064 psVectorInit(mask, 0); 1070 1065 if (maskVector) { … … 1487 1482 psVector *y = psVectorAlloc((1 + (binMax - binMin)), PS_TYPE_F32); // Vector of coordinates 1488 1483 psArray *x = psArrayAlloc((1 + (binMax - binMin))); // Array of ordinates 1489 y->n = y->nalloc;1490 x->n = x->nalloc;1491 1484 for (long i = binMin, j = 0; i <= binMax ; i++, j++) { 1492 1485 y->data.F32[j] = smoothed->data.F32[i]; 1493 1486 psVector *ordinate = psVectorAlloc(1, PS_TYPE_F32); // The ordinate value 1494 ordinate->n = 1;1495 1487 ordinate->data.F32[0] = PS_BIN_MIDPOINT(histogram, i); 1496 1488 x->data[j] = ordinate; … … 1521 1513 psMinimization *minimizer = psMinimizationAlloc(100, 0.01); // The minimizer information 1522 1514 psVector *params = psVectorAlloc(2, PS_TYPE_F32); // Parameters for the Gaussian 1523 params->n = params->nalloc;1524 1515 // Initial guess for the mean (index 0) and standard dev (index 1). 1525 1516 params->data.F32[0] = stats->robustMedian; … … 1654 1645 psVector* newBounds = psVectorAlloc(n + 1, PS_TYPE_F32); 1655 1646 newHist->bounds = newBounds; 1656 newBounds->n = newHist->bounds->nalloc;1657 1647 1658 1648 // Calculate the bounds for each bin. … … 1666 1656 // Allocate the bins, and initialize them to zero. 1667 1657 newHist->nums = psVectorAlloc(n, PS_TYPE_F32); 1668 for (long i = 0; i < newHist->nums->nalloc; i++) { 1669 newHist->nums->data.F32[i] = 0.0; 1670 newHist->nums->n++; 1671 } 1658 psVectorInit(newHist->nums, 0.0); 1672 1659 1673 1660 // Initialize the other members. … … 1699 1686 psHistogram *newHist = (psHistogram* ) psAlloc(sizeof(psHistogram)); // The new histogram structure 1700 1687 psMemSetDeallocator(newHist, (psFreeFunc) histogramFree); 1701 psVector* newBounds = psVector Alloc(bounds->n, PS_TYPE_F32);1688 psVector* newBounds = psVectorCopy(NULL, bounds, PS_TYPE_F32); 1702 1689 newHist->bounds = newBounds; 1703 newBounds->n = newHist->bounds->nalloc;1704 for (long i = 0; i < bounds->n; i++) {1705 newBounds->data.F32[i] = bounds->data.F32[i];1706 }1707 1690 1708 1691 // Allocate the bins, and initialize them to zero. If there are N bounds, 1709 1692 // then there are N-1 bins. 1710 1693 newHist->nums = psVectorAlloc((bounds->n) - 1, PS_TYPE_F32); 1711 for (long i = 0; i < newHist->nums->nalloc; i++) { 1712 newHist->nums->data.F32[i] = 0.0; 1713 newHist->nums->n++; 1714 } 1694 psVectorInit(newHist->nums, 0.0); 1715 1695 1716 1696 // Initialize the other members.
Note:
See TracChangeset
for help on using the changeset viewer.
