日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C#最小二乘法擬合曲線成直線的實例_C#教程

作者:yangzm996 ? 更新時間: 2023-06-18 編程語言

最小二乘法擬合曲線成直線

效果

  • 擬合前

  • 擬合后

傳入X軸和Y軸的數據,得到新的Y軸數據。

將X值數據和擬合后的Y軸數據綁帶即可。

 /// <summary>
        /// 最小二乘法/線性回歸,得到新的點
        /// </summary>
        /// <param name="Points"></param>
        /// <param name="err"></param>
        /// <returns></returns>
        private List<double> LinearRegression(List<double> PointsX, List<double> PointsY)
        {
            List<double> Result = null;
            if (PointsX.Count < 2 || PointsY.Count < 2 || PointsX.Count != PointsY.Count)
            {
                return Result;
            }
            double Averagex = 0, Averagey = 0;
            for (int i = 0; i < PointsX.Count; i++)
            {
                Averagex += PointsX[i];
                Averagey += PointsY[i];
            }
            Averagex /= PointsX.Count;
            Averagey /= PointsX.Count;
            double Numerator = 0, Denominator = 0;
            for (int i = 0; i < PointsX.Count; i++)
            {
                Numerator += (PointsX[i] - Averagex) * (PointsY[i] - Averagey);
                Denominator += (PointsX[i] - Averagex) * (PointsX[i] - Averagex);
            }
            double K = Numerator / Denominator;
            double B = Averagey - K * Averagex;
            List<double> temp = new List<double>();
            foreach (var item in PointsX)
            {
                temp.Add(K * item + B);
            }
            Result = temp.ToList();
            return Result;
        }

總結

原文鏈接:https://blog.csdn.net/weixin_39448579/article/details/128582213

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新