我需要从LINEST Excel函数中获取信息。我想知道是否有类似函数的库或者是否可以在C#中使用本机Excel函数?我在MVS 2010中工作并使用Windows Forms可能很重要。我写了一个最小二乘估计函数,它只计算2因子模型的参数,但是我需要计算具有2个以上因子的模型的参数。
P.S。实际上我做谷歌的答案,我看到有人使用包Microsoft.Office.Excel来计算必要的信息,但我的IDE中没有这样的导入。我不想发明一个轮子,所以我完全欣赏任何信息。谢谢。
更新: 最后,我添加了一个Microsoft.Office.Excel引用到我的项目并解决了我的问题。源代码如下。结果是2D Excel类数组。代码写得很匆忙所以它不是很好,需要修改。我只希望它对其他人有所帮助。 如果您需要帮助, / w我
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();
}
答案 0 :(得分:1)
尝试使用Math net numerics中的线性代数库,并避免完全使用excel。