我想要使用gnuplot自動化數據分析程序,本質上我正在做的是在gnuplot中運行曲線擬合程序,然後讀取日誌文件以取出所需的值進一步分析。閱讀文件(逐行)問題
下面是一段代碼:
#Open curvefit log file to gather the needed coefficients
open (FILE_CURVE, 'fit.log') or die;
while (<FILE_CURVE>)
{
push(@log, $_);
print "Im here\n";
}
close (FILE_CURVE);
我的問題是它沒有進入while循環,因爲我沒有看到print "Im here\n";
行代碼。
同樣在程序的開始,我刪除了日誌文件,使其不會跑開。曲線擬合程序重新創建它。
這是日誌文件的樣子。 注意:在文件的開頭處有兩個空行。
*******************************************************************************
Tue May 17 11:28:59 2011
FIT: data read from 'temp_norm.txt' using 1:2
#datapoints = 2000
residuals are weighted equally (unit weight)
function used for fitting: g(x)
fitted parameters initialized with current variable values
Iteration 0
WSSR : 566.797 delta(WSSR)/WSSR : 0
delta(WSSR) : 0 limit for stopping : 1e-05
lambda : 1.49986
initial set of free parameter values
cc = 100
dd = 9.3
After 31 iterations the fit converged.
final sum of squares of residuals : 24.1325
rel. change during last iteration : 0
degrees of freedom (FIT_NDF) : 1998
rms of residuals (FIT_STDFIT) = sqrt(WSSR/ndf) : 0.109901
variance of residuals (reduced chisquare) = WSSR/ndf : 0.0120783
Final set of parameters Asymptotic Standard Error
======================= ==========================
cc = 108.497 +/- 3.189 (2.939%)
dd = 8.8375 +/- 0.0001571 (0.001777%)
correlation matrix of the fit parameters:
cc dd
cc 1.000
dd 0.246 1.000
如果我認爲你的意思是你正在運行類似於shell腳本的東西來首先執行gnuplot運行,並且直接在perl腳本之後檢查日誌,我能理解嗎?所以你的問題是,當文件爲空時,perl腳本過早訪問你的日誌文件? – TLP 2011-05-17 22:11:48
如果是這樣,您可以從perl腳本運行gnuplot,從而控制進程何時完成。 – TLP 2011-05-17 22:21:16
原來問題在於gnuplot沒有足夠快地創建fit.log文件,所以我不得不等待(5);爲了給gnuplot一些時間。 – Lpaulson 2011-05-19 04:22:17