Changeset 9625 for trunk/psLib/src/math/psMinimizePolyFit.c
- Timestamp:
- Oct 18, 2006, 8:37:38 AM (20 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/math/psMinimizePolyFit.c (modified) (17 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psMinimizePolyFit.c
r9540 r9625 10 10 * @author EAM, IfA 11 11 * 12 * @version $Revision: 1.2 1$ $Name: not supported by cvs2svn $13 * @date $Date: 2006-10-1 3 22:04:58 $12 * @version $Revision: 1.22 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2006-10-18 18:37:38 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 42 42 43 43 # define USE_GAUSS_JORDAN 1 44 # define USE_ROBUST_STATS_FOR_CLIPPING 1 44 45 45 46 #define PS_VECTOR_GEN_CHEBY_INDEX(VEC, SIZE, TYPE) \ … … 811 812 // for now, for the SAMPLE_MEDIAN and SAMPLE_STDEV to be used 812 813 stats->options |= (PS_STAT_SAMPLE_MEDIAN | PS_STAT_SAMPLE_STDEV); 814 stats->options |= (PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV); 813 815 psTrace("psLib.math", 4, "stats->clipIter is %d\n", stats->clipIter); 814 816 psTrace("psLib.math", 4, "(minClipSigma, maxClipSigma) is (%.2f, %.2f)\n", minClipSigma, maxClipSigma); … … 859 861 860 862 stats = psVectorStats(stats, resid, NULL, mask, maskValue); 861 psTrace("psLib.math", 6, "Median is %f\n", stats->sampleMedian); 862 psTrace("psLib.math", 6, "Stdev is %f\n", stats->sampleStdev); 863 psF32 minClipValue = -minClipSigma*stats->sampleStdev; 864 psF32 maxClipValue = +maxClipSigma*stats->sampleStdev; 863 if (stats == NULL) { 864 psError(PS_ERR_UNKNOWN, false, "Could not compute statistics on the resid vector. Returning NULL.\n"); 865 psFree(resid) 866 psFree(fit) 867 return(NULL); 868 } 869 # if (USE_ROBUST_STATS_FOR_CLIPPING) 870 psTrace("psLib.math", 5, "Median is %f\n", stats->robustMedian); 871 psTrace("psLib.math", 5, "Stdev is %f\n", stats->robustStdev); 872 psF32 minClipValue = -minClipSigma*stats->robustStdev; 873 psF32 maxClipValue = +maxClipSigma*stats->robustStdev; 874 psF32 clipMedian = stats->robustMedian; 875 # else 876 877 psTrace("psLib.math", 5, "Median is %f\n", stats->sampleMedian); 878 psTrace("psLib.math", 5, "Stdev is %f\n", stats->sampleStdev); 879 psF32 minClipValue = -minClipSigma*stats->robustStdev; 880 psF32 maxClipValue = +maxClipSigma*stats->robustStdev; 881 psF32 clipMedian = stats->sampleMedian; 882 # endif 865 883 866 884 // set mask if pts are not valid … … 872 890 } 873 891 874 if ((resid->data.F64[i] - stats->sampleMedian > maxClipValue) || 875 (resid->data.F64[i] - stats->sampleMedian < minClipValue)) { 892 if ((resid->data.F64[i] - clipMedian > maxClipValue) || (resid->data.F64[i] - clipMedian < minClipValue)) { 876 893 if (f->type.type == PS_TYPE_F64) { 877 894 psTrace("psLib.math", 6, "Masking element %d (%f). resid->data.F64[%d] is %f\n", … … 1246 1263 // for now, for the SAMPLE_MEDIAN and SAMPLE_STDEV to be used 1247 1264 stats->options |= (PS_STAT_SAMPLE_MEDIAN | PS_STAT_SAMPLE_STDEV); 1265 stats->options |= (PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV); 1248 1266 psTrace("psLib.math", 4, "stats->clipIter is %d\n", stats->clipIter); 1249 1267 psTrace("psLib.math", 4, "(minClipSigma, maxClipSigma) is (%.2f, %.2f)\n", minClipSigma, maxClipSigma); … … 1252 1270 psTrace("psLib.math", 6, "Loop iteration %d. Calling psVectorFitPolynomial1D()\n", N); 1253 1271 psS32 Nkeep = 0; 1254 if (psTraceGetLevel("psLib.math") >= 6) {1272 if (psTraceGetLevel("psLib.math") >= 7) { 1255 1273 if (mask != NULL) { 1256 1274 for (psS32 i = 0 ; i < mask->n ; i++) { 1257 psTrace("psLib.math", 6, "mask[%d] is %d\n", i, mask->data.U8[i]);1275 psTrace("psLib.math", 7, "mask[%d] is %d\n", i, mask->data.U8[i]); 1258 1276 } 1259 1277 } … … 1282 1300 } 1283 1301 1284 if (psTraceGetLevel("psLib.math") >= 6) {1302 if (psTraceGetLevel("psLib.math") >= 7) { 1285 1303 if (mask != NULL) { 1286 1304 for (psS32 i = 0 ; i < mask->n ; i++) { 1287 1305 if (!((mask != NULL) && (mask->data.U8[i] & maskValue))) { 1288 psTrace("psLib.math", 6, "(f, fit)[%d] is (%f, %f). resid is (%f)\n",1306 psTrace("psLib.math", 7, "(f, fit)[%d] is (%f, %f). resid is (%f)\n", 1289 1307 i, f->data.F32[i], fit->data.F32[i], resid->data.F64[i]); 1290 1308 } … … 1300 1318 return(NULL); 1301 1319 } 1302 psTrace("psLib.math", 6, "Median is %f\n", stats->sampleMedian); 1303 psTrace("psLib.math", 6, "Stdev is %f\n", stats->sampleStdev); 1304 psF32 minClipValue = -minClipSigma*stats->sampleStdev; 1305 psF32 maxClipValue = +maxClipSigma*stats->sampleStdev; 1320 # if (USE_ROBUST_STATS_FOR_CLIPPING) 1321 psTrace("psLib.math", 5, "Median is %f\n", stats->robustMedian); 1322 psTrace("psLib.math", 5, "Stdev is %f\n", stats->robustStdev); 1323 psF32 minClipValue = -minClipSigma*stats->robustStdev; 1324 psF32 maxClipValue = +maxClipSigma*stats->robustStdev; 1325 psF32 clipMedian = stats->robustMedian; 1326 # else 1327 1328 psTrace("psLib.math", 5, "Median is %f\n", stats->sampleMedian); 1329 psTrace("psLib.math", 5, "Stdev is %f\n", stats->sampleStdev); 1330 psF32 minClipValue = -minClipSigma*stats->robustStdev; 1331 psF32 maxClipValue = +maxClipSigma*stats->robustStdev; 1332 psF32 clipMedian = stats->sampleMedian; 1333 # endif 1306 1334 1307 1335 // set mask if pts are not valid … … 1313 1341 } 1314 1342 1315 if ((resid->data.F64[i] - stats->sampleMedian > maxClipValue) || 1316 (resid->data.F64[i] - stats->sampleMedian < minClipValue)) { 1343 if ((resid->data.F64[i] - clipMedian > maxClipValue) || (resid->data.F64[i] - clipMedian < minClipValue)) { 1317 1344 if (fit->type.type == PS_TYPE_F64) { 1318 1345 psTrace("psLib.math", 6, "Masking element %d (%f). resid->data.F64[%d] is %f\n", … … 1331 1358 } 1332 1359 1333 psTrace("psLib.math", 6, "keeping %d of %ld pts for fit\n", Nkeep, x->n);1360 psTrace("psLib.math", 4, "keeping %d of %ld pts for fit\n", Nkeep, x->n); 1334 1361 psFree(fit); 1335 1362 } … … 1766 1793 // for now, for the SAMPLE_MEDIAN and SAMPLE_STDEV to be used 1767 1794 stats->options |= (PS_STAT_SAMPLE_MEDIAN | PS_STAT_SAMPLE_STDEV); 1795 stats->options |= (PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV); 1768 1796 psTrace("psLib.math", 4, "stats->clipIter is %d\n", stats->clipIter); 1769 1797 psTrace("psLib.math", 4, "(minClipSigma, maxClipSigma) is (%.2f, %.2f)\n", minClipSigma, maxClipSigma); … … 1820 1848 } 1821 1849 1822 psTrace("psLib.math", 6, "Median is %f\n", stats->sampleMedian); 1823 psTrace("psLib.math", 6, "Stdev is %f\n", stats->sampleStdev); 1824 psF32 minClipValue = -minClipSigma*stats->sampleStdev; 1825 psF32 maxClipValue = +maxClipSigma*stats->sampleStdev; 1850 # if (USE_ROBUST_STATS_FOR_CLIPPING) 1851 psTrace("psLib.math", 5, "Median is %f\n", stats->robustMedian); 1852 psTrace("psLib.math", 5, "Stdev is %f\n", stats->robustStdev); 1853 psF32 minClipValue = -minClipSigma*stats->robustStdev; 1854 psF32 maxClipValue = +maxClipSigma*stats->robustStdev; 1855 psF32 clipMedian = stats->robustMedian; 1856 # else 1857 1858 psTrace("psLib.math", 5, "Median is %f\n", stats->sampleMedian); 1859 psTrace("psLib.math", 5, "Stdev is %f\n", stats->sampleStdev); 1860 psF32 minClipValue = -minClipSigma*stats->robustStdev; 1861 psF32 maxClipValue = +maxClipSigma*stats->robustStdev; 1862 psF32 clipMedian = stats->sampleMedian; 1863 # endif 1826 1864 1827 1865 // set mask if pts are not valid … … 1833 1871 } 1834 1872 1835 if ((resid->data.F64[i] - stats->sampleMedian > maxClipValue) || 1836 (resid->data.F64[i] - stats->sampleMedian < minClipValue)) { 1873 if ((resid->data.F64[i] - clipMedian > maxClipValue) || (resid->data.F64[i] - clipMedian < minClipValue)) { 1837 1874 if (f->type.type == PS_TYPE_F64) { 1838 1875 psTrace("psLib.math", 6, "Masking element %d (%f). resid->data.F64[%d] is %f\n", … … 2334 2371 // for now, for the SAMPLE_MEDIAN and SAMPLE_STDEV to be used 2335 2372 stats->options |= (PS_STAT_SAMPLE_MEDIAN | PS_STAT_SAMPLE_STDEV); 2373 stats->options |= (PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV); 2336 2374 psTrace("psLib.math", 4, "stats->clipIter is %d\n", stats->clipIter); 2337 2375 psTrace("psLib.math", 4, "(minClipSigma, maxClipSigma) is (%.2f, %.2f)\n", minClipSigma, maxClipSigma); … … 2388 2426 return(NULL); 2389 2427 } 2390 psTrace("psLib.math", 6, "Median is %f\n", stats->sampleMedian); 2391 psTrace("psLib.math", 6, "Stdev is %f\n", stats->sampleStdev); 2392 psF32 minClipValue = -minClipSigma*stats->sampleStdev; 2393 psF32 maxClipValue = +maxClipSigma*stats->sampleStdev; 2428 # if (USE_ROBUST_STATS_FOR_CLIPPING) 2429 psTrace("psLib.math", 5, "Median is %f\n", stats->robustMedian); 2430 psTrace("psLib.math", 5, "Stdev is %f\n", stats->robustStdev); 2431 psF32 minClipValue = -minClipSigma*stats->robustStdev; 2432 psF32 maxClipValue = +maxClipSigma*stats->robustStdev; 2433 psF32 clipMedian = stats->robustMedian; 2434 # else 2435 2436 psTrace("psLib.math", 5, "Median is %f\n", stats->sampleMedian); 2437 psTrace("psLib.math", 5, "Stdev is %f\n", stats->sampleStdev); 2438 psF32 minClipValue = -minClipSigma*stats->robustStdev; 2439 psF32 maxClipValue = +maxClipSigma*stats->robustStdev; 2440 psF32 clipMedian = stats->sampleMedian; 2441 # endif 2394 2442 2395 2443 // set mask if pts are not valid … … 2401 2449 } 2402 2450 2403 if ((resid->data.F64[i] - stats->sampleMedian > maxClipValue) || 2404 (resid->data.F64[i] - stats->sampleMedian < minClipValue)) { 2451 if ((resid->data.F64[i] - clipMedian > maxClipValue) || (resid->data.F64[i] - clipMedian < minClipValue)) { 2405 2452 if (f->type.type == PS_TYPE_F64) { 2406 2453 psTrace("psLib.math", 6, "Masking element %d (%f). resid->data.F64[%d] is %f\n",
Note:
See TracChangeset
for help on using the changeset viewer.
