首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ALGLIB的List<double>为double[,]

ALGLIB的List<double>为double[,]
EN

Stack Overflow用户
提问于 2013-06-06 22:37:08
回答 2查看 441关注 0票数 1

我是C#的新手,我想用它来写一个校准原子力显微镜悬臂的软件。因此,我需要将一个相当丑陋的函数拟合到一些非线性数据的第一个峰值。我认为ALGLIB包可能会在这方面派上用场,它看起来相对容易应用。在他们的主页示例中,他们使用了X轴数据:

代码语言:javascript
复制
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值,并且想要使用它们。我怎么才能把它们从列表中拿出来放到替身里呢?我的最后一种方法是这样的

代码语言:javascript
复制
List<double> xz = new List<double>();
...
double[,] x = new double[,]{xz.ToArray()};

它似乎必须在双精度数组中,因为它是稍后函数的强制数组

代码语言:javascript
复制
alglib.lsfitcreatef(x, y, c, diffstep, out state);

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

提前谢谢你

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-06 22:51:15

下面是将列表中的值复制到数组中的一种简单方法:

代码语言:javascript
复制
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要求数组具有相同的秩(即维数)。

票数 1
EN

Stack Overflow用户

发布于 2013-06-06 22:45:57

这个例子是一个多维数组:http://msdn.microsoft.com/en-us/library/2yd9wwz4.aspx

...but它看起来配置得不太正确。

不管怎样,你的列表是一维的。

因此,等效项为:

代码语言:javascript
复制
List<Double> xz = new List<Double>();
Double[] myDblArray = xz.ToArray();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16964964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档