我有三個矢量,X,Y和Z.所有長度相等(20000,1)。我想在三維圖中繪製所有三個圖。我曾嘗試使用surf
和plot3
,但無濟於事,因爲它們需要Z的大小(20000,20000)。任何人都可以幫忙嗎? TIA具有3個相同大小的矢量的3D圖形的matlab
X = DAT(3,:);
Y = DAT(4,:);
Z = DAT(11,:);
[x,y] = meshgrid(X,Y);
surf(x,y,Z);
我有三個矢量,X,Y和Z.所有長度相等(20000,1)。我想在三維圖中繪製所有三個圖。我曾嘗試使用surf
和plot3
,但無濟於事,因爲它們需要Z的大小(20000,20000)。任何人都可以幫忙嗎? TIA具有3個相同大小的矢量的3D圖形的matlab
X = DAT(3,:);
Y = DAT(4,:);
Z = DAT(11,:);
[x,y] = meshgrid(X,Y);
surf(x,y,Z);
你試過griddata
或TriScatteredInterp
創建一個插值表面?
不! plot3
不需要Z.如果你只想繪製一個點集,那麼plot3
就是你想要的。
plot3(X,Y,Z,'.')
的一點是,沒有必要使用meshgrid
爲plot3
。事實上,沒有必要使用meshgrid
,因爲您已經嘗試過使用surf
。 (如果您打電話給griddata
,則需要meshgrid
,但是對於SMALLER網格。)
如果您需要曲面圖,那麼您需要創建曲面。如果點分散,那麼您的基本選項是triscatteredinter
,griddata
或gridfit
這樣的工具,這是文件交換的最後一個。
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)
當你說你想要在三維圖中繪製所有三個圖,你的意思是你想在每個[x,y,z]的圖中單個點?如果是這樣,你可以使用'plot3(X,Y,Z)'。 – 2013-04-08 14:40:09
這確實有效,但理想情況下,我想衝浪的工作,因爲它更容易在眼睛上。 – mallow 2013-04-08 14:53:26