2008-10-28 36 views
4

使用gnuplot 4.2,是否可以獲取特定列/行的值並以某種方式使用該值?從gnuplot的不同行中獲取特定元素的值

例如,假設我的數據文件包含以下

#1 2 
7 13 
5 11 
23 17 
53 12 

對於一個簡單的圖,其中列1爲X軸和列2是Y軸我想: -

plot 'datafile' using 1:2 

我想要做的是通過該列中的第一個元素(13)規範化第2列中的所有數據。有沒有辦法在gnuplot本身做到這一點(即,不採用腳本語言或其他方法來預先處理數據)?

乾杯

回答

0

廣告新列滿13,然後使用:

情節 '數據文件' 使用1:($ 2/$ 3)

2

如果你的基本值(如13)是在你的數據集的第一行,你應該能夠使用gnuplot的CVS版本來做你想做的。

看看running averages demo。沿着這些路線,您可以編寫一個自定義函數,該函數在第一次調用時將基本值存儲在自定義變量中,並在隨後的調用中返回該變量。

(由於該演示是上市僅CVS版本,我認爲所需要的功能在當前發行版本。)

3

使用移動平均DEMO,我成功地實現標準化的一個陰謀第二列的第一個值。

base變量用於存儲參考值,而first函數在第一行初始化base

first(x) = ($0 > 0 ? base : base = x) 
plot file.dat u 1:(first($2), base/$2) 

應該指出,這不是使用gnuplot 4.2完成的。

編輯:更新使用克里斯托夫的建議。

+1

不錯,+1。更普遍的是,可以檢查行號是否爲0來設置「base」值:first(x)=($ 0> 0?base:base = x)`。 – Christoph 2015-02-06 08:03:45