|
|
#pragma once
|
|
|
|
|
|
#include "iWxPfModel.h"
|
|
|
|
|
|
class zxAlgRegress;
|
|
|
class M_GUI_ANAL_EXPORT iWxPfModelFit : public iWxPfModel
|
|
|
{
|
|
|
Q_OBJECT
|
|
|
|
|
|
public:
|
|
|
|
|
|
explicit iWxPfModelFit(QString sPfModelName, QWidget *parent = 0);
|
|
|
~iWxPfModelFit();
|
|
|
|
|
|
// 外部调用
|
|
|
virtual void initUI();
|
|
|
|
|
|
protected:
|
|
|
|
|
|
// 初始化
|
|
|
virtual void initUI_Tops();
|
|
|
|
|
|
// 拟合相关设置的初始化
|
|
|
void _changeFitOptions();
|
|
|
bool _getCurrentFitOptions(DataFittingType& oType, int& nOrder);
|
|
|
|
|
|
// 表达式
|
|
|
QString _getCurrentDefaultExpr();
|
|
|
QString _getDefaultExprOf(DataFittingType oType, int nOrder);
|
|
|
void _freshExpr(QString s);
|
|
|
|
|
|
protected slots:
|
|
|
|
|
|
// 拟合控件
|
|
|
virtual void slotFitTypeChanged(int index);
|
|
|
virtual void slotOrderChanged(int arg1);
|
|
|
|
|
|
// 拟合
|
|
|
virtual void on_btnRunFit_clicked();
|
|
|
|
|
|
protected:
|
|
|
|
|
|
/// @brief 表格及图形刷新,其实就是 freshChartByTableChange
|
|
|
virtual void refreshByTopFitOptions();
|
|
|
|
|
|
/// @brief 调整后的数据进行绘图/拟合等相关操作
|
|
|
/// @note vvecRaw表格中原始数据
|
|
|
/// @note vvecProcessed为调整后数据,组织形式仍然是表格 getData 返回的形式
|
|
|
virtual void refreshChart(const VVecVariant& vvecRaw, const VVecVariant& vvecProcessed);
|
|
|
|
|
|
// 添加拟合曲线
|
|
|
virtual bool _appendFitCurve(const VecDouble& vecX, \
|
|
|
const VecDouble& vecY, \
|
|
|
iDefineChartCurve* pDC, \
|
|
|
iGuiPlot* pWxPlot);
|
|
|
|
|
|
protected:
|
|
|
|
|
|
// 拟合过程封装
|
|
|
virtual bool _runAlgFit(const VVecVariant& vvec, VecDouble& vecX, VecDouble& vecY);
|
|
|
void _makesureAlg(DataFittingType oType, int nOrder, bool bForceReset = true);
|
|
|
bool _getDefaultFitRsBy(const VVecVariant& vvec, \
|
|
|
VecDouble& x, VecDouble& y, \
|
|
|
bool bScaled = true);
|
|
|
|
|
|
/// @brief 创建算法对象之后,可以进行约束设定
|
|
|
virtual void _restrainCurentAlg(zxAlgRegress* pAlg);
|
|
|
|
|
|
// 清除内容,状态
|
|
|
void clearAlg();
|
|
|
|
|
|
protected:
|
|
|
|
|
|
/// @brief 计算结果并且组织成文本形式
|
|
|
void _calAndOrgaParaRsts();
|
|
|
|
|
|
/// @brief 具体的结果组织,注意,键值如果配置,则自动,否则则走默认
|
|
|
virtual bool _calModelParaRsts(QMap<QString, double>& mapParas);
|
|
|
|
|
|
/// @brief 组织参数形式
|
|
|
virtual QString _orgaParaOf(QString sPara, double d);
|
|
|
|
|
|
/// @brief 结果刷新
|
|
|
void _freshParaRsts(QString s);
|
|
|
|
|
|
protected:
|
|
|
|
|
|
zxAlgRegress* m_pAlg;
|
|
|
|
|
|
QString m_sParaRsts;
|
|
|
};
|