2012-10-14 26 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。 –

相關問題