我是C#的新手,我想用它来写一个校准原子力显微镜悬臂的软件。因此,我需要将一个相当丑陋的函数拟合到一些非线性数据的第一个峰值。我认为ALGLIB包可能会在这方面派上用场,它看起来相对容易应用。在他们的主页示例中,他们使用了X轴数据:
double[,] x = new double[,]{{-1},{-0.8},{-0.6},{-0.4},{-0.2},{0},{0.2},{0.4},{0.6},{0.8},{1.0}};我在一个列表中有我的X值,并且想要使用它们。我怎么才能把它们从列表中拿出来放到替身里呢?我的最后一种方法是这样的
List<double> xz = new List<double>();
...
double[,] x = new double[,]{xz.ToArray()};它似乎必须在双精度数组中,因为它是稍后函数的强制数组
alglib.lsfitcreatef(x, y, c, diffstep, out state);有人能帮我吗?或者有没有人能推荐一种更简单的非线性拟合方法?
提前谢谢你
发布于 2013-06-06 22:51:15
下面是将列表中的值复制到数组中的一种简单方法:
List<double> xz = // something
double[,] x = new double[xz.Count, 1];
for (int i = 0; i < xz.Count; i++)
{
x[i, 0] = xz[i];
}我找不到比手动复印更好的方法了。ToArray()创建了一个不兼容的类型(double[]),并且Array.Copy要求数组具有相同的秩(即维数)。
发布于 2013-06-06 22:45:57
这个例子是一个多维数组:http://msdn.microsoft.com/en-us/library/2yd9wwz4.aspx
...but它看起来配置得不太正确。
不管怎样,你的列表是一维的。
因此,等效项为:
List<Double> xz = new List<Double>();
Double[] myDblArray = xz.ToArray();https://stackoverflow.com/questions/16964964
复制相似问题