2015-09-27 77 views
-1

我有兩個變量說X,YX,Y分別是5*1矩陣。
每一行代表一個特定的人,XY是代表兩個特徵的兩個變量。
我通過某些操作合併了X,Y的效果,形成Z,所以Z也是一個5 * 1的矩陣。在Matlab中使用衝浪

現在我想繪製X,Y,Z。這是我想繪製(X1,Y1,Z1),(X2,Y2,Z2),...(X5,Y5,Z5)

這就是我所做的。

[x,y]=meshgrid(X,Y) 
z=diag(Z) 
surf(x,y,z) 

我想知道這是否劇情點,如(X1,Y2,Z2),(X1,Y3,Z2)(X2,Y1,Z3)。
因爲我不要要繪製這些作爲我想每個個人人和不是相結合的人。

+0

你想繪製一個網格或只是一個三維圖的點? –

回答

0

我在猜測你想要的是你的5人的3d情節。這將單獨繪製5個點。

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

您可以根據Z值利用scatter3(X,Y,Z,S,C)顏色值。其中S代表尺寸和C的顏色。

scatter3(X,Y,Z,20,Z) 
colormap default 

要回答你的其他問題。 [x,y]=meshgrid(X,Y)將產生代表XY的每個組合的兩個字段。與z = diag(Z)你有一個對角矩陣。因此,您繪製的點是(X1,Y1,Z1),(X1,Y2,0), ... (X2,Y1,0),(X2,Y2,Z2),(X2,Y3,0) ... 因此,您將繪製XY的所有位置,但如果XY的索引不匹配,請將Z值設置爲零。

使用surf將在這些點上創建一個平面。

+0

我想要一個使用'surf'的3d圖。我想從顏色中看到'z'的變化。如果我在'x'和'y'不匹配的情況下將'z'值設置爲0,那麼它仍然繪圖值爲'0' – clarkson

+0

我寫了下面的函數函數f = plotting(x,y,z1) Z =零(長度(X),長度(Y));對於i = 1:長度(x) 對於j = 1:長度(y) 如果(i = j) z(i,j)= NaN; else z(i,j)= z1(i); 結束 結束 f = z; '然後我用'T = plotting(X,Y,Z)''surf(x,y,T)'但它沒有繪製任何圖。是因爲它有那麼多'NaN'值 – clarkson

+0

發生這種情況是因爲'surf'是一個繪製飛機在網格上的功能。對角矩陣不是網格,因爲對角元素沒有相鄰元素。你能詳細說明理想的輸出應該是什麼樣子? 編輯:你可以寫'z(〜eye(length(x)))= NaN;'來避免循環。 –

相關問題