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

📄 test4.c

📁 VC程序实现数据的自适应滤波
💻 C
字号:
#include"stdio.h"
#include"math.h"

#include"lms.c"
double uniform(double a,double b,long int *seed)
{
	double t;
	*seed=2045*(*seed)+1;
	*seed=*seed-(*seed/1048576)*1048576;
	t=(*seed)/1048576.0;
	t=a+(b-a)*t;
	return(t);
}

double gauss(double mean,double sigma,long int *s)
{
	int i;double x,y;
	double uniform();
	for(x=0,i=0;i<12;i++)
		x+=uniform(0.0,1.0,s);
	x=x-6.0;
	y=mean+x*sigma;
	return(y);
}

void lms(double x[],double d[],double y[],int n,double w[],int m,double mu)
{
	int i,k;double e;
	for(i=0;i<m;i++)
	{w[i] = 0.0;}
	for(k=0;k<m;k++)
	{
		y[k]=0.0;
    	for(i=0;i<=k;i++)
		{y[k]+=x[k-i]*w[i];}
	    e=d[k]-y[k];
		for(i=0;i<=k;i++)
		{w[i]+=2.0*mu*e*x[k-i];}
	}
	for(k=m;k<n;k++)
	{
		y[k]=0.0;
		for(i=0;i<m;i++)
		{y[k]+=x[k-i]*w[i];}
		e=d[k]-y[k];
		for(i=0;i<m;i++)
		{ w[i]+=2.0*mu*e*x[k-i];}
	}

}

void filter1()
{
    double a1=1,a2=-0.649407593197511,        //butter(1,2.2/150)
    b1=0.175296203401245,b2=0.175296203401245;
	x[1]=x[2];
	y[1]=y[2];
	x[2]=data[2];
	y[2]=b1*x[2]+b2*x[1]-a2*y[1];
	data[3]=y[2];

}
void main()
{
	long int i,i1,m,n;
	long seed;double mu,pi,mean,sigma;
	static float d[37852],x[501],y[501],w[50],d2[37852],weight[37852],weight1[37852];
    static	float zz[37852],d1[37852];
	static int  biaozhi=0;
//	CString str;
	FILE *fp;
	//FILE *fp1;
	pi=4.0*atan(1.0);
	mean =0.0;
	sigma = 1.0;
	seed = 13579;
	n=501;
//	str="temperature";
	 fp=fopen("temperature.txt","r");
 // for(i=0;i<4;i++)
	 i=0;
   while(fscanf(fp,"%f",&zz[i])!=EOF) //打开数据到zz数组;
     i++;
    fclose(fp);
	for(i=0;i<37851;i++)
	{d[i]=zz[i];}
	/*for(i=0;i<n;i++)
	{
		d[i]=sqrt(2.0)*sin(2*pi*i/20.0);
        d[i]+=gauss(mean,sigma,&seed);	
	}*/
	for(i=9;i<37851;i++)
	{
		for(i1=1;i1<10;i1++)
		{
			d[i]+=d[i-i1];
		}
		d[i]=d[i]/10;

	}


	fp=fopen("differece_temperature.txt","w");
	for(i=1;i<37850;i++)
	//{fprintf(fp,"%d %f\n",i,y[i]);}
	{   
		if(i%20==0)
		{fprintf(fp," %f ",d1[i]);}
	}
	fclose(fp);


	fp=fopen("weight.txt","r");
 // for(i=0;i<4;i++)
	 i=0;
   while(fscanf(fp,"%f",&zz[i])!=EOF) //打开数据到zz数组;
     i++;
    fclose(fp);
	for(i=0;i<37851;i++)
	{weight[i]=zz[i];}

	for(i=9;i<37851;i++)
	{
		for(i1=1;i1<10;i1++)
		{
			weight[i]+=weight[i-i1];
		}
		weight[i]=weight[i]/10;

	}
    for(i=1;i<37000;i++)
	{
		if(i%20==0)
		{
			d1[i]=d[i]-d[i-20];	
		    if(fabs(d1[i])>=0.1)
			{
				biaozhi=2;
			}
			else if(fabs(d1[i])<0.1&&fabs(d1[i])>=0.07)
			{
				biaozhi=1;
			}
			else if(fabs(d1[i])<0.07)
			{
				biaozhi=0;
			}
			printf("%d \n",biaozhi);
			//printf("%f \n",fabs(d1[i]));
		}
		if(biaozhi==0)
		{
			weight1[i]=weight[i+285];
		}
		else if(biaozhi==1)
		{
			weight1[i]=weight[i+300];
		}
		else if(biaozhi==2)
		{
			weight1[i]=weight[i+350];
		}
		
	}
/*	for(i=1;i<37850;i++)
	{
		if(i%20==0)
		{d1[i]=d[i]-d[i-20];}
		
	}*/
	fp=fopen("different_weight.txt","w");
	for(i=1;i<37000;i++)
	//{fprintf(fp,"%d %f\n",i,y[i]);}
	{ 
		//if(i%20==0)
		{	fprintf(fp," %f ",weight1[i]);}
	}
	fclose(fp);

	


}





⌨️ 快捷键说明

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