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

问题描述 投票:0回答:1
>> 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必须是矩阵,而不是标量或向量。

我的代码可能出现什么问题?

matlab plot matlab-figure surface
1个回答
1
投票

使用surf需要Z作为矩阵。使用像meshgrid这样的函数很容易修复(也很有用griddata)。

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

但是ZY都只是X的功能所以我无法解释为什么你的情节Z值会随着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)

Surface plot

请注意,轮廓线在qazxsw poi维度上是直的并且是平行的(使用qazxsw poi)。 qazxsw poi

另一种方法是循环通过Y(由surfc(X,Y,Z)索引)和Surface plot with contours shown beneath(由x索引)的元素,其中iy(向量)计算j,其中x是矩阵。由于行和列的默认分配,此方法需要转置y矩阵,例如Z(i,j)


相关文章: Z Z

© www.soinside.com 2019 - 2024. All rights reserved.