1

私は 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);

誰でもそれを手伝ってもらえますか?または、非線形フィットのためのより簡単なアプローチを推奨できる人はいますか?

事前にどうもありがとう

4

2 に答える 2

1

リストから配列に値をコピーする簡単な方法を次に示します。

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-06T14:51:15.450 に答える
0

その例は多次元配列です: http://msdn.microsoft.com/en-us/library/2yd9wwz4.aspx

...しかし、正しく構成されていないようです。

とにかく、あなたのリストは一次元です。

したがって、同等のものは次のようになります。

List<Double> xz = new List<Double>();
Double[] myDblArray = xz.ToArray();
于 2013-06-06T14:45:57.160 に答える