SmoothFilter.h
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
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef SMOOTHFILTER_H
00030 #define SMOOTHFILTER_H
00031
00032 #include "Filter.h"
00033
00034 class SmoothFilter : public Filter
00035 {
00036 Q_OBJECT
00037
00038 public:
00039 SmoothFilter(ApplicationWindow *parent, QwtPlotCurve *c, int m = 3);
00040 SmoothFilter(ApplicationWindow *parent, QwtPlotCurve *c, double start, double end, int m = 3);
00041 SmoothFilter(ApplicationWindow *parent, Graph *g, const QString& curveTitle, int m = 3);
00042 SmoothFilter(ApplicationWindow *parent, Graph *g, const QString& curveTitle, double start, double end, int m = 3);
00043 SmoothFilter(ApplicationWindow *parent, Table *t, const QString& xCol, const QString& yCol, int start = 0, int end = -1, int m = 3);
00044
00045 enum SmoothMethod{SavitzkyGolay = 1, FFT = 2, Average = 3, Lowess = 4};
00046
00047 int method(){return (int)d_method;};
00048 void setMethod(int m);
00049
00050 void setSmoothPoints(int points, int left_points = 0);
00052 void setPolynomOrder(int order);
00053 void setLowessParameter(double f, int iterations);
00054
00055 private:
00056 void init(int m);
00057 void calculateOutputData(double *x, double *y);
00058 void smoothFFT(double *x, double *y);
00059 void smoothAverage(double *x, double *y);
00060 void smoothSavGol(double *x, double *y);
00061 void smoothLowess(double *x, double *y);
00062
00064 SmoothMethod d_method;
00065
00067 int d_smooth_points;
00068
00070 int d_sav_gol_points;
00071
00073 int d_polynom_order;
00074
00076 double d_f;
00077
00079 int d_iterations;
00080 };
00081
00082 #endif