2012-08-27 19 views
2

有沒有辦法在Gnuplot中擁有過程(或C類函數)?我需要一些非常簡單的東西,就像這樣:Gnuplot中的過程

function func1() 
{ 
var1 = "string1"; 
var2 = var1."string2"; 

return var2; 
} 

使我的gnuplot腳本更緊湊一點。

回答

4

gnuplot的支持(簡單)的功能與參數:

func1(x)=x."string2" 

更復雜的 「內聯」 功能,可如果你使用的gnuplot 4.4創建:

func1(x)=(var1=x, var2=var1."string2", var1.var2) #returns x.x."string2" 

在這種形式下,最後該函數的一部分是返回的(var1.var2),並且語句從左到右進行計算。

如果你想擁有它不接受任何參數的函數,你可以(經常)使用宏:

set macro 
funcmacro='"string1"."string2"' 
print @funcmacro 
+0

謝謝!是的,我使用的是gnuplot 4.4,我會嘗試「內聯」和宏。 – Avio

2

是。您可以連接在gnuplot的字符串的東西,如

strcat(str1,str2) = sprintf("%s%s",str1,str2) 
str3 = strcat("string1","string2"); print str3 

第一行是函數定義,第二行是剛剛使用的例子。您可以在gnuplot documentation的「用戶定義的變量和函數」部分閱讀更多內容(它位於「表達式」部分;您可能無法在pdf中搜索字符串'用戶定義',因爲'fi'由LaTeX生成的字符)。

+0

我沒有想到'sprintf'爲此目的...有趣。我想我仍然更喜歡操作符verision:'strcat(s1,s2)= s1.s2',但它並沒有真正改變我的想法。 +1指出gnuplot有很多已經內置的C函數。 – mgilson

+0

@andyras:我通常使用點「。」來連接字符串。我的問題是關於是否有任何方法在gnuplot腳本中創建過程或「非數學」功能。 – Avio

+0

@mgilson:我也喜歡'。'操作員,但我自己已經忘了!謝謝你提醒我。 – andyras

1

您可能要考慮查看Pyxplot繪圖軟件包http://pyxplot.org.uk,該軟件包與gnuplot的語法非常相似(雖然已經清理乾淨),但它也具有很多腳本語言的功能。它有子程序,它應該完全按照你的要求來做。