来自多个文件的Gnuplot shell脚本ROS数据

来自多个文件的Gnuplot shell脚本ROS数据,gnuplot,Gnuplot,我正在尝试使用gnuplot从两个不同的rosbag文件中绘制数据。我正试图自动化这一点,因为我有相当多的文件,将需要运行 我需要取每个文件第一列的第一个元素,偏移w.r.t.列的数据(然后除以10^9),以秒为单位计算时间。我的问题是,当我多次运行脚本时,它会返回一些不同的结果。它将返回第一个、第二个或(偶尔)第三个plot命令,这正是我感兴趣的 我拼凑的代码如下: #!/bin/bash gnuplot -persist <<-EOFMarker set autoscal

我正在尝试使用gnuplot从两个不同的rosbag文件中绘制数据。我正试图自动化这一点,因为我有相当多的文件,将需要运行

我需要取每个文件第一列的第一个元素,偏移w.r.t.列的数据(然后除以10^9),以秒为单位计算时间。我的问题是,当我多次运行脚本时,它会返回一些不同的结果。它将返回第一个、第二个或(偶尔)第三个plot命令,这正是我感兴趣的

我拼凑的代码如下:

#!/bin/bash
gnuplot -persist <<-EOFMarker
    set autoscale
    set datafile separator ","
    set key autotitle columnhead
    plot "bag1" using (\$1):2 with linespoints
    first=GPVAL_DATA_X_MIN
    plot "bag2" using (\$1):3 with linespoints
    second=GPVAL_DATA_X_MIN
    plot "bag1" using ((\$1-first)/10**9):2, "bag2" using ((\$1-second)/10**9):3
EOFMarker
第二个输入文件是:

%time,field.1,field.2,field.3,field.4
1.50317425501603E+018,55,45,229,98755
1.50317425501843E+018,55,45,229,98752
1.5031742550235E+018,51,43,229,98758
1.50317425502979E+018,51,43,229,98761
1.50317425504176E+018,55,41,231,98764
1.50317425504579E+018,55,41,231,98770
1.50317425504728E+018,50,42,232,98773
1.50317425504855E+018,50,42,232,98773
1.50317425505353E+018,55,41,229,98770
1.50317425506442E+018,55,41,229,98770
我从未体验过多次运行会产生不同结果的代码。有人能给我指出正确的方向来解决这个问题吗? 输出为以下三个图。任何时候都不会从脚本输出错误消息

第一个输出:

第三(和期望)输出:


我不知道为什么有时你会得到不同的结果;我总是得到最后一个
plot
命令的输出。但是,您似乎只使用前两个
plot
命令来获取两个文件中每个文件的第一列的最小值。不生成任何绘图的更好方法是

set datafile separator ","
set key autotitle columnhead
stats "bag1" using 1
first=STATS_min
stats "bag2" using 1
second=STATS_min
plot "bag1" using (($1-first)/10**9):2, "bag2" using (($1-second)/10**9):3

我不知道为什么你有时会得到不同的结果;我总是得到最后一个
plot
命令的输出。但是,您似乎只使用前两个
plot
命令来获取两个文件中每个文件的第一列的最小值。不生成任何绘图的更好方法是

set datafile separator ","
set key autotitle columnhead
stats "bag1" using 1
first=STATS_min
stats "bag2" using 1
second=STATS_min
plot "bag1" using (($1-first)/10**9):2, "bag2" using (($1-second)/10**9):3

你得到的不同输出是什么?所以我是新手,不确定我能发布截图。但基本上它会两次给我输出:“plot”bag1使用(\$1):2和linespoints”,然后一旦它给我“plot”bag2使用(\$1):3和linespoints”的输出。它随机给出了第三个,使用(\$1-first)/109)的“plot”bag1:2,“bag2”使用(\$1-second)/109):3“你可以将截图嵌入到你的帖子中,或者只是用代码块中的输出更新你的帖子没有任何输出代码,我已经发布了两个图表的链接(没有足够的声誉发布更多)和两个示例文件。我想我会尝试让matlab使用这个,我现在只是好奇为什么会发生这种情况。你得到的不同输出是什么?所以我对这个不熟悉,不确定我能发布截图。但基本上它会两次给我输出:“plot”bag1使用(\$1):2和linespoints”,然后一旦它给我“plot”bag2使用(\$1):3和linespoints”的输出。它随机给出了第三个,使用(\$1-first)/109)的“plot”bag1:2,“bag2”使用(\$1-second)/109):3“你可以将截图嵌入到你的帖子中,或者只是用代码块中的输出更新你的帖子没有任何输出代码,我已经发布了两个图表的链接(没有足够的声誉发布更多)和两个示例文件。我想我会尝试让matlab使用这个,我现在只是好奇为什么会发生这种情况。我尝试了那个代码,但它似乎不起作用。最后,当它第一次作为shell脚本运行时,它工作得很好,因此我总是可以重新启动shell。另一个选项是它在命令行上运行良好。我尝试了该代码,但似乎不起作用。最后,当它第一次作为shell脚本运行时,它工作得很好,因此我总是可以重新启动shell。另一个选项是,它可以在命令行上正常工作。