Gnuplot 适合返回NaN的条件语句
我有以下数据集Gnuplot 适合返回NaN的条件语句,gnuplot,Gnuplot,我有以下数据集 4456.5 140.5 1 4371.4 142.1 1 4389.8 150.5 1 4716.9 306.3 4 7505.4 1117.6 4 13517.3 2298.2 2 13961.3 2358.3 2 13994.7 2444.3 2 我只想拟合第三列中具有特定值的点。 对于plot我会使用条件使用1:($3==1?$2:NaN)但是 LS(x) = a*x**2 + b*x + c a=0.00001; b1=0.; c=0
4456.5 140.5 1
4371.4 142.1 1
4389.8 150.5 1
4716.9 306.3 4
7505.4 1117.6 4
13517.3 2298.2 2
13961.3 2358.3 2
13994.7 2444.3 2
我只想拟合第三列中具有特定值的点。
对于plot
我会使用条件使用1:($3==1?$2:NaN)
但是
LS(x) = a*x**2 + b*x + c
a=0.00001; b1=0.; c=0.
fit LS(x) IFN u 1:($3==1?$2:NaN) via a,b,c
不起作用,因为NaN
值也已拟合,我得到
> print a1,b1,c1
NaN NaN 0.0001
有没有一种方法可以在不必重新写入输入文件的情况下拟合条件子集?您可以使用
using
语句中的第三列为要忽略的点设置非常大的方差:
reset
IFN='test.txt'
LS(x) = a*x**2 + b*x + c
a=-0.00001; b=0.5; c=-2000
fit LS(x) IFN u 1:2:($3==1? 10000 : 1) via a,b,c
plot LS(x), IFN
或者,您可以使用awk
动态过滤输入文件:
fit LS(x) "< awk '($3 != 1)' ".IFN u 1:2 via a,b,c
fit LS(x)“
就这样,谢谢你的回答!我记得以前用过这个把戏。我不可能使用awk
(有严格软件政策的Windows平台,公司环境)。