适合具有多个文件和不同单位的功能

时间:2016-05-04 20:05:58

标签: gnuplot curve-fitting

我想在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

由于

1 个答案:

答案 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