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