我有三个向量,X、Y 和 Z。长度相等 (20000,1)。我想在 3d 图中绘制所有三个。我尝试使用但无济于事,因为它们要求 Z 的大小为(20000,20000)surf
。plot3
有人可以帮忙吗?TIA
X = DAT(3,:);
Y = DAT(4,:);
Z = DAT(11,:);
[x,y] = meshgrid(X,Y);
surf(x,y,Z);
您是否尝试过griddata
或TriScatteredInterp
创建了插值曲面?
http://www.mathworks.com/matlabcentral/newsreader/view_thread/311767给出的代码片段可能会对您有所帮助。
X=rand(1,30);
Y=rand(1,30);
Z=rand(1,30);
[XI YI ZI] = griddata(X,Y,Z,linspace(0,1),linspace(0,1)');
figure
subplot(1,2,1)
trisurf(delaunay(X,Y),X,Y,Z)
subplot(1,2,2);
surf(XI,YI,ZI)
不!plot3
不需要 Z。如果plot3
您只想绘制一个点集,那么就可以完全按照您的意愿进行操作。
plot3(X,Y,Z,'.')
关键是,没有必要使用meshgrid
for plot3
。实际上,没有必要meshgrid
像您尝试过的那样使用surf
. (如果您要调用griddata
,那么meshgrid
将是必要的,但对于较小的网格。)
如果您需要一个曲面图,那么您需要创建一个曲面。如果这些点是分散的,那么您的基本选项是文件交换中的最后一个工具,如triscatteredinter
、griddata
或。gridfit