Home | Develop | Download | Contact
example_regression_fitting.cpp
1
24#include <Pds/Ra>
25
26double Func(const Pds::Vector &x,const Pds::Vector &c)
27{
28 if(c.IsEmpty()) return 0;
29 return c[0]+c[1]*x[0];
30}
31
32Pds::Vector DcFunc(const Pds::Vector &x,const Pds::Vector &c)
33{
34 if(c.IsEmpty()) return Pds::Vector();
35
36 Pds::Vector Dc(c.Nel());
37
38 Dc.SetRaw(0,1.0);
39 Dc.SetRaw(1,x[0]);
40 return Dc;
41}
42
43
44int main(void)
45{
46 unsigned int L=1000;
48 Pds::Vector Y=2*X+1+0.1*Pds::RandN(L,1);
49
50 Pds::Vector Yres;
51
52 Pds::Vector C="-0.3 0.1";
53
54 C.T().Print("C.T():\n");
55 C=Pds::Regression::FitModel(X,Y,Func,DcFunc,C);
56 C.T().Print("C.T():\n");
57
58 Yres=X.OperateRows(Func,C);
59
61 Pds::Octave::Plot::CurveXYXY(X,Y,X,Yres,"testando.m","testando.png");
62
63}
La clase tipo Pds::Matrix . Esta clase genera una matriz de Nlin lineas y Ncol columnas....
Definition: Matrix.hpp:96
La clase tipo Pds::Vector . Esta clase genera una matriz de Nlin lineas y 1 columna....
Definition: Vector.hpp:80
Pds::Matrix RandN(unsigned int N)
Crea una matriz con datos aleatórios con distribución Normal de media cero 0.0 y desvío padrón 1....
Vector LinSpace(double start, double end, unsigned int N)
Retorna un vector con elementos desde start hasta end con N elementos.
Pds::Matrix T(void) const
Transpuesta de si mismo (A), el resultado es cargado en B.
Pds::Matrix OperateRows(double(*func)(const Pds::Matrix &Row)) const
Opera la función func usando como entrada cada fila de la matriz.
bool IsEmpty(void) const
Verifica si la matriz es nula es decir con lineas o columnas cero o arreglo NULL.
unsigned int Nel(void) const
Retorna el número de elementos de la matriz (Nlin x Ncol).
void Print(const std::string &str, unsigned int precision) const
Imprime en pantalla el contenido de la matriz después del texto indicado en str.
bool CurveXYXY(const Pds::Vector &X, const Pds::Vector &Y, const Pds::Vector &Xs, const Pds::Vector &Ys, const std::string &octfilename, const std::string &imgfilename, bool EnableLine=false)
Plot de X vs. Y junto con Xs vs. Ys.
unsigned int MarkerSize
Line width usado en el código octave. Por defecto:
Pds::Vector FitModel(const Pds::Matrix &X, const Pds::Vector &Y, double(*Func)(const Pds::Vector &, const Pds::Vector &), Pds::Vector(*DcFunc)(const Pds::Vector &, const Pds::Vector &), Pds::Vector c0, double Lambda=0.01, double MinError=1.0e-5, unsigned int MaxIter=2048)
Esta función encaja un modelo multidimensional com parametros en un conjunto de muestras .

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed