>> x=0:0.001:720;
>> y=sind(x);
>> z=cosd(x);
>> surf(x,y,z);
我想使用上面的代码绘制表面,即X轴为x,y为Y轴,z为Z轴。 我还为以下目的编写了FORTRAN代码,创建了一个csv文件,并将其绘制在原点。我得到这样的结果:
但是,在MATLAB中,当使用时,我得到了类似的想法:-
>> plot3(x,y,z)
如下图所示:
但这不是表面(出于明显的原因)。
使用surf
命令时,我也收到一条错误消息:
Z
必须是矩阵,而不是标量或向量。
我的代码可能是什么问题?
答案 0 :(得分:1)
使用surf
要求Z
为矩阵。该功能可以通过meshgrid
之类的功能轻松解决(griddata
也非常有用)。
但是Z
和Y
都只是X
的函数,因此我无法解释为什么图Z
的值会随{{1} }和X
。从您列出的分析(数学)方程式中,Y
值在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
索引) 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