我是初级程序员,正在寻找简单移动平均SMA的帮助。我正在处理列文件,其中第一个与时间有关,第二个是值。时间间隔是随机的,也是值。通常这些文件并不大,但是这个过程需要很长时间才能收集数据。最后的文件看起来类似于这样的:随机相关时间值的简单移动平均线
+-----------+-------+ | Time | Value | +-----------+-------+ | 10 | 3 | | 1345 | 50 | | 1390 | 4 | | 2902 | 10 | | 34057 | 13 | | (...) | | | 898975456 | 10 | +-----------+-------+
整个过程的行数约为60k-100k。
然后我试图用一些时间窗口“平滑”数据。为此我使用SMA。 [AWK_method]
awk 'BEGIN{size=$timewindow} {mod=NR%size; if(NR<=size){count++}else{sum-=array[mod]};sum+=$1;array[mod]=$1;print sum/count}' file.dat
为了更好地实现具有预定义$timewindow
SMA的正确工作的i-创建用零填充线性增量。接下来,我使用不同的$timewindow
运行脚本,并观察结果。
+-----------+-------+ | Time | Value | +-----------+-------+ | 1 | 0 | | 2 | 0 | | 3 | 0 | | (...) | | | 10 | 3 | | 11 | 0 | | 12 | 0 | | (...) | | | 1343 | 0 | | (...) | | | 898975456 | 10 | +-----------+-------+
对于小数据来说它比较舒适,但现在它相当耗时,并且创建的文件开始太大了。我也熟悉的Gnuplot但SMA有地狱......
因此,这里是我的问题:
- 是否有可能改变awk的解决方案,以绕过与零填充数据?
- 你是否推荐使用bash的其他解决方案?
- 我也考虑学习python,因为经过6个月的学习bash,我已经知道它的局限性。我能否在不创建大数据的情况下在python中解决这个问题?
我会很高兴与任何形式的帮助或建议。
此致敬礼!
[AWK_method] http://www.commandlinefu.com/commands/view/2319/awk-perform-a-rolling-average-on-a-column-of-data
该样本随机数据的te期望输出是什么? –