matlab如何用3组数据绘制三维曲面

现在有3组数据 x是79*1的 y是4*1的,z是316*1的,用mesh(x,y,z)提示错误说z必须是矩阵,但我的z好像已经是矩阵啦,用[X,Y]=meshgrid(x,y)生成网格之后,还是不行,。。求大神指点 啊

x长度是79x1
y长度是4x1
所以z的大小应该是4x79

由于原来z是316x1的,并不知道储存的顺序,可能有两种对应情况
第一种 316个z是以下的方式对应的,先改变y,后改变x
z1 x1,y1
z2 x1,y2
z3 x1,y3
z4 x1,y4
z5 x2,y1
.............
z315 x79,y3
z316 x79,y4
那么 z=reshape(z,[4 79]); mesh(x,y,z)

第二种 316个z是以下的方式对应的,先改变x,后改变y
z1 x1,y1
z2 x2,y1
z3 x3,y1
z4 x4,y1
z5 x5,y1
.............
z315 x78,y4
z316 x79,y4
那么 z=reshape(z,[79 4]).'; mesh(x,y,z)

注意
mesh(x,y,z)
x和y可以是向量,就是一行,或者一列的数据。
而z要是矩阵,不能是一行或者一列,要是个多行多列的矩阵
如果x的长度是n,y的长度是m,那么z的大小要是 mxn
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-30
3组数据就是曲面的x,y,z坐标,程序根据要求不同而异,程序可这样写:
[x,y,z]=meshgrid(linspace(-5,5));
val=(x.^2 + (9/4)*y.^2 + z.^2 - 1).^3 - x.^2.*z.^3 - (1/9)*y.^2.*z.^3;%isosurface(x,y,z,val,0)
p = patch(isosurface(x,y,z,val,0));
isonormals(x,y,z,val,p)
set(p,'FaceColor','red','EdgeColor','none');
axis equal
grid on
view(-10,24)
%colormap(hot)
%axis off
camlight
rotate3d on
colormap(jet)
colorbar('location','EastOutside')
%colorbar('East')
ylabel(colorbar,'Emission intensity (a.u.)','fontsize',18)
set(gca,'fontsize',14,'linewidth',2)本回答被网友采纳
第2个回答  2021-01-03

本视频展示如何用matlab绘制散圆状态图,可用于相关科研数据绘图!

第3个回答  2014-02-25
把你的数据贴上来看看
第4个回答  2014-02-24
向量这个只能画三维空间曲线啊
相似回答