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

x=linspace(-2,2,20);
y=x'';
z=x.*exp(-x.^2 - y.^2);
surf(x,y,z);

img


这是怎么回事照着官方文档敲的

多打了个转置:

x=linspace(-2,2,20);
y=x';
z=x.*exp(-x.^2 - y.^2);
surf(x,y,z);

img


需要说明的是这样的写法理论上来说需要17版之后的版本,之前的版本请用如下写法:

[x,y]=meshgrid(linspace(-2,2,20));
z=x.*exp(-x.^2 - y.^2);
surf(x,y,z);


surf的意思是说z按这么算只是个向量,画平面不够画,这样列式子,只能画一条线,surf会报错。
要把x,y每一种组合都有个对应的z,x有20个,y有20个,那z就应该有400个。
另外细分不够,弄成-2间隔0.2到20吧,用meshgrid给x,y赋值,这样就都是矩阵了,

[x,y]=meshgrid(-2:0.2:20);
z=x.*exp(-x.^2 - y.^2);
surf(x,y,z);

img