c# - 列表<double> 到 ALGLIB 的 double[,]

标签 c# c arrays curve-fitting alglib

我是 C# 的新手,我想用它来编写用于校准 AFM 悬臂梁的软件。因此,我需要将一个非常丑陋的函数拟合到一些非线性数据的第一个峰值。 我认为 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 值在一个列表中,我想使用它们。如何将它们从列表中取出并放入 double[,] 中?我最后的方法是这样的

List<double> xz = new List<double>();
...
double[,] x = new double[,]{xz.ToArray()};

它似乎必须在一个 double[,] 数组中,因为它对于后面的函数是必需的

alglib.lsfitcreatef(x, y, c, diffstep, out state);

有人可以帮我吗? 或者有人可以推荐一种更简单的非线性拟合方法吗?

提前致谢

最佳答案

这是将值从列表复制到数组的简单方法:

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期望数组具有相同的等级(即维数)。

关于c# - 列表<double> 到 ALGLIB 的 double[,],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16964964/

相关文章:

mysql - Nodejs mysql 选择响应

javascript - 如何将命名 json 数组转换为未命名数组

c - 多线程,每个线程都有唯一的变量

c# - XML 从不同的树中检索 2 个 XElements

c# - 从其他脚本Unity访问脚本

c# - 删除多余的委托(delegate)构造函数调用?

c# - 调用没有参数但使用本地参数的委托(delegate) C#

c - 在 c 中用 1 到 500 之间的随机值初始化给定大小的数组

c - 无法通过 unix tcp 套接字发送二进制数据

C - 检索大于 8 位的 child 的退出状态