c#的LINEST函数模拟

本文关键字:模拟 函数 LINEST | 更新日期: 2023-09-27 18:07:53

我需要从LINEST Excel函数中获取信息。我想知道是否有类似功能的库,或者是否有可能在c#中使用本地Excel函数?这可能是重要的,我在MVS 2010和使用Windows窗体工作。我写了一个最小二乘估计函数,它只计算2因素模型的参数,但我需要计算2个以上因素模型的参数。

注:实际上,我在谷歌上搜索了答案,我看到有人使用软件包Microsoft.Office.Excel来计算必要的信息,但在我的IDE中没有这样的导入。我不想发明轮子,所以我非常感谢任何信息。谢谢你。

:最后,我在我的项目中添加了一个Microsoft.Office.Excel引用,解决了我的问题。源代码附在下面。结果是2D类excel数组。代码写得很匆忙,所以它不是很好,需要修改。我只是希望这对其他人有帮助。/如果你需要帮助请联系我

        Microsoft.Office.Interop.Excel.Application xl = new Microsoft.Office.Interop.Excel.Application();
        Microsoft.Office.Interop.Excel.WorksheetFunction wsf = xl.WorksheetFunction;
        List<double> x = new List<double> { 107, 109, 110, 113, 120, 122, 123, 128, 136, 140, 145, 150 };
        List<double> y = new List<double> { 102, 105, 108, 110, 115, 117, 119, 125, 132, 130, 141, 144 };
        object result = wsf.LinEst(y.ToArray(), x.ToArray(), true, true);
        Array resArray = (Array)result;
        double[,] linest = new double[5, 2];
        int i = 0, j = 0;
        Console.WriteLine("{0,15:f10}", resArray.Length);
        foreach (var element in resArray)
        {
            if (i == 0 || i == 2 || i == 4 || i == 6 || i == 8)
            {
                linest[j, 0] = (double)element;                    
            }
            else
            {
                linest[j, 1] = (double)element;
                j++;
            }
            i++;                
        }
        Console.WriteLine();
        for (i = 0; i < linest.GetLength(0); i++)
        {
            for (j = 0; j < linest.GetLength(1); j++)
                Console.Write("{0,25:f13}", linest[i, j]);
            Console.WriteLine();
        }

c#的LINEST函数模拟

尝试Math net numerics中的线性代数库,并完全避免使用excel。