AnalysisSystemForRadionucli.../Fit.h
2024-06-04 15:27:02 +08:00

127 lines
6.2 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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