Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gnuplot;在目录中的文件上迭代以打印png_Gnuplot - Fatal编程技术网

Gnuplot;在目录中的文件上迭代以打印png

Gnuplot;在目录中的文件上迭代以打印png,gnuplot,Gnuplot,在l250目录中,我有几个文件。它们都以数字值后的“l2_2;”开始。我希望能够为大约300个文件绘制last.sh文件中的内容。我想知道迭代文件的方式是什么,它是$1,第二个值是$2 我在想,因为这些文件都在当前目录中,所以我可以使用它们。但是我正在读关于awk和csv的书,我不知道该怎么办。我想了解一下什么是迭代大量文件的更好方法,rater然后将其放入main.sh并运行它 main.sh sh last.sh l2_4 1 sh last.sh l2_5 2 sh last.sh l2_

在l250目录中,我有几个文件。它们都以数字值后的“l2_2;”开始。我希望能够为大约300个文件绘制last.sh文件中的内容。我想知道迭代文件的方式是什么,它是$1,第二个值是$2

我在想,因为这些文件都在当前目录中,所以我可以使用它们。但是我正在读关于awk和csv的书,我不知道该怎么办。我想了解一下什么是迭代大量文件的更好方法,rater然后将其放入main.sh并运行它

main.sh

sh last.sh l2_4 1
sh last.sh l2_5 2
sh last.sh l2_6 3
sh last.sh l2_7 4
.
.
.
last.sh

gnuplot << EOF
set terminal png
set output "finished/$1.png"
set xlabel "Angs"
set ylabel "Angs"
set title "$1  |  $2 fs "
set zrange [0: 0.00001]
set pm3d map
splot "$1"
EOF

首先,生成一个包含所有文件名的列表

list = system('ls l2_*')
然后可以使用
do for…
(需要gnuplot 4.6)对其进行迭代:


还有一件事,模式是7-3=4fs。传播从l2_3开始,因此在该图中,波为0 fs。然后它将继续下去。有没有办法知道*的值,然后从中减去一个整数,让它成为i?因此,如果*是10,我们知道我将是10-3=7fs。要提取所有
*
的最小值,请使用
min=int(system('sed“s/l2//g”| sort-n | head-1')
。也许您还必须将一些选项传递给
ls
或通过管道将输出传递给
sort-n
,以获得文件的正确顺序。此外,如果图像数量超过最大参数计数,则可能会失败,请改用find-type f-name'*.txt'| wc-l
list = system('ls l2_*')
set terminal pngcairo
set xlabel "Angs"
set ylabel "Angs"
set zrange [0: 0.00001]
set pm3d map

list = system('ls l2_*')
i = 1

do for [file in list] {
    set output sprintf('finished/%s.png', file)
    set title sprintf("%s | %d fs", file, i)
    splot file
    i = i + 1
}