gpt4 book ai didi

gnuplot - 大于 float 容量的数据值 - 以 Octave 绘制

转载 作者:行者123 更新时间:2023-12-04 18:06:02 25 4
gpt4 key购买 nike

我有一个非常简单的 Octave 脚本,我只是想绘制一些值,但出现错误:

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。任何建议或帮助将不胜感激。

谢谢!

最佳答案

您可能希望您的循环如下所示,否则,您只会得到一个数据点,而不是一条曲线:

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 图形工具包,看看它是否工作得更好。我在 octave 3.8 中尝试了它并且它工作正常,给了我以下情节:

enter image description here

关于gnuplot - 大于 float 容量的数据值 - 以 Octave 绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26738495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com