matlab 画三维图,提示矢量长度必须相同,怎么改

x=0:0.001:0.03;
y=0:0.001:0.03;
z=(x.*exp(-x*800)+y.*exp(-y*800)-(x+y).*exp(-(x+y)*800))/(exp(-x*800)+exp(-y*800)-exp(-(x+y)*800));
plot3(x,y,z);
xlabel('x');ylabel('y');zlabel('z');
grid on;
提示:“错误使用 plot3,矢量长度必须相同。”
想要达到图里的效果

从你给出的表达式分析,出现提示:“错误使用 plot3,矢量长度必须相同。”的主要原因是除号前少标了一个小圆点。即

原为:z=(x.*exp(-x*800)+y.*exp(-y*800)-(x+y).*exp(-(x+y)*800))/(exp(-x*800)+exp(-y*800)-exp(-(x+y)*800));

应为:z=(x.*exp(-x*800)+y.*exp(-y*800)-(x+y).*exp(-(x+y)*800))./(exp(-x*800)+exp(-y*800)-exp(-(x+y)*800));

如想要达到图里的效果,建议不要使用plot3()函数,可以使用surf()函数或mesh()函数。

实现代码:

x==0:0.001:0.03;y=0:0.001:0.03;

[X,Y] = meshgrid(x,y);

Z=(X.*exp(-X*800)+Y.*exp(-Y*800)-(X+Y).*exp(-(X+Y)*800))./(exp(-X*800)+exp(-Y*800)-exp(-(X+Y)*800));

surf(X,Y,Z)

xlabel('x');ylabel('y');zlabel('z');

用两种方法绘制的图形。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-08-06
length xyz看看哪个矢量长度不同 然后找错误追问

z的长度是1,然后怎么改

追答

所以求z的方程式有错误 你可以用for循环 如果不会用点的话

相似回答