matlab三维插值得到一个光滑的三维图。但怎么求x,y点处的z值啊

2024-11-18 16:37:30
推荐回答(2个)
回答(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):

点击上方属性值 里面有