2012-10-14 22 views
0

我有一些图形的图像,我想合成原始(x,y)数据。我没有原始数据,只有图表。如何生成一些特定形状的数据?

理想情况下,我希望能够使用数学函数近似曲线的形状,以便我可以改变函数以产生稍微不同的输出,并且可以具有简单的重现性。

第一张图片显示了一组曲线:从最近一段时间的平均值开始的温度异常,可以追溯到现在的20,000年前。第二张图片显示了一个阶梯函数,在现在的10000年前发生变化(对数刻度)。 (您还会注意到它们具有相反的x轴方向)。

对于其中的每一个,我想生成的最终数据都是一个文本文件,每10或100年温度异常值。

任何解决方案,欢迎。

enter image description here enter image description here

+0

对不起,您对“生成合成数据进行匹配”是什么意思?如果我正确地理解了你,你想为绘制的图生成数据集... – tamasgal

+0

如果你有某种具体的数据,这个问题是可行的,但是如果你只有一些图,那么可能不是。 –

+0

嗨@septi,是的,就是这样。我想要有一点控制力,这样我可以产生稍微不同的数据。因此,我希望用数学函数来描述它。也许是正弦和余弦的组合。 –

回答

0

我决定回答一些关于使用代数生成曲线的方法。

对于周期型曲线,您可以使用正弦或余弦,并且可以调整幅度和频率以符合您的特定情况。例如,y = A sin(2x),其中振幅是A,周期与x的内部函数(括号内的那个位)有关。在gnuplot的试试这个:

A=2 
f(x) = A*sin(2*x) 
set xrange[-pi:pi] 
plot f(x), sin(x), cos(x) 

要改变幅度为x的变化只是增加x值的功率项或指数项的振幅:

f(x) = A*exp(0.5*x)*sin(2*x) 
set xrange[-2*pi:2*pi] 
plot f(x), sin(x) 
# add an initial value (offset) 
f(x) = 5+A*exp(0.5*x)*sin(2*x) 
plot f(x), sin(x) 

等。

1

我不知道我完全理解你的问题。但是你可以尝试做的是数据化数据(windig适用于windows和engauge for linux),然后在点之间做一些数据插值。

几乎所有时间都可以使用的平凡插值只是两个连续点之间的直线。更复杂的方法是保持二阶导数连续的三次样条(例如B样条http://en.wikipedia.org/wiki/B-spline)。

+0

感谢@rpsml,engauge看起来很有前途。我会尝试一下。 –

+0

目前有一个关于数字化软件的wikipedia页面:http://en.wikipedia.org/wiki/Converting_scanned_graphs_to_data,我也从中尝试过g3data/g3data2。 –

相关问题