我有以下代码在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值。变量 xNeu 和 yNeu 是包含新x值和y值的双数组。
最后一行, CreateGraph()只是调用绘制ZedGraph图表的方法,该图表应该,所以问题既不在此行也不在它所称的方法。
我上周已经开始工作了,而且我几乎可以肯定自那以后我没有改变任何事情。
任何帮助表示感谢。
提前致谢。
编辑: y值应该在0-8000的范围内,但是从略超过0到约-320.000.000.000.000
P.S。: Don&#t; 将此问题标记为偏离主题,重复或其他任何内容。 无我可以找到关于此库的问题包含任何有用的来解决我的问题。