00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef POLYNOMIALFIT_H
00030 #define POLYNOMIALFIT_H
00031
00032 #include "Fit.h"
00033
00034 class PolynomialFit : public Fit
00035 {
00036 Q_OBJECT
00037
00038 public:
00039 PolynomialFit(ApplicationWindow *parent, Graph *g, int order = 2, bool legend = false);
00040 PolynomialFit(ApplicationWindow *parent, Graph *g, QString& curveTitle, int order = 2, bool legend = false);
00041 PolynomialFit(ApplicationWindow *parent, Graph *g, QString& curveTitle, double start, double end, int order = 2, bool legend = false);
00042 PolynomialFit(ApplicationWindow *parent, Table *t, const QString& xCol, const QString& yCol, int startRow = 1, int endRow = -1, int order = 2, bool legend = false);
00043
00044 virtual QString legendInfo();
00045 void fit();
00046
00047 int order(){return d_order;};
00048 void setOrder(int order);
00049
00050 static QString generateFormula(int order);
00051 static QStringList generateParameterList(int order);
00052
00053 virtual double eval(double *par, double x);
00054
00055 private:
00056 void init();
00057 void calculateFitCurveData(double *X, double *Y);
00058
00059 int d_order;
00060 bool show_legend;
00061 };
00062
00063 class LinearFit : public Fit
00064 {
00065 Q_OBJECT
00066
00067 public:
00068 LinearFit(ApplicationWindow *parent, Graph *g);
00069 LinearFit(ApplicationWindow *parent, Graph *g, const QString& curveTitle);
00070 LinearFit(ApplicationWindow *parent, Graph *g, const QString& curveTitle, double start, double end);
00071 LinearFit(ApplicationWindow *parent, Table *t, const QString& xCol, const QString& yCol, int startRow = 1, int endRow = -1);
00072
00073 void fit();
00074 virtual double eval(double *par, double x){return par[0] + par[1]*x;};
00075
00076 private:
00077 void init();
00078 void calculateFitCurveData(double *X, double *Y);
00079 };
00080
00081 class LinearSlopeFit : public Fit
00082 {
00083 Q_OBJECT
00084
00085 public:
00086 LinearSlopeFit(ApplicationWindow *parent, Graph *g);
00087 LinearSlopeFit(ApplicationWindow *parent, Graph *g, const QString& curveTitle);
00088 LinearSlopeFit(ApplicationWindow *parent, Graph *g, const QString& curveTitle, double start, double end);
00089 LinearSlopeFit(ApplicationWindow *parent, Table *t, const QString& xCol, const QString& yCol, int startRow = 1, int endRow = -1);
00090
00091 void fit();
00092 virtual double eval(double *par, double x){return par[0]*x;};
00093
00094 private:
00095 void init();
00096 void calculateFitCurveData(double *X, double *Y);
00097 };
00098 #endif