Matlab 用3个大小相等的向量绘制3D图

Matlab 用3个大小相等的向量绘制3D图,matlab,3d,Matlab,3d,我有三个向量,X,Y和Z。它们的长度都相等(20000,1)。我想在3d绘图中绘制所有三个。我尝试过使用surf和plot3,但没有效果,因为它们要求Z的大小为2000020000。有人能帮忙吗? 短暂性脑缺血发作 您是否尝试过griddata或TriScatteredInterp创建插值曲面?您是否尝试过griddata或TriScatteredInterp创建插值曲面?否plot3不需要Z。如果您只想绘制一个点集,则plot3完全按照您的要求进行 plot3(X,Y,Z'.') 关键是,对于

我有三个向量,X,Y和Z。它们的长度都相等(20000,1)。我想在3d绘图中绘制所有三个。我尝试过使用
surf
plot3
,但没有效果,因为它们要求Z的大小为2000020000。有人能帮忙吗? 短暂性脑缺血发作


您是否尝试过
griddata
TriScatteredInterp
创建插值曲面?

您是否尝试过
griddata
TriScatteredInterp
创建插值曲面?

plot3
不需要Z。如果您只想绘制一个点集,则
plot3
完全按照您的要求进行

plot3(X,Y,Z'.')

关键是,对于
plot3
,无需使用
meshgrid
。事实上,没有必要像您尝试使用
surf
那样使用
meshgrid
。(如果要调用
griddata
,则需要
meshgrid
,但网格较小。)


如果需要曲面打印,则需要创建曲面。如果点是分散的,那么您的基本选项是像triscatteredinter、griddata或文件交换中的最后一个这样的工具。

plot3
不需要Z。如果您只想绘制一个点集,则
plot3
完全按照您的要求进行

plot3(X,Y,Z'.')

关键是,对于
plot3
,无需使用
meshgrid
。事实上,没有必要像您尝试使用
surf
那样使用
meshgrid
。(如果要调用
griddata
,则需要
meshgrid
,但网格较小。)

如果需要曲面打印,则需要创建曲面。如果点是分散的,那么您的基本选项是像triscatteredinter、griddata或文件交换中的最后一个这样的工具。

给出了代码片段,可能会对您有所帮助

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)
给出的代码片段可能对您有所帮助

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)

当您说要在3D绘图中绘制所有三个点时,您的意思是要在绘图中为每个[x,y,z]绘制一个点吗?如果是这样,您可以只使用
plot3(X,Y,Z)
。这确实可行,但理想情况下,我想让surf工作,因为它更易于观察。当您说要在三维绘图中绘制所有三个点时,您的意思是要在绘图中为每个[X,Y,Z]绘制一个点吗?如果是这样的话,您可以只使用
plot3(X,Y,Z)
。这确实有效,但理想情况下,我希望让surf工作,因为它更易于观看。