Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Matlab中使用surf_Matlab_Graph_Plot_Matlab Figure_Surface - Fatal编程技术网

在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以避免循环。我编辑了我的帖子,向您展示了为各个点着色的方法。