我有一个非常简单的八度脚本,我只想绘制一些值,但我得到错误:
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);
我无法在网上搜索后发现有关此错误的任何有用信息,并且不熟悉使用octave和gnuplot,因此不确定如何使用gnuplot。我使用的是Ubuntu 12.04。任何建议或帮助将非常感激。
谢谢!
答案 0 :(得分: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
图形工具包,看看它是否更好。我在八度音阶中尝试了它,它工作正常,给我以下情节: