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, QwtPlotCurve *c, int order = 2, bool legend = false);
00040 PolynomialFit(ApplicationWindow *parent, QwtPlotCurve *c, double start, double end, int order = 2, bool legend = false);
00041 PolynomialFit(ApplicationWindow *parent, Graph *g, int order = 2, bool legend = false);
00042 PolynomialFit(ApplicationWindow *parent, Graph *g, QString& curveTitle, int order = 2, bool legend = false);
00043 PolynomialFit(ApplicationWindow *parent, Graph *g, QString& curveTitle, double start, double end, int order = 2, bool legend = false);
00044 PolynomialFit(ApplicationWindow *parent, Table *t, const QString& xCol, const QString& yCol, int startRow = 1, int endRow = -1, int order = 2, bool legend = false);
00045
00046 virtual QString legendInfo();
00047 void fit();
00048
00049 int order(){return d_order;};
00050 void setOrder(int order);
00051
00052 static QString generateFormula(int order);
00053 static QStringList generateParameterList(int order);
00054
00055 virtual double eval(double *par, double x);
00056
00057 private:
00058 void init();
00059 void calculateFitCurveData(double *X, double *Y);
00060
00061 int d_order;
00062 bool show_legend;
00063 };
00064
00065 class LinearFit : public Fit
00066 {
00067 Q_OBJECT
00068
00069 public:
00070 LinearFit(ApplicationWindow *parent, Graph *g);
00071 LinearFit(ApplicationWindow *parent, QwtPlotCurve *c);
00072 LinearFit(ApplicationWindow *parent, QwtPlotCurve *c, double start, double end);
00073 LinearFit(ApplicationWindow *parent, Graph *g, const QString& curveTitle);
00074 LinearFit(ApplicationWindow *parent, Graph *g, const QString& curveTitle, double start, double end);
00075 LinearFit(ApplicationWindow *parent, Table *t, const QString& xCol, const QString& yCol, int startRow = 1, int endRow = -1);
00076
00077 void fit();
00078 virtual double eval(double *par, double x){return par[0] + par[1]*x;};
00079
00080 private:
00081 void init();
00082 void calculateFitCurveData(double *X, double *Y);
00083 };
00084
00085 class LinearSlopeFit : public Fit
00086 {
00087 Q_OBJECT
00088
00089 public:
00090 LinearSlopeFit(ApplicationWindow *parent, Graph *g);
00091 LinearSlopeFit(ApplicationWindow *parent, Graph *g, const QString& curveTitle);
00092 LinearSlopeFit(ApplicationWindow *parent, Graph *g, const QString& curveTitle, double start, double end);
00093 LinearSlopeFit(ApplicationWindow *parent, Table *t, const QString& xCol, const QString& yCol, int startRow = 1, int endRow = -1);
00094
00095 void fit();
00096 virtual double eval(double *par, double x){return par[0]*x;};
00097
00098 private:
00099 void init();
00100 void calculateFitCurveData(double *X, double *Y);
00101 };
00102 #endif