2013-07-27 57 views
3

看到這篇文章Enclosed, but not Encrypted如何在gnuplot中創建3d相空間圖?

我有一些二進制數據。我想執行該文章中顯示的gnuplots,但使用我的數據。

對於三維相位空間圖中,序列A,B,C,d,E, F等可以用作空間座標(AB,BC,CD),(BC, cd, de),(cd,de,ef)等。創建的圖中的圖案揭示了後續序列之間的循環關係。在這個階段圖中,50000個16位隨機數會產生一個非結構化的雲點。

我想做完全一樣的事情。我有一個二進制文件(大約10 MB),我想通過gnuplot運行它來創建漂亮的gnuplot圖。

我該如何在gnuplot中輸入以實現此目的?

做一個谷歌搜索「階段空間陰謀」和gnuplot不會返回太多。我不知道這是因爲這篇文章是德文的翻譯。我認爲我沒有在堆棧交換站點找到相關答案。

回答

11

繪製三維相空間使用下面的腳本,它的工作方式類似於running average example從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。對於每個新值,所存儲的值將以shift進行移位。 samples需要注意前三個值不被使用,但只存儲(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)) 

如果您需要更改命令datasize,調用gnuplot並鍵入show datafile binary datasizes,看看哪些格式的支持。

+1

[This answer to the same question](http://superuser.com/questions/624631/how-do-i-use-gnuplot-to-create-a-3d-phase-space-plot)may be對你感興趣。 – Schorsch

+0

@Schorsch:感謝您的發現! @Christoph:你的回答非常高級 - 我把你的帽子給你......') – mpy

+0

@mpy謝謝你,知道它是否對OP有用。 – Christoph