2013-05-30 232 views
1

我从一些数据绘制了曲面。在同一个图中,我想要一个3D线(我想要绘制的线的[x,y,z]值)。当我尝试在同一图中使用plot3(x,y,z)时,线总是在曲面下方。在Octave表面图上绘制3D线

有什么办法解决这个问题吗?我不知道这个问题是否也出现在Matlab中。

小例子:

figure; 
hold all; 

y = x = 0:35; 
z = ones(1,36).*0.5; 
plot3(x,y,z); 

[X,Y] = meshgrid(-8:.5:8); 
R = sqrt(X.^2 + Y.^2) + eps; 
Z = sin(R)./R; 
surf(Z); 

结果(蓝线是在地表以下):

example

+1

OP在Octave中发现了这个问题,它允许具有多个赋值的表达式http://www.network-theory.co.uk/docs/octave3/octave_79.html我已经在答案中发布了等价的MATLAB代码低于 – Huguenot

回答

2

要回答你的问题的一部分,你没有得到在这个问题MATLAB与以下代码:

figure; 
hold all; 

x = 0:35; 
y = x; 
z = ones(1,36).*0.5; 
plot3(x,y,z); 

[X,Y] = meshgrid(-8:.5:8); 
R = sqrt(X.^2 + Y.^2) + eps; 
Z = sin(R)./R; 
surf(Z); 

enter image description here

+0

好吧,无论如何。我想这是因为Octave使用Gnuplot。 –

0

我在Octave中也有这个问题surf,所以我用mesh函数代替。这是不漂亮,并有不同的参数,但允许线覆盖它: plot3 line overlaying a mesh in Octave

我创建的代码相同的如上但更换surf

mesh ((X+8)*2.2, (Y+8)*2.2, Z); 

由于mesh需要它的参数被放大。结果大致相同。