3

请参阅这篇文章Enclosed, but not Encrypted

我有一些二进制数据。我想执行那篇文章中显示的 gnuplot,但使用我的数据。

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

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

我在 gnuplot 中输入什么来实现这一点?

在 Google 上搜索“相空间图”和 gnuplot 并没有得到太多回报。我不知道那是不是因为这篇文章是从德语翻译过来的。我认为我没有在堆栈交换站点中找到相关答案。

4

1 回答 1

12

要绘制 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))

Gnuplot 必须保存四个数据值,它们存储back1back4. 对于每个新值,存储的值都会移动shiftsamples注意不使用前三个值,而只存储(NaN创建无效数据点)。

要对其进行测试,请使用此文件randomdata.dat

21
15
10
6
3
1
0

这会在 (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))

如果您需要更改数据大小,请调用gnuplot并键入show datafile binary datasizes以查看支持的格式。

于 2013-07-30T10:53:14.163 回答