计算两个点集之间的变换矩阵

参考:


计算两个对应点集之间的旋转矩阵R和转移矩阵T

FINDING OPTIMAL ROTATION AND TRANSLATION BETWEEN CORRESPONDING 3D POINTS


PCA为什么要用协方差矩阵?

协方差

协方差是用来度量两个随机变量之间关系的统计量。

  对于3维的数据,协方差矩阵为:

可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。注意:协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的

>> MySample=fix(rand(10,3)*50)
MySample =
     4    43    11
    19    28     6
    12    27     9
    40     7    11
    21    42    20
    45    31     2
     9    17    45
    13    25    47
     7    20    24
     6     3    24
>> cov(MySample)
ans =
  202.7111   -6.2000 -106.4889
   -6.2000  172.6778  -53.4111
 -106.4889  -53.4111  243.2111
>> dim1=MySample(:,1)
dim1 =
     4
    19
    12
    40
    21
    45
     9
    13
     7
     6
>> dim2=MySample(:,2)
dim2 =
    43
    28
    27
     7
    42
    31
    17
    25
    20
     3
>> dim3=MySample(:,3)
dim3 =
    11
     6
     9
    11
    20
     2
    45
    47
    24
    24
>> sum((dim1-mean(dim1)).*(dim2-mean(dim2)))/(size(dim1,1)-1)
ans =
   -6.2000
>> 
matlab demo

计算协方差矩阵还可以这样计算,先让样本矩阵中心化,即每一维度减去该维度的均值,使每一维度上的均值为0,然后直接用新的到的样本矩阵乘 上它的转置,然后除以(N-1)即可。

X=MySample-repmat(mean(MySample),10,1)

C = (X’*X)./(size(X,1)-1)

 

posted @ 2018-12-03 13:16  summer91  阅读(1223)  评论(0编辑  收藏  举报