Doxygen Source Code Documentation
        
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search   
model_beta.c
Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006    
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 #include <math.h>
00020 #include "NLfit_model.h"
00021 
00022 void signal_model 
00023 (
00024   float * gs,                
00025   int ts_length,             
00026   float ** x_array,          
00027   float * ts_array             
00028 );
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 DEFINE_MODEL_PROTOTYPE
00039 
00040 MODEL_interface * initialize_model ()
00041 {
00042   MODEL_interface * mi = NULL;
00043 
00044 
00045   
00046   mi = (MODEL_interface *) XtMalloc (sizeof(MODEL_interface));
00047 
00048 
00049      
00050 
00051   
00052   strcpy (mi->label, "Beta");
00053 
00054   
00055   mi->model_type = MODEL_SIGNAL_TYPE;
00056 
00057   
00058   mi->params = 5;
00059 
00060   
00061   strcpy (mi->plabel[0], "t0");
00062   strcpy (mi->plabel[1], "tf");
00063   strcpy (mi->plabel[2], "k");
00064   strcpy (mi->plabel[3], "alpha");
00065   strcpy (mi->plabel[4], "beta");
00066 
00067   
00068   mi->min_constr[0] =    27.0;    mi->max_constr[0] =    77.0;
00069   mi->min_constr[1] =    78.0;    mi->max_constr[1] =   250.0;
00070   mi->min_constr[2] = -5000.0;    mi->max_constr[2] =  5000.0;
00071   mi->min_constr[3] =    0.00;    mi->max_constr[3] =    10.0;
00072   mi->min_constr[4] =    0.00;    mi->max_constr[4] =    10.0;
00073   
00074   
00075   mi->call_func = &signal_model;
00076 
00077 
00078   
00079   return (mi);
00080 }
00081 
00082 
00083 
00084 
00085 
00086 
00087 
00088 
00089 
00090 
00091 
00092 
00093 
00094 
00095 
00096 
00097 
00098 void signal_model 
00099 (
00100   float * gs,                
00101   int ts_length,             
00102   float ** x_array,          
00103   float * ts_array             
00104 )
00105 
00106 {
00107   int it;                                
00108   float t;                          
00109   float fval;                         
00110   float x;                          
00111   float t0, tf, k, alpha, beta;     
00112 
00113 
00114   t0 = gs[0];
00115   tf = gs[1];
00116   k  = gs[2];
00117   alpha = gs[3];
00118   beta  = gs[4];
00119 
00120   for (it = 0;  it < ts_length;  it++)
00121     {
00122       t = x_array[it][1];
00123       if ((t <= t0) || (t >= tf) || (t0 >= tf))
00124         fval = 0.0;
00125       else
00126         {
00127           x = (t - t0) / (tf - t0);
00128           fval = k * exp((alpha-1.0)*log(x)) * exp((beta-1.0)*log(1.0-x));
00129         }
00130       ts_array[it] = fval;
00131     }
00132 }
00133   
00134 
00135 
00136 
00137 
00138