找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8264|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

最小二乘法擬合一條直線(C語言代碼)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:90014 發(fā)表于 2015-9-15 14:58 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. #include<stdio.h>


  2. #define N10             //N為要擬合的數(shù)據(jù)的個(gè)數(shù)

  3. float X[10] = {1.9,0.8,1.1,0.1,-0.1,4.4,4.6,1.6,5.5,3.4};
  4. float Y[10] = {0.7,-1.0,-0.2,-1.2,-0.1,3.4,0.0,0.8,3.7,2.0};


  5. floatK=0;               //擬合直線的斜率

  6. floatR=0;               //擬合直線的截距

  7. float x_sum_average=0;   //數(shù)組 X[N] 個(gè)元素求和 并求平均值

  8. float y_sum_average=0;   //數(shù)組 Y[N] 個(gè)元素求和 并求平均值

  9. float x_square_sum=0;    //數(shù)組 X[N] 個(gè)個(gè)元素的平均值

  10. float x_multiply_y=0;    //數(shù)組 X[N]和Y[N]對應(yīng)元素的乘機(jī)

  11. float Squre_sum(float c[N]) ;
  12. float Sum_Average(float d[N]);
  13. float X_Y_By(float m[N],float n[N]);
  14. float Squre_sum(float c[N]);
  15. void Line_Fit(void);


  16. void Line_Fit(void)
  17. {
  18.   x_sum_average= Sum_Average(X);

  19.   y_sum_average= Sum_Average(Y);

  20.   x_square_sum = Squre_sum(X);

  21.   x_multiply_y = X_Y_By(X,Y);

  22.   K = ( x_multiply_y - N * x_sum_average * y_sum_average)/(x_square_sum - N * x_sum_average*x_sum_average );

  23.   R = y_sum_average - K * x_sum_average;

  24.   printf("K = %f\n",K);

  25.   printf("R = %f\n",R);

  26. }



  27. float Sum_Average(float d[N])
  28. {

  29. unsigned int i=0;

  30. float z=0;

  31. for(i=0;i<N;i++)

  32. {
  33. z = z + d[i];
  34. }

  35. z = z/N;

  36. return z;

  37. }

  38. float X_Y_By(float m[N],float n[N])
  39. {

  40. unsigned int i=0;

  41. float z=0;

  42. for(i=0;i<N;i++)

  43. {

  44. z = z + m[i]*n[i];

  45. }

  46. return z;

  47. }



  48. float Squre_sum(float c[N])
  49. {

  50. unsigned int i=0;

  51. float z=0;

  52. for(i=0;i<N;i++)

  53. {

  54. z = z + c[i]*c[i];

  55. }

  56. return z;

  57. }


  58. void main(void)
  59. {

  60.     Line_Fit();

  61. }
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表