2014-11-04 18 views
0

我有一個非常簡單的倍頻劇本,我只是想繪製幾個值,但我得到的錯誤:數據值比浮動容量更大 - 繪製在八度

warning: gl-render: data values greater than float capacity. (1) Scale data, or (2) Use gnuplot 

的腳本:

a = 0.2; 
z = 160; 
L = 8; 
w = 31.12; 
x = 0; 
g = 9.81; 
k = 0.785; 
rho = 1025; 

    for t = 0:10 
     eta_0 = -(1/g)*exp(0)*cos(k*x-w*t); 
     u_x = a*w*exp(k*z)*cos(k*x-w*t); 
     w_x = a*w*exp(k*z)*sin(k*x-w*t); 
     p_d = -rho*a*g*exp(k*z)*cos(k*x-w*t); 
    endfor 

plot(t,eta_0); hold on 
plot(t,u_x); hold on 
plot(t, w_x); hold on 
plot(t,p_d); 

我不能在網上搜索後發現任何有關此錯誤有用,是新來使用倍頻和GNUPLOT所以不知道到底如何改用gnuplot的。我正在使用Ubuntu 12.04。任何意見或幫助將非常感激。

謝謝!

+1

它工作正常,我在八度3.8。在命令提示符處嘗試'graphics_toolkit('gnuplot')'以使用gnuplot,然後再次運行代碼,看看它是否更好。 – am304 2014-11-04 16:01:26

回答

1

你可能希望你的循環是如下,否則,你只會得到一個單一的數據點,不是一個曲線:

for t = 0:10 
     eta_0(t) = -(1/g)*exp(0)*cos(k*x-w*t); 
     u_x(t) = a*w*exp(k*z)*cos(k*x-w*t); 
     w_x(t) = a*w*exp(k*z)*sin(k*x-w*t); 
     p_d(t) = -rho*a*g*exp(k*z)*cos(k*x-w*t); 
endfor 

甚至更​​好的(不包括for循環,使用矢量化操作) :

t = 0:10; 
eta_0 = -(1/g)*exp(0)*cos(k*x-w*t); 
u_x = a*w*exp(k*z)*cos(k*x-w*t); 
w_x = a*w*exp(k*z)*sin(k*x-w*t); 
p_d = -rho*a*g*exp(k*z)*cos(k*x-w*t); 

您試圖繪製的值非常大(〜7e57),這可能是錯誤的來源。嘗試在代碼的開頭添加graphics_toolkit('gnuplot')以使用gnuplot圖形工具包,並查看它是否更好。我試圖在倍頻3.8,它工作得很好,給我下面的情節:

enter image description here

+0

PS:因爲'p_d'非常大,所有其他圖形看起來基本上都是零(即使它不是),所以這些圖在圖上並不真實。如果要將所有內容都看到一個圖上,您可能需要調整數據。 – am304 2014-11-04 16:12:04

+0

這真的很有幫助,謝謝。我確實注意到,我只得到一個數據點,並修復了這個問題。現在會嘗試你的建議 – user3460758 2014-11-04 16:32:38

+0

愚蠢的問題,但使用gnuplot時,是命令而不是劇情? – user3460758 2014-11-04 16:39:48