最小二乘拟合频率.cpp

来自「用DSP实现最小二乘法。可对测量得到的数据进行处理」· C++ 代码 · 共 62 行

CPP
62
字号
#define <stdio.h>
#define <math.h>
#define N 78        //采样周期
#define M 200        //存储数据总数




main()
{
int n,k,i;
double a1,a2,a3,a4,b1,b2,a,f1,f2;
double x[n],y[n];
for(n=0;n<M;n++)       //构造x,y
{
	for(i=0;i<N;i++)
	{
		a[i]=0.5
 }
	x[n]=2u[n+1];
    y[n]=u[n]+u[n+2];
}
for(k=0;k<N;k++)        //最小二乘法
{
	a1=a1+x[n];
	a2=a2+y[n];
	a3=a1*a2;
	a4=a4+x[n]*y[n];
	b1=b1+x[n]*x[n];
	b2=a1*a1;
}
a=(N*a4-a1*a2)/(N*b1-b2);
f1=acos(a);
f2=float arccos(a);
}




/////////////////////////////////////////
//#include "stdio.h"
//#include "math.h"
#define PI 3.14159
//int cos_tab[512]; 
#define NN 1000      //余弦表个数
//void main()
cos_tab[NN];   //余弦表
float arccos(float l)
{
int i,x,index;
float y1;
for(i=0;i<NN;i++)
{
	cos_tab[i]=(int)(32767*cos(2*PI*i/NN));
	//printf("%d",sin_tab[i]);
}
x=l;    //scanf("%d",&x);
index=(int)(256*x/PI);
y1=cos_tab[index]+(256*x/PI-i)(cos_tab[index+1]-cos_tab[index]);
return (y1);   //printf("%d",y);

}

⌨️ 快捷键说明

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