gpt4 book ai didi

linux - 计算超过 100 000 行的文件的每一行的导数

转载 作者:太空狗 更新时间:2023-10-29 11:43:24 27 4
gpt4 key购买 nike

我目前正在处理大文件,其值看起来像像这样(总是 2 列,但超过 100 000 行):

1.3 1.5

2.5 2.0

3.6 6.0

4.0 10.1

7.8 11.5

对于这些文件,我想计算导数,例如:(2.0-1.5)/(2.5-1.3) & 然后 (6.0-2.0)/(3.6-2.5) 等等。我写了一个 Scilab 文件,它从文件 (test.txt) 中读取矩阵 x,然后执行一个计算导数的 for 循环。这是我的版本:

[x] = read('test.txt',-1,2);

i = 1;

j = 1;

s = size(x);

for i = 1:s(1,1)-1

f(i) = (x(i+1,2)-x(i,2))/(x(i+1,1)-x(i,1))

delta(i)=((x(i+1,1)+x(i,1)))/2

i=i+1

end

我的问题有两个:

1) 超过 100 000 行的计算需要很长时间 -> 是否有可能更快地完成计算?或者只有当行数减少时才有可能(例如,只考虑每 1000 步?)

2) 由于我想在 linux 脚本中执行此操作:是否有一种简单的方法可以在 awk 或其他 linux 工具(如 sed...)中执行此操作?

非常感谢您的帮助!

斯蒂芬

最佳答案

试试这条线:

awk '{if(NR>1)printf "%.1f\n",($2-b)/($1-a);a=$1;b=$2}' file

使用示例数据输出:

0.4
3.6
10.3
0.4

如果结果不是您想要的,请提供一个预期的输出示例。

关于linux - 计算超过 100 000 行的文件的每一行的导数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32068286/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com