计算两个点集之间的变换矩阵
参考:
FINDING OPTIMAL ROTATION AND TRANSLATION BETWEEN CORRESPONDING 3D POINTS
协方差
协方差是用来度量两个随机变量之间关系的统计量。
对于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 >>
计算协方差矩阵还可以这样计算,先让样本矩阵中心化,即每一维度减去该维度的均值,使每一维度上的均值为0,然后直接用新的到的样本矩阵乘 上它的转置,然后除以(N-1)即可。
X=MySample-repmat(mean(MySample),10,1) C = (X’*X)./(size(X,1)-1)