【发布时间】:2021-12-25 21:57:05
【问题描述】:
我有一个 PointCollection,其中包含我生成的正弦数据。 现在我必须建立这些数据的数值积分并将其与正弦数据(每折线)一起绘制。 我在stackoverflow上找到了这个函数,但它并没有真正起作用:( sin(x) 的积分通常应该是 -cos(x),但我得到的是 -sin(x),我必须缩放 ypos,但在类似的插值函数中,它无需缩放即可工作。有人知道我的问题在哪里吗?
红色:原始噪声数据,蓝色:插值数据绿色:综合数据
private PointCollection Numerical_Integration(PointCollection input_data)
{
PointCollection integrated_data = new();
for (int i = 1; i < input_data.Count; i++)
{
double integrated_ypos = (input_data[i].Y + input_data[i - 1].Y) / 2 * (input_data[i].X - input_data[i - 1].X);
integrated_data.Add(new Point(input_data[i].X, integrated_ypos/5+300));
}
return integrated_data;
}
【问题讨论】:
-
幻数
y/5+300是什么意思? -
这就是缩放,我已经谈过了。而且我不明白,为什么我需要它来适应我的画布。
-
您的问题是正 y 值指向下方(像素坐标)并且您的输入数据有 y 值指向上方,就像在正常的笛卡尔坐标中一样系统?
-
这应该不是问题,因为原始数据和插值数据显示正确。并且所有这些函数都得到相同的输入数据,除了积分函数。得到的就是插值数据。
-
从笛卡尔坐标系到像素坐标系的转换发生在我从 csv 文件中读取数据的函数中。
标签: c# point numerical-integration