📄 spine.h
字号:
// Spine.h: interface for the CSpine class.
//
///////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////
//样条类的申明,该类包括三次样条的插值,拟合和B样条的插值,拟和等功能 ///////
//初始输入为n个节点(1,2...,n)的坐标值和数据值 ///////
//注意要调用CMatrix类,请加入Matrix.h头文件 ///////
//参考教材:测量与数据建模
//robinsin设计,2006 ///////
///////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_SPINE_H__692DDE31_D981_42D8_BD27_F5B1DF5AF832__INCLUDED_)
#define AFX_SPINE_H__692DDE31_D981_42D8_BD27_F5B1DF5AF832__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//矩阵头文件
#include"Matrix.h"
class CSpine
{
public:
//
//构造函数和初始函数
//
CSpine();//默认构造函数
CSpine(int nNum,double pTime[],double Data[]);//构造函数,分配内存,
CSpine(const CSpine& other);// 拷贝构造函数
BOOL Init(int nNum);//分配内存
virtual ~CSpine();//析构函数
void SetTime(double Time[]);//设置坐标点
void SetData(double Data[]);//设置坐标点的函数值
double* GetTime() const;
double* GetData() const;
//
//函数操作
//
//B样条插值和拟合有关函数
//--------------------------------------------------------------------------------------
//下面四个函数是B样条拟合的有关函数,参看<测量与数据建模>62页
double BSpineFit(int nParameter,int nType);//B样条拟合函数。返回B样条拟合后的标准误差(核心函数,必须调用)
double* GetBSpineFitPointer() const;//返回B样条拟合后的参数指针.注:使用前请调用 GetBSpineFit函数
double GetBSpineFitValue(double x,int nParameter,int nType) ;//给定一个点,求B样条拟合后给定一个点求值。注:使用前请调用 GetBSpineFit函数,且参数必须一样
double ggBFuction(double x,int nType);//内部函数,计算nType-1次(即nType阶)B样条的值
//------------------------------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------------------
//下面两个函数是有关三次样条插值的函数。参看成礼智的计算方法英文教材148页,本函数参考了作者以前的三次样条函数
double *ThreeSpineInsert(UINT nType,double Border[2]);//三次样条插值函数,可以指定5种不同边界类型,返回参数指针(核心函数,必须调用)
double *GetThreeSpineInsertPointer() const;//返回3次样条插值后的参数指针(4*nNum-4个,每个区间4个参数).注:使用前请调用 ThreeSpineInsert函数
double GetThreeSpineInsertValue(double x) const;//任给一点,求三次样条插值后的值。注:使用前请调用 ThreeSpineInsert函数
//--------------------------------------------------------------------------------------------------
//
public:
//
//初始数据
//
int m_nNum;//初始数据的个数,大于等于4
double* m_pTime;//坐标点的位置,如a=t0<t1<t2<...<tn-1=b,(即n=nNum)需要初始指定
double* m_pData;//坐标点的位置的函数值,即f(t0),f(t1),...,f(tn-1),需要初始指定
//
//返回参数的指针
//
double* m_p3SpineInsert;//三次样条插值的返回参数(4*nNum-4),在调用Get3SpineInsert函数时分配内存
double* m_p3SpineFit;//三次样条拟和的返回参数(参数个数需要用户指定)在调用Get3SpineFit函数时分配内存
double* m_pBSpineInsert;//B样条插值的返回参数(nNum+2),在调用GetBSpineInset函数时分配内存
double* m_pBSpineFit;//B样条拟和的返回参数(参数个数需要用户指定)在调用GetBSpineFit函数时分配内存
};
#endif // !defined(AFX_SPINE_H__692DDE31_D981_42D8_BD27_F5B1DF5AF832__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -