мы хотели бы интерполировать данные внутри массива, используя 'awk'. У меня есть массив
1 1 3 3 ...
3 3 5 3
5 5 6 5
6 6 6 5
за которые мы хотели бы получить
1 1 3 3 ...
2 2 4 4
3 3 5 3
4 4 5.5 4
5 5 6 5
6 6 6 5
Это позволило бы нам получить полный массив, охватывающий все возможные данные для первого столбца, представляющий временную шкалу. Столбец 2 и более являются данными. Матрица имеет размер 4x110100. У нас есть этот скрипт:
awk '
{
P[$1]=$2
I[i++]=$1
}
END{
j=0; s=I[j]; t=I[j+1]
for(i=m;i<=n;i++){
if(I[j+2] && i>t){
j++; s=I[j]; t=I[j+1]
}
print i,P[s]+(i-s)*(P[t]-P[s])/(t-s)
}
}' m=1 n=6 f1.dat > f2.dat
но он делает это только для первых двух столбцов как
1 1
2 2
3 3
4 4
5 5
6 6
Как мы можем расширить интерполяцию на весь массив ?! Я пробовал использовать сценарии for или while, но мы не можем достичь цели ...