我想在gnuplot中为fit文件使用fit命令。我知道对于多个文件,如果列上的操作相同,则命令为例如:
f(x)=a*x+b
fit f(x) '< cat file1 file2 file3' using ($18/-200):($4/200) via a,b
现在我没有做同样的操作($18/-200):($4/200)
,而是想做不同的操作(因为例如文件具有相同的数量但是以不同的单位);例如,对于文件1 ($18/-200):($4/200)
和文件2 ($3*200):($7/400)
。命令
fit f(x) '< cat file1 file2' using '($18/-200):($4/200) ($3*200):($7/400)' via a,b
我天真地尝试过的东西不起作用。任何提示?
这个问题类似于
How to fit a function with multiple files in gnuplot
由于
答案 0 :(得分:0)
如果您已经在使用bash命令,则可以使用awk
预处理数据:
# Get number of lines in file 1
n1 = word(system("wc -l file1"), 1)
# Create command to preprocess data
filename = "< cat file1 file2 | awk '{if(NR < 1+".n1."){print $18/-200., $4/200.} else{print $3*200, $7/400.}}'"
fit f(x) filename using 1:2 via a,b
或者在bash中生成temp
文件:
n1=`wc -l file1 | awk '{print $1}'`
cat file1 file2 | awk -v n1=$n1 '{if(NR < 1+n1){print $18/-200., $4/200.} else{print $3*200, $7/400.}}' > temp
并将其用于gnuplot中的拟合:
fit f(x) temp using 1:2 via a,b