matlab有X,Y及Z值,Z值离散,为何不能画三维图?需要插值吗?

2024-11-18 18:34:14
推荐回答(3个)
回答1:

plot3用来画三维曲线图,不能画曲面图;
假设你的数据为
X=[1 2 3 4 5 6 7 8];%当然你的数据可能很复杂
Y=[2 3 4 5 6 7 8 9];
Z = 2 12 36 80 150 252 392 576
%我随意取的满足Z=X.^2*Y,当然你的Z不是很有规律,或者有你不知!
即有(x,y,z)共八组点,你想画出曲面图z=f(x,y)
可是你用surf画曲面图必须是对于X Y交叉的所有Z值都得已知,才可以画出!
>> [xx,yy]=meshgrid(X,Y)
xx =
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
yy =
2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5
6 6 6 6 6 6 6 6
7 7 7 7 7 7 7 7
8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9
即你应该知道所有的Z值,而不仅仅是(x,y)=(1,2),(2,3),(3,4),(4,5),(5,6),(6,7),(7,8),(8,9)点处对应的z值,只有这样才能画出你的曲面图
即想方法测出其他点的z值,只有获得了这些以后,才可以用插值函数interp2进行插值获得更精细的曲面图
即缩小区域及间隔
[x0,y0]=meshgrid(1:0.1:10,2:0.1:10)%当然你可以自己取范围与间隔
z0=interp2(X,Y,ZZ,x0,y0)%X,Y为你自己的数据,ZZ为我告诉你要获得的length(Y)行length(X)列的矩阵,得到的z0也为矩阵
surf(x0,y0,z0)%即画出你要的曲线图
希望我的回答能帮助你!

回答2:

先用[X0,Y0]=meshgrid(X,Y)生成网格;
然后赋值Z=aX+bY;
再surf(X,Y,Z)

回答3:

我想应该使用三维线条来绘制,不应该使用2D去绘制