2013-02-06 49 views
2

它是否可能在gnuplot中繪製並擬合具有兩個變量的函數?例如,一個物理功能取決於HIGHT h和溫度T其中T依賴性應該只被計算而不是繪製(對於fhT實驗數據存在):gnuplot:用兩個變量繪製並擬合2d函數

f(h,T) = a * h * (1 + alpha * T) + f0 

其中af0是由合適的決定,alpha是已知的。最後,我需要在y軸上有f,在x軸上有h。整個T依賴應該照顧在適合,但我不需要它與splot顯示。

以下是我試過的和失敗的。我假設因爲不能設置兩個虛擬變量:

set term png; 
set output 'test.png'; 
set dummy h; 
set dummy T; 
f(h,T) = a * h * (1 + alpha * T) + f0; 
fit f(h,T) 'data.txt' using 2:4:1 via a, f0; 
plot f(h,T); 

給出undefined variable: h。有任何想法嗎?

+0

你試圖刪除了'設置dummy'的東西,只是做'配合f(x,y)'data.txt'使用2:4:1:(1)通過a,f0'? – mgilson

回答

3

從文檔中的例子:

Examples: 
     f(x) = a*x**2 + b*x + c 
     g(x,y) = a*x**2 + b*y**2 + c*x*y 
     FIT_LIMIT = 1e-6 
     fit f(x) 'measured.dat' via 'start.par' 
     fit f(x) 'measured.dat' using 3:($7-5) via 'start.par' 
     fit f(x) './data/trash.dat' using 1:2:3 via a, b, c 
     fit g(x,y) 'surface.dat' using 1:2:3:(1) via a, b, c 

我希望你的腳本工作,如果你壓根兒:

set term png 
set output 'test.png' 
f(h,T) = a * h * (1 + alpha * T) + f0 
fit f(x,y) 'data.txt' using 2:4:1:(1) via a, f0 

set view 90,0 #possibly `set view 0,90` or `set view map`? 
splot f(x,y) 
+0

「:(1)」在「使用」中是什麼意思? –

+0

這是每個點應該給予的權重(例如,對於錯誤)。請參閱gnuplot中的'help fit'。這使每個點的權重相同。 – mgilson

+0

啊,好的。但儘管如此。如果我全部切換到x和y並刪除虛擬,它會得到錯誤'line 5:undefined variable:y'(line 5 is'plot')。我必須先啓用多變量圖嗎?擬合似乎工作得很好(我得到合理的價值),但繪圖不會。 –