- #include<stdio.h>
- #define N10 //N為要擬合的數(shù)據(jù)的個數(shù)
-
- float X[10] = {1.9,0.8,1.1,0.1,-0.1,4.4,4.6,1.6,5.5,3.4};
- float Y[10] = {0.7,-1.0,-0.2,-1.2,-0.1,3.4,0.0,0.8,3.7,2.0};
- floatK=0; //擬合直線的斜率
- floatR=0; //擬合直線的截距
- float x_sum_average=0; //數(shù)組 X[N] 個元素求和 并求平均值
- float y_sum_average=0; //數(shù)組 Y[N] 個元素求和 并求平均值
- float x_square_sum=0; //數(shù)組 X[N] 個個元素的平均值
- float x_multiply_y=0; //數(shù)組 X[N]和Y[N]對應元素的乘機
- float Squre_sum(float c[N]) ;
- float Sum_Average(float d[N]);
- float X_Y_By(float m[N],float n[N]);
- float Squre_sum(float c[N]);
- void Line_Fit(void);
- void Line_Fit(void)
- {
- x_sum_average= Sum_Average(X);
- y_sum_average= Sum_Average(Y);
- x_square_sum = Squre_sum(X);
- x_multiply_y = X_Y_By(X,Y);
- K = ( x_multiply_y - N * x_sum_average * y_sum_average)/(x_square_sum - N * x_sum_average*x_sum_average );
- R = y_sum_average - K * x_sum_average;
- printf("K = %f\n",K);
- printf("R = %f\n",R);
- }
-
- float Sum_Average(float d[N])
- {
- unsigned int i=0;
- float z=0;
- for(i=0;i<N;i++)
- {
- z = z + d[i];
- }
- z = z/N;
- return z;
- }
- float X_Y_By(float m[N],float n[N])
- {
- unsigned int i=0;
- float z=0;
- for(i=0;i<N;i++)
- {
- z = z + m[i]*n[i];
- }
- return z;
- }
-
- float Squre_sum(float c[N])
- {
- unsigned int i=0;
- float z=0;
- for(i=0;i<N;i++)
- {
- z = z + c[i]*c[i];
- }
- return z;
- }
- void main(void)
- {
- Line_Fit();
- }
復制代碼
|