You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Include/mAlg/mAlgPseudo/iAlgPseuBase.h

47 lines
1.3 KiB
C

#pragma once
#include "Defines.h"
#include "mAlgPseudo_global.h"
#include "mAlgDefines.h"
#include "mAlgMatrix.h"
// 拟压力相关的通用函数类
class M_ALGPSEUDO_EXPORT iAlgPseuBase
{
public:
iAlgPseuBase();
// 当前是否采用三区模式计算拟压力
static void setPseuMode(int n);
static int getPseuMode();
// 主调用函数,内部自动区分压力还是拟压力
static bool calP(double ps, double &p, int which = -1);
static bool calPS(double p, double &ps, int which = -1);
// 计算“x--->y”的回归曲线方程系数
static bool _fitXtoY(VecDouble vecXs, VecDouble vecYs, VecDouble &vecCoefs, bool isZero = true);
// 计算“y--->x”的回归曲线方程系数(反推)
static bool _fitYtoX(VecDouble vecXs, VecDouble vecYs, VecDouble &vecCoefs, bool isZero = false);
// 计算相关性系数
// vecXs是横坐标vecYs为纵坐标vecCoefs为系数
static bool _calR2(VecDouble vecXs, VecDouble vecYs, VecDouble vecCoefs, double &R2);
// 多项式转换
static bool _calMultiPolyX(double x, double &y, VecDouble vecCoefs);
private:
// 当前是否采用三区模式计算拟压力
// 0常规、1:三区拟压力(白)、2:组分三区拟压力(徐)
static int m_nPseuMode;
};