将MATLAB中3d绘图的以下代码转换为Gnuplot的代码?

时间:2016-06-02 01:23:57

标签: gnuplot

我在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中绘制上述内容?我需要为wd的任意值执行此操作。我知道我需要splot函数,但我不知道如何实现x,y,z矩阵的计算。帮助将不胜感激!

编辑:似乎可以使用arrayword关键字/功能完成上述操作,但我还没有能够实现它

2 个答案:

答案 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