2015-09-27 42 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;'来避免循环。 –

相关问题