我需要以下帮助:我有一个数据文件(以"\ t"表格分隔的列),就像这样 data.dat
# y1 y2 y3 y4
17.1685 21.6875 20.2393 26.3158
Run Code Online (Sandbox Code Playgroud)
对于线性拟合,这些是4个点的x值.四个y值是常数:0, 200, 400, 600.
我可以创建点对的线性拟合(x,y):(x1,y1)=(17.1685,0), (x2,y2)=(21.6875,200), (x3,y3)=(20.2393,400), (x4,y4)=(26.3158,600).
现在我想对其中的三个巴黎进行线性拟合, (x1,y1), (x2,y2), (x3,y3) and (x2,y2), (x3,y3), (x4,y4) and (x1,y1), (x3,y3), (x4,y4) and (x1,y1), (x2,y2), (x4,y4).
如果我有三个线性拟合点,我想知道外推点的x值在这三个拟合点之外的值.
我到目前为止这个awk代码:
#!/usr/bin/awk -f
BEGIN{
z[1] = 0;
z[2] = 200;
z[3] = 400;
z[4] = 600;
}
{
split($0,str,"\t");
n = 0.0;
for(i=1; i<=NF; i++)
{
centr[i] = str[i];
n += 1.0;
# printf("%d\t%f\t%.1f\t",i,centr[i],z[i]);
}
# print …Run Code Online (Sandbox Code Playgroud) 我有这种recrods:
1 2 12345
2 4 98231
...
Run Code Online (Sandbox Code Playgroud)
我需要将第三列拆分为子列以获得此值(例如,用单空格分隔):
1 2 1 2 3 4 5
2 4 9 8 2 3 1
Run Code Online (Sandbox Code Playgroud)
任何人都可以在sed,awk等中为我提供一个很好的解决方案吗?谢谢!
编辑:原始第三列的大小可能会按记录变化.