【问题标题】:How to sort point cloud in matlab如何在matlab中对点云进行排序
【发布时间】:2013-09-12 20:28:37
【问题描述】:

我有点云数据的文本文件,例如

[17.42851 7.370431 -0.8465996                                            
17.3368 7.309645 -0.6999135
17.17311 7.201123 -0.4422026 
17.26928 7.269999 -0.5591076 
17.09828 7.153707 -0.3068624 
17.59379 7.476501 -0.8979237]

在上面的 .txt 文件中,第一行第一个值表示 x 坐标,第二个表示 y,第三个表示 z 坐标。 通过在 matlab 中使用uiimport 命令,我导入了它,但问题是,我想逐层绘制这些点,那么我应该如何逐层分离呢?请告诉我matlab的命令。

【问题讨论】:

  • “逐层”是什么意思?
  • 这意味着对于每个 z 坐标,我们必须在该平面上绘制 x 和 y 坐标,然后转到下一个 z 坐标(或下一个平面)
  • 所以您想要数据中每个 z 值的二维图?在您提供的示例数据中,每个点似乎都具有不同的 z 值,因此您将获得每个仅包含一个点的点的图。也许你想为每一层指定一个范围?

标签: matlab


【解决方案1】:

你的矩阵:

A = [17.42851 7.370431 -0.8465996;                                            
17.3368 7.309645 -0.6999135;
17.17311 7.201123 -0.4422026; 
17.26928 7.269999 -0.5591076; 
17.09828 7.153707 -0.3068624; 
17.59379 7.476501 -0.8979237];

有长度:

L = size(A,1);

首先你需要复制它:

B = repmat(A,L,1);

然后对最后一行进行排序(z):

B(:,3) = sort(B(:,3))

导致:

   17.4285    7.3704   -0.8979
   17.3368    7.3096   -0.8979
   17.1731    7.2011   -0.8979
   17.2693    7.2700   -0.8979
   17.0983    7.1537   -0.8979
   17.5938    7.4765   -0.8979
   ...
   17.4285    7.3704   -0.3069
   17.3368    7.3096   -0.3069
   17.1731    7.2011   -0.3069
   17.2693    7.2700   -0.3069
   17.0983    7.1537   -0.3069
   17.5938    7.4765   -0.3069

然后你可以用

绘制
scatter3(B(:,1),B(:,2),B(:,3));

导致:

【讨论】:

    【解决方案2】:

    如果我理解正确,您想绘制每个平面。

    scatter(x,y,2,z) 
    

    将绘制 x 和 y 坐标的 2D 图,点的大小为 2。图的颜色将是 z 坐标的线性映射。

    你可以以同样的方式为其他飞机继续...

    scatter(x,z,2,y)
    

    将绘制 xz 平面

    或者,您可以使用

    绘制 3D 点云
    scatter3(x,y,z)
    

    然后点击matlab图中的旋转按钮,右击图改变视图(到xy,xz,yz平面)

    【讨论】:

      猜你喜欢
      • 2012-07-22
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多