我在MATLAB中有以下3d图,我试图在Gnuplot中绘图,但不知道如何。在MATLAB中,x,y,z是在嵌套for循环中计算的矩阵,然后绘制:
w = 50 ;
ww = 0:1:w ;
d = 100 ;
dd = 0:1:d ;
for i=1:1:length(ww)
for j=1:1:length(dd)
x(i,j) = dd(i) ; % need to refer to array dd
y(i,j) = dd(j) ;
z(i,j) = <A complicated function ommitted for simplicity>
end
end
plot3(x,y,z)
我如何在Gnuplot中绘制上述内容?我需要为w
和d
的任意值执行此操作。我知道我需要splot
函数,但我不知道如何实现x,y,z矩阵的计算。帮助将不胜感激!
编辑:似乎可以使用array
和word
关键字/功能完成上述操作,但我还没有能够实现它
答案 0 :(得分:1)
在gnuplot中,只需设置范围并绘制函数:
set xrange [0:50]
set yrange [0:100]
z(x,y) = exp(-(x**2 + y**2)/100.0)
splot z(x, y)
如果您想更改网格,请使用set isosamples
执行此操作,例如
set isosamples 51,101
答案 1 :(得分:0)
你可能有点作弊,并从GNU Octave创建gnuplot情节文件https://www.gnu.org/software/octave/
假设你安装了Octave:
将图形工具包以八度为单位设置为gnuplot:
graphics_toolkit gnuplot
然后运行你的p [lot script。
然后将其转储到gnuplot文件中(假设在linux中运行 - 在windows中x11和/ dev / null需要更改):
drawnow ("x11", "/dev/null", false, "gnuplot.gpt")
现在应该有一个可以通过gnuplot加载的文件gnuplot.gpt - console命令:
gnuplot -p gnuplot.gpt