Doxygen Source Code Documentation
model_linear.c
Go to the documentation of this file.00001 /***************************************************************************** 00002 Major portions of this software are copyrighted by the Medical College 00003 of Wisconsin, 1994-2000, and are released under the Gnu General Public 00004 License, Version 2. See the file README.Copyright for details. 00005 ******************************************************************************/ 00006 00007 /* 00008 This file contains routines to initialize and implement the 00009 linear trend noise model. 00010 00011 File: model_linear.c 00012 Author: B. Douglas Ward 00013 Date: 29 May 1997 00014 00015 */ 00016 00017 00018 /*---------------------------------------------------------------------------*/ 00019 00020 #include <math.h> 00021 #include "NLfit_model.h" 00022 00023 00024 void noise_model 00025 ( 00026 float * gn, /* parameters for noise model */ 00027 int ts_length, /* length of time series data */ 00028 float ** x_array, /* independent variable matrix */ 00029 float * ts_array /* estimated noise model time series */ 00030 ); 00031 00032 00033 /*---------------------------------------------------------------------------*/ 00034 /* 00035 Routine to initialize the noise model by defining the number of parameters 00036 in the noise model, the name of the noise model, and the default values 00037 for the minimum and maximum parameter constraints. 00038 */ 00039 00040 DEFINE_MODEL_PROTOTYPE 00041 00042 MODEL_interface * initialize_model () 00043 { 00044 MODEL_interface * mi = NULL; 00045 00046 00047 /*----- allocate memory space for model interface -----*/ 00048 mi = (MODEL_interface *) XtMalloc (sizeof(MODEL_interface)); 00049 00050 00051 /*----- define linear plus noise model -----*/ 00052 00053 /*----- name of this model -----*/ 00054 strcpy (mi->label, "Linear"); 00055 00056 /*----- this is a noise model -----*/ 00057 mi->model_type = MODEL_NOISE_TYPE; 00058 00059 /*----- number of parameters in the model -----*/ 00060 mi->params = 2; 00061 00062 /*----- parameter labels -----*/ 00063 strcpy (mi->plabel[0], "constant"); 00064 strcpy (mi->plabel[1], "linear"); 00065 00066 /*----- minimum and maximum parameter constraints -----*/ 00067 mi->min_constr[0] = -100.0; mi->max_constr[0] = 100.0; 00068 mi->min_constr[1] = -1.0; mi->max_constr[1] = 1.0; 00069 00070 /*----- function which implements the model -----*/ 00071 mi->call_func = noise_model; 00072 00073 00074 /*----- return pointer to the model interface -----*/ 00075 return (mi); 00076 } 00077 00078 00079 /*---------------------------------------------------------------------------*/ 00080 /* 00081 Routine to calculate the time series which results from the linear trend 00082 noise model and model parameters. 00083 00084 Definition of model parameters: 00085 00086 gn[0] = constant coefficient 00087 gn[1] = linear coefficient 00088 */ 00089 00090 void noise_model 00091 ( 00092 float * gn, /* parameters for noise model */ 00093 int ts_length, /* length of time series data */ 00094 float ** x_array, /* independent variable matrix */ 00095 float * ts_array /* estimated noise model time series */ 00096 ) 00097 00098 { 00099 int it; /* time index */ 00100 float t; /* time */ 00101 float fval; /* time series value at time t */ 00102 00103 00104 for (it = 0; it < ts_length; it++) 00105 { 00106 t = x_array[it][1]; 00107 fval = gn[0] + gn[1]*t; 00108 ts_array[it] = fval; 00109 } 00110 00111 } 00112