0

我有以下代码在 C# 中使用 ALGLIB 进行样条插值:

void interpolateData() // Spline 1D convcubic
{
    int anzNeueWerte = Convert.ToInt32(
                   Interaction.InputBox("Enter the new number of x-values:"
                                            ", x.Length / 2 + "", 500, 500));
    double[] xNeu = new double[anzNeueWerte];           double[] yNeu;
    double tempXNeu = 0;

    for(int i = 0; i < xNeu.Length; i ++)
    {
        xNeu[i] = tempXNeu
        tempXNeu += ((double) x.Length / anzNeueWerte);
    }

    alglib.spline1dconvcubic(x, y, xNeu, out yNeu);

    for(int i = 0; i < y.Length; i ++)
    {
        vorher.Add(new PointPair(x[i], y[i]));
        Debug.WriteLine("Vorher:" + vorher.ElementAt(i).ToString());
    }

    for(int i = 0; i < yNeu.Length; i ++)
    {
        nachher.Add(new PointPair(xNeu[i], yNeu[i]));
        Debug.WriteLine("Nachher:" + nachher.ElementAt(i).ToString());
    }

    CreateGraph();
}

我已经检查了输入值,以防它们被错误地读取,并且它们是正确的。唯一出错的是alglib.spline1dconvcubic(..)的行。我不知道计算是否不起作用,或者我只是以小数点出于某种原因在非常不同的地方的方式编写它。

变量anzNeueWerte(德语)确定数据集的新 x 值数量。变量xNeuyNeu是包含新 x 和 y 值的双精度数组。

最后一行CreateGraph()只是调用了绘制 ZedGraph 图表的方法,它应该可以正常工作,所以问题既不在这一行,也不在于它调用的方法。

上周我已经让它工作了,我几乎可以肯定从那以后我没有改变任何东西。

任何帮助表示赞赏。

提前致谢。

编辑: y 值应在 0-8000 的范围内,但从略高于零到大约 -320.000.000.000.000

PS:不要将此问题标记为离题、重复或其他任何问题。我能找到的关于这个库的所有问题都没有对我的问题有用

4

0 回答 0