Changeset 30550 for trunk/psModules/src/detrend/pmFringeStats.c
- Timestamp:
- Feb 9, 2011, 4:28:33 PM (15 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/detrend/pmFringeStats.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/detrend/pmFringeStats.c
r25930 r30550 1008 1008 } 1009 1009 } 1010 // Allocate array of vectors to hold data. 1011 psArray *bins = psArrayAlloc(4000); 1012 for (int j = 0; j < bins->n; j++) { 1013 bins->data[j] = psVectorAllocEmpty(1,PS_TYPE_F32); 1014 // psVector *v = psVectorAllocEmpty(1,PS_TYPE_F32); 1015 // bins = psArrayAdd(bins,1,v); 1016 } 1017 1018 // Fill vectors 1019 pmFringeStats *fringe = fringes->data[0]; 1020 for (int j = 0; j < numRegions; j++) { 1021 if (mask->data.PS_TYPE_VECTOR_MASK_DATA[j] == 0) { 1022 int array_bin = (int) ((fringe->f->data.F32[j] - -0.1) / 5e-5); 1023 psVector *bin = bins->data[array_bin]; 1024 psVectorAppend(bin,science->f->data.F32[j]); 1025 } 1026 } 1010 1027 1028 psVector *fringe_positions = psVectorAllocEmpty(4000,PS_TYPE_F32); 1029 psVector *science_values = psVectorAllocEmpty(4000,PS_TYPE_F32); 1030 psVector *science_errors = psVectorAllocEmpty(4000,PS_TYPE_F32); 1031 1032 psStats *binStats = psStatsAlloc(PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV); 1033 for (int i = 0; i < 4000; i++) { 1034 psVector *bin = bins->data[i]; 1035 if (bin->n > 2) { 1036 psStatsInit(binStats); 1037 1038 psVectorStats(binStats,bin,NULL,NULL,1); 1039 1040 if (isfinite(binStats->robustStdev) && 1041 isfinite(binStats->robustMedian) && 1042 binStats->robustStdev > 0) { 1043 psVectorAppend(fringe_positions,-0.1 + i * 5e-5); 1044 psVectorAppend(science_values, binStats->robustMedian); 1045 psVectorAppend(science_errors, binStats->robustStdev); 1046 } 1047 } 1048 psFree(bins->data[i]); 1049 } 1050 psFree(bins); 1051 psFree(binStats); 1052 1053 for (int i = 0; i < fringe_positions->n; i++) { 1054 psTrace("psModules.detrend",7,"FITDATA: %f %f %f\n", 1055 fringe_positions->data.F32[i], 1056 science_values->data.F32[i], 1057 science_errors->data.F32[i]); 1058 } 1011 1059 /* // Begin switch from old outlier removal and fitting code. */ 1012 1060 1013 1061 psPolynomial1D *poly = psPolynomial1DAlloc(PS_POLYNOMIAL_ORD, 1); 1014 1062 1015 pmFringeStats *fringe = fringes->data[0]; 1016 psVector *errors = psVectorAlloc(science->df->n,PS_TYPE_F32); 1017 for (int j = 0; j < errors->n; j++) { 1018 errors->data.F32[j] = 1 / science->df->data.F32[j]; 1019 } 1020 psVectorFitPolynomial1D(poly,mask,0xff,science->f,errors,fringe->f); 1021 1063 // pmFringeStats *fringe = fringes->data[0]; 1064 /* psVector *errors = psVectorAlloc(science->df->n,PS_TYPE_F32); */ 1065 /* for (int j = 0; j < errors->n; j++) { */ 1066 /* errors->data.F32[j] = 1 / science->df->data.F32[j]; */ 1067 /* } */ 1068 /* psVectorFitPolynomial1D(poly,mask,0xff,science->f,errors,fringe->f); */ 1069 psVectorFitPolynomial1D(poly,NULL,0xff,science_values,science_errors,fringe_positions); 1070 psFree(fringe_positions); 1071 psFree(science_values); 1072 psFree(science_errors); 1073 1022 1074 for (int i = 0; i <= poly->nX; i++) { 1023 1075 scale->coeff->data.F32[i] = poly->coeff[i]; … … 1027 1079 psFree(poly); 1028 1080 // psFree(fringe); 1029 psFree(errors);1081 // psFree(errors); 1030 1082 1031 1083 psFree(median);
Note:
See TracChangeset
for help on using the changeset viewer.
