移动平均算法修改,谢谢了
就高手帮我看看下面的程序。原始程序是这样的,比如计算结果(X1+X2+..Xn)/n,想改成aX1+bX2...+nX4,其中a+b+...+n=1, 所以分母没有了。在线等,感谢感谢#include<stdio.h>
#include<stdlib.h>
double movingAverage(double * data,double NewData,int N);
int main()
{
int N,i=0;
double *data;
double NewData,average;
printf("滑动点数N:");
scanf("%d",&N);
data=(double *) malloc (sizeof (double) *N);
printf("输入y1-yn 的N个值(输入每个后按回车):");
for(i=0;i<N;i++)
scanf("%lf",&data[i]);
for(i=0;i<N;i++)
printf("y%d=%.2lf\n",i,data[i]);
NewData=data[N-1];//将初始数组往右移动一个,将数组最后元素作为新元素
for(i=N-1;i>0;i--)
data[i]=data[i-1];
i=0;
do
{
average= movingAverage(data,NewData,N);
printf("y%d=%.2lf\n",N+i,average);
NewData=average;
}while(i++<10);//计算了10次移动平均数
getchar();
getchar();
return 0;
}
double movingAverage(double * data,double NewData,int N)
{
int i=0;
double sum=0.0,average=0.0;
/*数组整体向左移动,去除数组第一个值*/
for(i=0;i<N-1;i++)
{
data[i]=data[i+1];
sum+=data[i];
}
data[i]=NewData;
sum+=NewData;
average=sum/N;
return average;
}