16,471
社区成员
发帖
与我相关
我的任务
分享
m_pa=new double[data.m_AryLength/10];
for(int i=0;i<data.m_AryLength/10;i++)
{
data.PIs(); //假设函数中每次都计算得到一个值a,如何将它依次保存在m_pa中?
}
void CQTAView::OnTrendidentification()
{
int nLen = data.m_AryLength/10;
ASSERT(nLen>0);
m_Plsy0=new double[nLen];
m_xAve=new double[nLen];
m_slope=new double[nLen];
data.m_Plsstart=10*m_start;
data.m_Plsend=10*(m_start+1);
data.m_pLsy0 = m_Plsy0;
data.m_pXAve = m_xAve;
data.m_pSlope= m_slope;
for(int m_start=0;m_start<nLen;m_start++)
{
data.PIs(data.m_pNumber,data.m_pDataAry,10*m_start,10*(m_start+1),m_Plsy0,m_xAve,m_slope);
//这个地方应如何添加?
m_Plsy0+=1;
m_xAve+=1;
m_slope+=1;
}
}
void CData::PIs(double xTime[],double yValue[],int m,int n,double* m_pLsy0,double* m_pXAve,double* m_pSlope)
{
//传入时间和变量值
//其中m为作最小二乘的起始点参数,n为作最小二乘的终点值参数
double sxx=0,sxy=0,syy=0; //初始化最小二乘的参数
double av_x=0,av_y=0,y0=0; //初始化最小二乘的参数
m_Plsstart=m,m_Plsend=n; //传入做最小二乘元素起始点,中止点
// double i_slope=0; //初始化直线的斜率
for(int i=m_Plsstart;i<m_Plsend;i++) //计算最小二乘估计均值参数
{
av_x+=xTime[i]/(m_Plsend-m_Plsstart); //计算时间均值
av_y+=yValue[i]/(m_Plsend-m_Plsstart); //计算变量的均值
}
for(int j=m_Plsstart;j<m_Plsend;j++) //计算最小二乘的参数
{
sxx+=(xTime[j]-av_x)*(xTime[j]-av_x); //计算的参数
sxy+=(xTime[j]-av_x)*(yValue[j]-av_y); //计算的参数
}
*m_pSlope=sxy/sxx; //计算拟合曲线的斜率
*m_pLsy0=av_y; //y均值
*m_pXAve=av_x; //x均值
//*m_pSlope,*m_pLsy0,*m_pXAve是我希望返回的值。
//return m_slope; //返回曲线的斜率
return;
}
struct _data
{
double a, b, c;
}
int nLen = data.m_AryLength/10;
ASSERT(nLen>0);
m_pa=new _data[nLen];
for(int i=0;i <nLen;i++)
{
data.PIs(&m_pa[i]->a, &m_pa[i]->b, &m_pa[i]->c);
}
funs data.pis(double *a, double *b, double *c)
{
*a = 1.0f;
*b = 2.0f;
*c = 3.0f;
}
int nLen = data.m_AryLength/10;
ASSERT(nLen>0);
m_pa=new double[nLen];
for(int i=0;i<nLen;i++)
{
m_pa [i] = data.PIs();
}