IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 39086 for trunk


Ignore:
Timestamp:
Nov 9, 2015, 2:46:18 PM (11 years ago)
Author:
watersc1
Message:

Working version of IRLS proper motion fitting.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/cmd.astro/fitpm_irls.c

    r38650 r39086  
    1919int FitPMonly_IRLS (PMFit_IRLS *fit, double *X, double *dX, double *Y, double *dY, double *T, int Npts, int VERBOSE);
    2020int IRLS_converged (PMFit_IRLS *fit);
     21int weighted_LS (double *T, double *X, double *WX, double *Y, double *WY, int Npts,
     22                 double **A, double **B, int VERBOSE);
     23double weight_cauchy (double x);
     24double dpsi_cauchy (double x);
     25double MAD(double *in, int N);
     26     
    2127
    2228int fitpm_irls (int argc, char **argv) {
     
    161167int FitPMonly_IRLS (PMFit_IRLS *fit, double *X, double *dX, double *Y, double *dY, double *T, int Npts, int VERBOSE) {
    162168
    163   int i;
     169  int i,j;
    164170
    165171  static double **A, **B;
     
    171177  double *Beta, *Beta_prev;
    172178 
    173   double sigma_robust, sigma_ols, sigma_final, sigma_hat;
     179  double sigma_ols, sigma_hat;
    174180  double *Wx, *Wy;
    175181  double *rx, *ry;
    176   double *ux, *uy;
     182  //  double *ux, *uy;
     183  double *u;
    177184  int dof = 2 * Npts - 4;
    178185  int p   = 4;
    179186  int n   = 2 * Npts;
    180187  double tolerance;
    181   int convergence;
     188  int converged;
    182189  int iterations;
    183190 
     
    324331  by /= 1.0 * (Npts - p);
    325332 
    326   sigma_robust_x = lamba * sqrt(bx) * sigma_hat * 2.385 / ax;
    327   sigma_robust_y = lamba * sqrt(by) * sigma_hat * 2.385 / ay;
     333  sigma_robust_x = lambda * sqrt(bx) * sigma_hat * 2.385 / ax;
     334  sigma_robust_y = lambda * sqrt(by) * sigma_hat * 2.385 / ay;
    328335
    329336  // This is actually sigma^2, as that's the factor in the covariance (dumouchel 4.1)
    330   sigma_final_x  = fmax(SQ(sigma_robust_x), (n * SQ(sigma_robust_x) + SQ(p * sigma_OLS)) / (n + SQ(p)));
    331   sigma_final_y  = fmax(SQ(sigma_robust_y), (n * SQ(sigma_robust_y) + SQ(p * sigma_OLS)) / (n + SQ(p)));
     337  sigma_final_x  = MAX(SQ(sigma_robust_x), (n * SQ(sigma_robust_x) + SQ(p * sigma_ols)) / (n + SQ(p)));
     338  sigma_final_y  = MAX(SQ(sigma_robust_y), (n * SQ(sigma_robust_y) + SQ(p * sigma_ols)) / (n + SQ(p)));
    332339
    333340  for (i = 0; i < 4; i++) {
     
    337344        Cov[i][j] *= sigma_final_x;
    338345      }
    339       elsif ((i > 1)&&(j > 1)) { // Lower portion
     346      else if ((i > 1)&&(j > 1)) { // Lower portion
    340347        Cov[i][j] *= sigma_final_y;
    341348      }
     
    475482    if (VERBOSE) fprintf (stderr, "error in fit\n");
    476483    if (VERBOSE == 2) {
    477       int j;
    478484      for (i = 0; i < 4; i++) {
    479485        for (j = 0; j < 4; j++) {
Note: See TracChangeset for help on using the changeset viewer.