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平台,公司环境)。