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