2

我有三个向量,X、Y 和 Z。长度相等 (20000,1)。我想在 3d 图中绘制所有三个。我尝试使用但无济于事,因为它们要求 Z 的大小为(20000,20000)surfplot3有人可以帮忙吗?TIA

X = DAT(3,:);

Y = DAT(4,:);

Z = DAT(11,:);

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

surf(x,y,Z);
4

3 回答 3

2

您是否尝试过griddataTriScatteredInterp创建了插值曲面?

于 2013-04-08T15:01:00.293 回答
1

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)
于 2014-09-03T01:33:47.547 回答
1

不!plot3不需要 Z。如果plot3您只想绘制一个点集,那么就可以完全按照您的意愿进行操作。

plot3(X,Y,Z,'.')

关键是,没有必要使用meshgridfor plot3。实际上,没有必要meshgrid像您尝试过的那样使用surf. (如果您要调用griddata,那么meshgrid将是必要的,但对于较小的网格。)

如果您需要一个曲面图,那么您需要创建一个曲面。如果这些点是分散的,那么您的基本选项是文件交换中的最后一个工具,如triscatteredintergriddata或。gridfit

于 2013-04-08T16:21:49.010 回答