我有以下数据集
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
有没有办法在不必重写输入文件的情况下拟合条件子集?
答案 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