如何在matlab中对点云进行排序

时间:2013-09-12 10:44:42

标签: matlab

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

[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的命令。

2 个答案:

答案 0 :(得分:2)

你的矩阵:

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));

导致: scatter plot

答案 1 :(得分:0)

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

scatter(x,y,2,z) 

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

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

scatter(x,z,2,y)

将绘制xz平面

或者您可以使用

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

然后单击MATLAB图中的旋转按钮并右键单击图形以更改视图(到xy,xz,yz平面)