如何在gnuplot中创建三维相空间图?

jec*_*ikn 3 gnuplot

请参阅此文章附上,但不是加密.

我有一些二进制数据.我想执行该文章中显示的gnuplots,但使用我的数据.

对于三维相空间图,序列a,b,c,d,e,f等可用作空间坐标(ab,bc,cd),(bc,cd,de),(cd创建的图中的模式揭示了后续序列之间的重复关系.在此阶段图中,50,000个16位随机数将产生非结构化的点云.

我想做同样的事情.我有一个二进制文件(大约10 MB),我想通过gnuplot运行它来创建漂亮的gnuplot图.

我怎么输入gnuplot来实现呢?

在谷歌搜索"阶段空间图"和gnuplot并没有太多回报.我不知道是不是因为这篇文章是德语的翻译.我不认为我在堆栈交换站点中找到了相关的答案.

Chr*_*oph 11

要绘制3d相空间,请使用以下脚本,该脚本的作用类似于gnuplot页面中的运行平均示例:

reset
back4 = back3 = back2 = back1 = 0
shift(x) = (back4 = back3, back3 = back2, back2 = back1, back1 = x)
samples(x) = $0 < 3 ? NaN : x
set ticslevel 0
# the labels are only for orientation when checking the test data
set xlabel 'xlabel'
set ylabel 'ylabel'
splot 'randomdata.dat' using (shift($1), samples(back4-back3)):(samples(back3-back2)):(samples(back2-back1))
Run Code Online (Sandbox Code Playgroud)

gnuplot的,必须持有四个数据值,它们存储在back1back4.对于每个新值,存储的值都会移位shift.samples注意不要使用前三个值,而只存储(NaN创建一个无效的数据点).

要测试它,请使用此文件randomdata.dat:

21
15
10
6
3
1
0
Run Code Online (Sandbox Code Playgroud)

这在(6,5,4),(5,4,3),(4,3,2)和(3,2,1)处绘制了四个数据点.

如果你有一个二进制数据文件,例如16位数,请使用

splot 'binaryfile' binary format="%ushort" using (shift($1), samples(back4-back3)):(samples(back3-back2)):(samples(back2-back1))
Run Code Online (Sandbox Code Playgroud)

如果需要更改datasize,请调用gnuplot并键入show datafile binary datasizes以查看支持的格式.