适合返回NaN的条件语句

时间:2014-11-12 11:32:14

标签: 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我使用条件using 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

有没有办法在不必重写输入文件的情况下拟合条件子集?

1 个答案:

答案 0 :(得分:1)

您可以使用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