在Matlab中使用surf
我有两个变量,分别是在Matlab中使用surf,matlab,graph,plot,matlab-figure,surface,Matlab,Graph,Plot,Matlab Figure,Surface,我有两个变量,分别是X,YX,Y分别是5*1矩阵。 每行代表一个特定的人,X和Y是代表两个特征的两个变量。 我通过某些操作组合了X,Y的效果,形成了Z,因此Z也是一个5*1矩阵 现在我想绘制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)。 因为我不想把这些画出来,就
X
,Y
X,Y
分别是5*1
矩阵。每行代表一个特定的人,
X
和Y
是代表两个特征的两个变量。我通过某些操作组合了
X,Y
的效果,形成了Z
,因此Z也是一个5*1矩阵
现在我想绘制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)。因为我不想把这些画出来,就像我想把每个人画出来一样,而不是把人组合起来。我猜你想要的是5个人的3d图。这将分别绘制5个点
plot3(X,Y,Z,'ro')
您可以使用散射体3(X,Y,Z,S,C)根据Z
值为值着色。其中,S
表示尺寸,C
表示颜色
scatter3(X,Y,Z,20,Z)
colormap default
回答你的另一个问题[x,y]=meshgrid(x,y)
将生成两个字段,分别表示x
和y
的每个组合。使用z=diag(z)
可以得到一个对角矩阵。因此,您绘制的点是(X1,Y1,Z1),(X1,Y2,0)。。。(X2,Y1,0),(X2,Y2,Z2),(X2,Y3,0).
因此,您将绘制X
和Y
的所有可能性,但如果X
和Y
的索引不匹配,则将Z
值设置为零
然后,使用
surf
将在这些点上创建一个平面。您想在三维打印中打印网格还是仅打印点?我想使用surf
进行三维打印。我想看看z
颜色的变化。当x
和y
不匹配时,如果我将z
值设置为0,它是否仍然打印值0
我编写了以下函数函数f=打印(x,y,z1)z=零(长度(x),长度(y));对于i=1:长度(x)对于j=1:长度(y)如果(i~=j)z(i,j)=NaN;否则z(i,j)=z1(i);端部f=z;结束
然后我使用了T=plotting(X,Y,Z)
surf(X,Y,T)
但它不绘制任何图形。这是因为它有太多的NaN
值这是因为surf
是一个在网格上绘制平面的函数。对角矩阵不是网格,因为对角元素没有相邻元素。您能否详细说明所需输出的外观?编辑:您可以编写z(~eye(length(x))=NaN代码>以避免循环。我编辑了我的帖子,向您展示了为各个点着色的方法。