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

📄 ff.cpp

📁 用DSP实现最小二乘法。可对测量得到的数据进行处理
💻 CPP
字号:
#include <stdio.h>
#include <math.h>
#define N 3906        //采样周期
#define NNN 78
#define M 200        //存储数据总数
#define PI 3.14159
#define NN 1000    //余弦表个数
double cos_tab[NN];   //余弦表
double arccos(double a);



void main()
{
int n;
double a1,a2,a3,b1,a,f1,f3;
double x[N],y[N],u[N];
f1=f3=0;
for(n=0;n<N;n++)
{
	u[n]=0.5+cos(2*PI*n/78)+0.5*cos(3*2*n*PI/78)+0.11*sin(2*2*n*PI/78);
 }
for(n=0;n<M;n++)       //构造x,y
{
	x[n]=2*u[n+1];
    y[n]=u[n]+u[n+2];
}
for(n=0;n<NNN;n++)        //最小二乘法
{
	a1=a2=a3=b1=0;
	a1=a1+x[n];
	a2=a2+y[n];
	a3=a3+x[n]*y[n];
	b1=b1+x[n]*x[n];
	}
//for(i=0;i<=10;i++)
{
	a=(NNN*a3-a1*a2)/(NNN*b1-a1*a1);
//a=i*0.1;
f1=acos(a);

f3=PI/2-a-1/6*a*a*a-3/40*a*a*a*a*a-5/112*a*a*a*a*a*a*a-245/8064*a*a*a*a*a*a*a*a*a-63/2816*a*a*a*a*a*a*a*a*a*a*a;

printf("%f,%f,%f,%f\n",a,f1,arccos(a),f3);
}
}


/////////////////////////////////////////


double arccos(double l)             //混合法,但在算arccos增量时没法实现
{
int i,index;
double y2;
y2=0;
for(i=0;i<NN;i++)
{
	cos_tab[i]=cos(PI*i/NN);
}

for(index=0;index<NN;index++)
{   
	if ((l<=cos_tab[index])&&(l>=cos_tab[index+1]))
	   {
      y2=(index+(l-cos_tab[index])/(cos_tab[index+1]-cos_tab[index]))*(PI/NN);
	   }
}
return(y2);
}

//////////////////////递归计算n!的函数rfact()
//long rfact(int n)
//{
// if (n<0)
// {
// printf("Negative argument to fact!\n");
//exit(-1);
// }
 //else if(n<=1)
//	 return(1);
// else 
//	 return(n*rfact(n-1));                   /*自己调用自己*/
//}

⌨️ 快捷键说明

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