【问题标题】:Using surf in Matlab在 Matlab 中使用 surf
【发布时间】:2015-09-27 09:35:01
【问题描述】:

我有两个变量:X,YX,Y 是每个5*1 矩阵。
每行代表一个特定的人,XY 是代表两个特征的两个变量。
我通过一定的运算结合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)。
因为我不想想绘制这些,因为我想绘制每个个人人和组合人。

【问题讨论】:

  • 您要绘制网格还是仅绘制 3d 图中的点?

标签: matlab graph plot matlab-figure surface


【解决方案1】:

我猜你想要的是你的 5 个人的 3d 图。这将分别绘制 5 个点。

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

您可以使用scatter3(X,Y,Z,S,C) 根据Z 值对值着色。其中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 将在这些点上创建一个平面。

【讨论】:

  • 我想要一个使用 surf 的 3d 绘图。我想从颜色上看到z 的变化。如果我在xy 不匹配时将z 值设置为0,它是否仍然绘制值0
  • 我写了以下函数function f=plotting(x,y,z1) z=zeros(length(x),length(y)); for i=1:length(x) for j=1:length(y) if(i ~=j) z(i,j)=NaN; else z(i,j)=z1(i); end end f=z; end 然后我使用了T=plotting(X,Y,Z) surf(x,y,T) 但它没有绘制任何图形。是不是因为它有这么多NaN
  • 发生这种情况是因为surf 是一个在网格上绘制平面的函数。对角矩阵不是网格,因为对角元素没有相邻元素。您能否详细说明所需输出的外观?编辑:你可以写z(~eye(length(x))) = NaN; 来避免循环。
  • 我编辑了我的帖子,向您展示了一种为各个点着色的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 1970-01-01
  • 2015-09-27
  • 1970-01-01
相关资源
最近更新 更多