- Timestamp:
- Feb 23, 2021, 8:59:19 AM (5 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/math/psStats.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psStats.c
r41494 r41502 324 324 psF32 *output = outVector->data.F32; // Dereference the vector 325 325 326 if (maskData) psAssert (maskVector-> == inVector->n, "oops"); 327 326 328 long count = 0; // Number of valid entries 327 329 … … 329 331 // into the temporary vectors. 330 332 for (long i = 0; i < inVector->n; i++) { 331 if (!isfinite(input[i])) 332 continue; 333 if (useRange && (input[i] < stats->min)) 334 continue; 335 if (useRange && (input[i] > stats->max)) 336 continue; 337 if (maskData && (maskData[i] & maskVal)) 338 continue; 333 psAssert (count >= 0, "oops"); 334 psAssert (count < outVector->n, "oops"); 335 psAssert (i >= 0, "oops"); 336 psAssert (i < inVector->n, "oops"); 337 338 if (!isfinite(input[i])) continue; 339 if (useRange && (input[i] < stats->min)) continue; 340 if (useRange && (input[i] > stats->max)) continue; 341 if (maskData && (maskData[i] & maskVal)) continue; 339 342 340 343 output[count] = input[i]; … … 363 366 364 367 // Calculate the median. Use the average if the number of samples if even. 368 int midPt = (count/2); 369 psAssert (midPt >= 0, "oops"); 370 psAssert (midPt < outVector->n, "oops"); 365 371 if (count % 2 == 0) { 366 stats->sampleMedian = 0.5 * (output[(count/2) - 1] + output[count/2]); 372 psAssert ((midPt - 1) >= 0, "oops"); 373 psAssert ((midPt - 1) < outVector->n, "oops"); 374 stats->sampleMedian = 0.5 * (output[midPt - 1] + output[midPt]); 367 375 } else { 368 stats->sampleMedian = output[count/2]; 369 } 376 stats->sampleMedian = output[midPt]; 377 } 378 379 int Qmin = (int)0.25*count; 380 int Qmax = (int)0.75*count; 381 psAssert (Qmin >= 0, "oops"); 382 psAssert (Qmin < outVector->n, "oops"); 383 psAssert (Qmax >= 0, "oops"); 384 psAssert (Qmax < outVector->n, "oops"); 370 385 371 386 // Calculate the quartile points exactly.
Note:
See TracChangeset
for help on using the changeset viewer.
