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

Dissimilar results to the surface plot in MATLAB

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

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

然而,在 MATLAB 中,我在使用时得到了类似的想法:-

>> plot3(x,y,z)

如图所示:

但它不是表面(原因很明显)。

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

Z must be a matrix, not a scalar or vector.

我的代码可能存在什么问题?

使用 surf requires Z to be a matrix. This is fixed easily with functions like meshgrid (also useful is griddata).

使用 meshgrid makes using surf 非常方便。

但是 ZY 都只是 X 的函数所以我无法解释为什么你的 plot Z-value 会随 XY。根据您列出的分析(数学)方程式,Z 值在 Y 维度中应该是常数。

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 维度(使用 surfc(X,Y,Z))中是笔直且平行的。

另一种方法是遍历 x(由 i 索引)和 y(由 j 索引)的元素,其中 xy(向量)计算 Z(i,j) 其中 Z 是矩阵。由于行和列的默认分配,此方法需要转置 Z 矩阵,例如 surf(X,Y,Z.').


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