#ifndef FIT_H #define FIT_H //////////////////////////////////////////////////////////////////////// // 类说明:此类为拟合算法类 // // 注意事项:1、此类包含拟合系数计算 和拟合方程计算 // //////////////////////////////////////////////////////////////////////// #include class CFit { public: ///////////////////////////////////////////////////////////////////// // 函数说明:LinearFit 线性拟合 // 参数说明:_watch_x: 观察值x 数组 // _watch_y: 观察值y 数组 // _outputData: 拟合返回值 // _output_vari:拟合误差值 // // 返回值: true:正确返回 // fale:错误返回 ////////////////////////////////////////////////////////////////////// static bool LinearFit(QVector& _watch_x,QVector& _watch_y,QVector& _outputData,double &_output_vari); // 函数说明:LinearFitEquation 拟合方程:y = int(_fit_para[0]*_watch_x[n..]+_fit_para[1]) // 参数说明:_watch_x: 观察值x 数组 // _fit_para: 二次拟合方程系数 // _output_y: 返回值 // // 返回值: true:正确返回 // fale:错误返 static bool LinearFitEquation(QVector& _watch_x,QVector& _fit_para,QVector& _output_y); static bool LinearFitEquation(QVector& _watch_x,QVector& _fit_para,QVector& _output_y); ///////////////////////////////////////////////////////////////////// // 函数说明:_2PloynimialFit 2次拟合 // 参数说明:_watch_x: 观察值x 数组 // _watch_y: 观察值y 数组 // _outputData: 拟合返回值 // _output_vari:拟合误差值 // // 返回值: true:正确返回 // fale:错误返回 ///////////////////////////////////////////////////////////////////// static bool _2PloynimialFit(QVector& _watch_x,QVector& _watch_y,QVector& _outputData,double &_output_vari); ///////////////////////////////////////////////////////////////////// // 函数说明:_2PloynimialFitEquation 拟合方程:y = int(_fit_para[0]+_fit_para[1]*_watch_x[n..]+_fit_para[2]*_watch_x[n..]*_watch_x[n..]+0.5) // 参数说明:_watch_x: 观察值x 数组 // _fit_para: 二次拟合方程系数 // _output_y: 返回值 // // 返回值: true:正确返回 // fale:错误返回 ///////////////////////////////////////////////////////////////////// static bool _2PloynimialFitEquation(QVector& _watch_x,QVector& _fit_para,QVector& _output_y); ///////////////////////////////////////////////////////////////////// // 函数说明:__3PloynimialFit 3次拟合 // 参数说明:_watch_x: 观察值x 数组 // _watch_y: 观察值y 数组 // _outputData: 拟合返回值 // _output_vari:拟合误差值 // // 返回值: true:正确返回 // fale:错误返回 ///////////////////////////////////////////////////////////////////// /// \brief _3PloynimialFit /// \param _watch_x /// \param _watch_y /// \param _outputData /// \param _output_vari /// \return static bool _2PloynimialFitEquation(QVector& _watch_x,QVector& _fit_para,QVector& _output_y); static bool _3PloynimialFit(QVector& _watch_x,QVector& _watch_y,QVector& _outputData,double &_output_vari); ///////////////////////////////////////////////////////////////////// // 函数说明:__3PloynimialFit 3次拟合方程 // 参数说明:_watch_x: 观察值x 数组 // _watch_y: 观察值y 数组 // _outputData: 拟合返回值 // _output_vari:拟合误差值 // // 返回值: true:正确返回 // fale:错误返回 ///////////////////////////////////////////////////////////////////// static bool _3PloynimialFitEquation(QVector& _watch_x,QVector& _fit_para,QVector& _output_y); static bool _3PloynimialFitEquation(QVector& _watch_x,QVector& _fit_para,QVector& _output_y); ///////////////////////////////////////////////////////////////////// // 函数说明:GaussFit 高斯拟合 // 参数说明:_watch_x: 观察值x 数组 // _watch_y: 观察值y 数组 // _outputData: 拟合返回值 // _output_vari:拟合误差值 // // 返回值: true:正确返回 // fale:错误返回 ///////////////////////////////////////////////////////////////////// static bool GaussFit(QVector& _watch_x,QVector& _watch_y,QVector& _outputData,double &_output_vari); ///////////////////////////////////////////////////////////////////// // 函数说明:GaussFit 高斯拟合方程 // 参数说明:_watch_x: 观察值x 数组 // _watch_y: 观察值y 数组 // _outputData: 拟合返回值 // _output_vari:拟合误差值 // // 返回值: true:正确返回 // fale:错误返回 ///////////////////////////////////////////////////////////////////// static bool GaussFitEquation(QVector& _watch_x,QVector& _fit_para,QVector& _output_y); static bool GaussFitEquation(QVector& _watch_x,QVector& _fit_para,QVector& _output_y); private: ///////////////////////////////////////////////////////////////////// // 函数说明:_ArrayPowerSumAverage 数组数据n次方 和的平均值 空数组返回值为零 // 参数说明:_data: 需要处理的数据 // // 返回值: 输入数组为空时 0 ///////////////////////////////////////////////////////////////////// static double ArrayPowerSumAverage(QVector& _data,int _pow=1); ///////////////////////////////////////////////////////////////////// // 函数说明:_ArrayPowerSumAverage 数组first数据乘以数组sencond数据n次方 和的平均值 // 参数说明:_data: 需要处理的数据 // // 返回值: 输入数组为空时 0 ///////////////////////////////////////////////////////////////////// static double TwoArrayPowerSumAverage(QVector& _first,QVector& _second,int _pow=1); }; #endif