- Timestamp:
- Jan 29, 2010, 6:02:38 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/20091201/psModules/src/imcombine/pmSubtractionEquation.c
r26737 r26739 213 213 214 214 *norm = normI2 / normI1; 215 fprintf(stderr, "Sums: %f %f %f, normWindow: %d\n", normI1, normI2, *norm, normWindow);216 215 217 216 if (mode & PM_SUBTRACTION_EQUATION_NORM) { … … 522 521 523 522 *norm = normI2 / normI1; 524 fprintf(stderr, "Sums: %f %f %f - I1I1: %f\n", normI1, normI2, *norm, sumI1I1);525 523 526 524 if (mode & PM_SUBTRACTION_EQUATION_NORM) { … … 590 588 // Contribution to chi^2: a_i^2 P_i 591 589 psAssert(isfinite(penalties->data.F32[i]), "Invalid penalty"); 592 fprintf (stderr, "penalty main: %d %e vs %e x %f : %f\n",593 index,594 matrix->data.F64[index][index],595 norm, penalties->data.F32[i],596 (norm * penalties->data.F32[i]) / matrix->data.F64[index][index] );597 590 matrix->data.F64[index][index] += norm * penalties->data.F32[i]; 598 591 if (kernels->mode == PM_SUBTRACTION_MODE_DUAL) { 599 fprintf (stderr, "penalty dual: %d %e vs %e x %f : %f\n",600 index + numParams + 2,601 matrix->data.F64[index + numParams + 2][index + numParams + 2],602 norm, penalties->data.F32[i],603 (norm * penalties->data.F32[i]) / matrix->data.F64[index + numParams + 2][index + numParams + 2] );604 592 matrix->data.F64[index + numParams + 2][index + numParams + 2] += norm * penalties->data.F32[i]; 605 593 // matrix[i][i] is ~ (k_i * I_1)(k_i * I_1) … … 997 985 // Solve normalisation and background separately 998 986 int normIndex = PM_SUBTRACTION_INDEX_NORM(kernels); // Index for normalisation 987 int bgIndex = PM_SUBTRACTION_INDEX_BG(kernels); // Index for background 999 988 1000 989 psStats *stats = psStatsAlloc(PS_STAT_ROBUST_MEDIAN); // Statistics for norm … … 1014 1003 1015 1004 fprintf(stderr, "Norm: %lf\n", normValue); 1016 // fprintf(stderr, "BG: %lf\n", bgValue);1017 1005 1018 1006 // Solve kernel components 1019 1007 for (int i = 0; i < numSolution1; i++) { 1020 sumVector->data.F64[i] -= normValue * sumMatrix->data.F64[normIndex][i]; // + bgValue * sumMatrix->data.F64[bgIndex][i];1008 sumVector->data.F64[i] -= normValue * sumMatrix->data.F64[normIndex][i]; 1021 1009 1022 1010 sumMatrix->data.F64[i][normIndex] = 0.0; 1023 1011 sumMatrix->data.F64[normIndex][i] = 0.0; 1024 1025 // sumMatrix->data.F64[i][bgIndex] = 0.0;1026 // sumMatrix->data.F64[bgIndex][i] = 0.0;1027 }1012 } 1013 sumVector->data.F64[bgIndex] -= normValue * sumMatrix->data.F64[normIndex][bgIndex]; 1014 sumMatrix->data.F64[bgIndex][normIndex] = 0.0; 1015 sumMatrix->data.F64[normIndex][bgIndex] = 0.0; 1028 1016 1029 1017 sumMatrix->data.F64[normIndex][normIndex] = 1.0; 1030 // sumMatrix->data.F64[bgIndex][bgIndex] = 1.0;1031 // sumMatrix->data.F64[normIndex][bgIndex] = sumMatrix->data.F64[bgIndex][normIndex] = 0.0;1032 1033 1018 sumVector->data.F64[normIndex] = 0.0; 1034 // sumVector->data.F64[bgIndex] = 0.0;1035 1019 1036 1020 solution = psMatrixSolveSVD(solution, sumMatrix, sumVector, NAN); 1037 1021 1038 1022 solution->data.F64[normIndex] = normValue; 1039 // solution->data.F64[bgIndex] = bgValue;1040 1023 } 1041 1024 # endif 1042 1025 1043 1026 if (!kernels->solution1) { 1044 kernels->solution1 = psVectorAlloc (sumVector->n, PS_TYPE_F64);1045 psVectorInit (kernels->solution1, 0.0);1027 kernels->solution1 = psVectorAlloc(sumVector->n, PS_TYPE_F64); 1028 psVectorInit(kernels->solution1, 0.0); 1046 1029 } 1047 1030 … … 1126 1109 // Solve normalisation and background separately 1127 1110 int normIndex = PM_SUBTRACTION_INDEX_NORM(kernels); // Index for normalisation 1111 int bgIndex = PM_SUBTRACTION_INDEX_BG(kernels); // Index for background 1128 1112 1129 1113 #if 0 … … 1159 1143 1160 1144 double normValue = stats->robustMedian; 1161 // double bgValue = 0.0;1162 1145 1163 1146 psFree(stats); 1164 1147 1165 1148 fprintf(stderr, "Norm: %lf\n", normValue); 1166 // fprintf(stderr, "BG: %lf\n", bgValue);1167 1149 1168 1150 // Solve kernel components 1169 1151 for (int i = 0; i < numSolution2; i++) { 1170 sumVector->data.F64[i] -= normValue * sumMatrix->data.F64[normIndex][i]; // + bgValue * sumMatrix->data.F64[bgIndex][i];1171 sumVector->data.F64[i + numSolution1] -= normValue * sumMatrix->data.F64[normIndex][i + numSolution1]; // + bgValue * sumMatrix->data.F64[bgIndex][i + numSolution1];1152 sumVector->data.F64[i] -= normValue * sumMatrix->data.F64[normIndex][i]; 1153 sumVector->data.F64[i + numSolution1] -= normValue * sumMatrix->data.F64[normIndex][i + numSolution1]; 1172 1154 1173 1155 sumMatrix->data.F64[i][normIndex] = 0.0; 1174 1156 sumMatrix->data.F64[normIndex][i] = 0.0; 1175 1157 1176 // sumMatrix->data.F64[i][bgIndex] = 0.0;1177 // sumMatrix->data.F64[bgIndex][i] = 0.0;1178 1158 sumMatrix->data.F64[i + numSolution1][normIndex] = 0.0; 1179 1159 sumMatrix->data.F64[normIndex][i + numSolution1] = 0.0; 1180 // sumMatrix->data.F64[i + numSolution1][bgIndex] = 0.0; 1181 // sumMatrix->data.F64[bgIndex][i + numSolution1] = 0.0; 1182 } 1160 } 1161 sumVector->data.F64[bgIndex] -= normValue * sumMatrix->data.F64[normIndex][bgIndex]; 1162 sumMatrix->data.F64[bgIndex][normIndex] = 0.0; 1163 sumMatrix->data.F64[normIndex][bgIndex] = 0.0; 1183 1164 1184 1165 sumMatrix->data.F64[normIndex][normIndex] = 1.0; 1185 // sumMatrix->data.F64[bgIndex][bgIndex] = 1.0;1186 // sumMatrix->data.F64[normIndex][bgIndex] = sumMatrix->data.F64[bgIndex][normIndex] = 0.0;1187 1166 1188 1167 sumVector->data.F64[normIndex] = 0.0; 1189 // sumVector->data.F64[bgIndex] = 0.0;1190 1168 1191 1169 solution = psMatrixSolveSVD(solution, sumMatrix, sumVector, NAN); 1192 1170 1193 1171 solution->data.F64[normIndex] = normValue; 1194 // solution->data.F64[bgIndex] = bgValue;1195 1172 } 1196 1173 #endif
Note:
See TracChangeset
for help on using the changeset viewer.
