⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 covar.c

📁 用协方差方法估计AR模型参数
💻 C
字号:
#include<stdlib.h>
void covar(double x[],int n,int p,double a[],double *v,int mode)
{
	int i,j,k,m;
	double cc,sum,*c;
	c=(double *)malloc((p*(p+1)/2)*sizeof(double));
	m=0;
	for(k=1;k<=p;k++)
		for(j=1;j<=k;j++)
		{
			c[m]=0.0;
			for(i=p;i<n;i++)
			{c[m]+=x[i-j]*x[i-k];}
			if(mode==1)
			{
				for(i=0;i<(n-p);i++)
				{c[m]+=x[i+j]*x[i+k];}
			}
			m=m+1;
		}
		for(j=1;j<=p;j++)
		{
			a[j-1]=0.0;
			for(i=p;i<n;i++)
			{a[j-1]-=x[i-j]*x[i];}
			if(mode==1)
			{
				for(i=0;i<(n-p);i++)
				{a[j-1]-=x[i+j]*x[i];}
			}
		}
		cholesky(c,a,p);              //cholesky函数参见cholesky.rar
		for(k=(p-1);k>=0;k--)
		{a[k+1]=a[k];}
		a[0]=1.0;
		sum=0.0;
		for(k=0;k<=p;k++)
		{
			cc=0.0;
			for(i=p;i<n;i++)
			{cc+=x[i]*x[i-k];}
			if(mode==1)
			{
				for(i=0;i<(n-p);i++)
				{cc+=x[i]*x[i+k];}
			}
			if(k==0)
			{sum+=cc;}
			else
			{sum+=cc*a[k];}
		}
		if(mode==1)
		{v[0]=sum/(2*(n-p));}
		else
		{v[0]=sum/(n-p);}
		free(c);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -