如何让matlab集群在矩阵中?

时间:2014-10-06 09:44:20

标签: matlab matrix cluster-analysis

我需要从两个2D图像重建3D真实空间中的个体。目前我可以给matlab提供一系列帧对(左和右)。然后它执行以下操作:

1:找到黑色像素: 2:计算每个黑色像素的矢量 3:搜索向量之间的交叉点 4:为每个交叉点创建数据点

由于鸟不是一个像素的大小,因此它们在3D空间中被重建为平面正方形。 X为宽度Y高度,Z距离摄像机。

我现在需要一种方法将这些磁盘减少到集中的单点,取其意思。为了做到这一点,我首先需要对它们进行聚类。

这三个人被安排在一个完美的正方形的角落所以:X = pdist(A)Y =联动(X)Z = clust(Y)不起作用,因为你将失去广场的一角。我使用下面的代码生成131个矩阵。每个矩阵告诉您哪个点属于另一个点。例如,M {1} {1}告诉您属于同一组的所有点与第一点(距离为0.2)

群集的所有信息都在这些矩阵中,但我需要做以下操作,我不知道如何。我需要Matlab来:

  1. 将矩阵1中的点分组到同一组中。
  2. 给那些群集ID == 1
  3. 然后转到不属于该组的第一个点的矩阵(在本例中为4)并执行相同的操作。
  4. 生成te矩阵的代码如下所示。个人的大小为.2,中心的坐标为[30,30,300] [30,30,600] [60,30,600] [X,Y,Z]

    [X,Y,Z] data:
    
    [X] 29.8000
       29.9000
       30.0000
       30.1000
       30.2000
       59.8000
       59.9000
       60.0000
       60.1000
       60.2000
       29.8000
       29.9000
       30.0000
       30.1000
       30.2000
    
    
    
    [Y]29.8000
       29.8000
       29.8000
       29.8000
       29.8000
       29.8000
       29.8000
       29.8000
       29.8000
       29.8000
       29.9000
       29.9000
       29.9000
       29.9000
       29.9000
    
    
    [Z]599.7336
      599.7336
      599.7336
      599.7336
      599.7336
      599.7336
      599.7336
      599.7336
      599.7336
      599.7336
      599.7336
      599.7336
      599.7336
      599.7336
      599.7336
    

    dCell在这种情况下是1。

    for k=1:length(dCell) 
        A{k}=[X{k},Y{k},Z{k}]; As{k}=sortrows(A{k}); 
    end
    
    for m=1:length(As{k}(:,1))
    
        B{k}{m}=As{k}(m)-As{k}(:,1);
        C{k}{m}=As{k}(m,2)-As{k}(:,2);
        E{k}{m}=As{k}(m,3)-As{k}(:,3);
        M{k}{m}=[B{k}{m},C{k}{m},E{k}{m}];   
    end
    

    数据需要在单元阵列中,因为整个过程中会出现尺寸不匹配。

0 个答案:

没有答案