与MATLAB中的表面图不同的结果

时间:2019-04-05 14:13:02

标签: matlab plot matlab-figure surface

>> x=0:0.001:720;
>> y=sind(x);
>> z=cosd(x);
>> surf(x,y,z);

我想使用上面的代码绘制表面,即X轴为x,y为Y轴,z为Z轴。 我还为以下目的编写了FORTRAN代码,创建了一个csv文件,并将其绘制在原点。我得到这样的结果:

FORTRAN Result

但是,在MATLAB中,当使用时,我得到了类似的想法:-

>> plot3(x,y,z)

如下图所示:

MATLAB Result

但这不是表面(出于明显的原因)。

使用surf命令时,我也收到一条错误消息:

  

Z必须是矩阵,而不是标量或向量。

我的代码可能是什么问题?

1 个答案:

答案 0 :(得分:1)

使用surf要求Z为矩阵。该功能可以通过meshgrid之类的功能轻松解决(griddata也非常有用)。

使用meshgrid使得使用surf非常容易。

但是ZY都只是X的函数,因此我无法解释为什么图Z的值会随{{1} }和X。从您列出的分析(数学)方程式中,Y值在Z维度中应该是恒定的。

Y

Surface plot

请注意,轮廓线在stepsize = 1; % use 10 for cleaner look x = 0:stepsize:720; y = sind(x); [X,Y] = meshgrid(x,y); Z = cosd(X); surf(X,Y,Z) 维度上是直线且平行(使用Y)。 Surface plot with contours shown beneath

另一种方法是遍历surfc(X,Y,Z)和{{}的元素x(由i索引)和y(由j索引) 1}}(向量)来计算x,其中y是矩阵。由于行和列的默认分配,此方法需要转置Z(i,j)之类的Z矩阵。


相关帖子:
How can I plot a function with two variables in octave or matlab?
MATLAB plot part of surface