clear all;
syms a b c d e f g h i j k l m n o p q r s t u v w x y z;
model=[a b c;d e f;g h i;x y z]
data=[k l m n; o p q r; s t u v ]
N=4
size(data,2)
med=mean(data,2);
mem=mean(model,1);
C=datamodel-(Nmed)mem
%这里的矩阵分别为N3,和3*N类型对应于找了最近点之后的两点群的点对
%相当于点数不同的两个点群找出了两组点数相等的点群
C =
[ ak + dl + gm + nx - (k + l + m + n)(a/4 + d/4 + g/4 + x/4), bk + el + hm + ny - (k + l + m + n)(b/4 + e/4 + h/4 + y/4), ck + fl + im + nz - (k + l + m + n)(c/4 + f/4 + i/4 + z/4)]
[ ao - (o + p + q + r)(a/4 + d/4 + g/4 + x/4) + dp + gq + rx, bo - (o + p + q + r)(b/4 + e/4 + h/4 + y/4) + ep + hq + ry, co - (o + p + q + r)(c/4 + f/4 + i/4 + z/4) + fp + iq + rz]
[ as - (s + t + u + v)(a/4 + d/4 + g/4 + x/4) + dt + gu + vx, bs - (s + t + u + v)(b/4 + e/4 + h/4 + y/4) + et + hu + vy, cs - (s + t + u + v)(c/4 + f/4 + i/4 + z/4) + ft + iu + v*z]
一般按照计算SVD的方法:
data =
[ k, l, m, n]
[ o, p, q, r]
[ s, t, u, v]
减去平均
model =
[ a, b, c]
[ d, e, f]
[ g, h, i]
[ x, y, z]
B=data-repmat(mean(data,2),1,4)
B =
[ (3k)/4 - l/4 - m/4 - n/4, (3l)/4 - k/4 - m/4 - n/4, (3m)/4 - l/4 - k/4 - n/4, (3n)/4 - l/4 - m/4 - k/4]
[ (3o)/4 - p/4 - q/4 - r/4, (3p)/4 - o/4 - q/4 - r/4, (3q)/4 - p/4 - o/4 - r/4, (3r)/4 - p/4 - q/4 - o/4]
[ (3s)/4 - t/4 - u/4 - v/4, (3t)/4 - s/4 - u/4 - v/4, (3u)/4 - t/4 - s/4 - v/4, (3v)/4 - t/4 - u/4 - s/4]
K=B*A
pretty(expand(K(1,1)-C(1,1)))
K =
[ (a/4 + d/4 + g/4 - (3x)/4)(k/4 + l/4 + m/4 - (3n)/4) + (a/4 + d/4 - (3g)/4 + x/4)(k/4 + l/4 - (3m)/4 + n/4) + (a/4 - (3d)/4 + g/4 + x/4)(k/4 - (3l)/4 + m/4 + n/4) + (d/4 - (3a)/4 + g/4 + x/4)(l/4 - (3k)/4 + m/4 + n/4), (b/4 + e/4 + h/4 - (3y)/4)(k/4 + l/4 + m/4 - (3n)/4) + (b/4 + e/4 - (3h)/4 + y/4)(k/4 + l/4 - (3m)/4 + n/4) + (b/4 - (3e)/4 + h/4 + y/4)(k/4 - (3l)/4 + m/4 + n/4) + (e/4 - (3b)/4 + h/4 + y/4)(l/4 - (3k)/4 + m/4 + n/4), (c/4 + f/4 + i/4 - (3z)/4)(k/4 + l/4 + m/4 - (3n)/4) + (c/4 + f/4 - (3i)/4 + z/4)(k/4 + l/4 - (3m)/4 + n/4) + (c/4 - (3f)/4 + i/4 + z/4)(k/4 - (3l)/4 + m/4 + n/4) + (f/4 - (3c)/4 + i/4 + z/4)(l/4 - (3k)/4 + m/4 + n/4)]
[ (a/4 + d/4 + g/4 - (3x)/4)(o/4 + p/4 + q/4 - (3r)/4) + (a/4 + d/4 - (3g)/4 + x/4)(o/4 + p/4 - (3q)/4 + r/4) + (a/4 - (3d)/4 + g/4 + x/4)(o/4 - (3p)/4 + q/4 + r/4) + (d/4 - (3a)/4 + g/4 + x/4)(p/4 - (3o)/4 + q/4 + r/4), (b/4 + e/4 + h/4 - (3y)/4)(o/4 + p/4 + q/4 - (3r)/4) + (b/4 + e/4 - (3h)/4 + y/4)(o/4 + p/4 - (3q)/4 + r/4) + (b/4 - (3e)/4 + h/4 + y/4)(o/4 - (3p)/4 + q/4 + r/4) + (e/4 - (3b)/4 + h/4 + y/4)(p/4 - (3o)/4 + q/4 + r/4), (c/4 + f/4 + i/4 - (3z)/4)(o/4 + p/4 + q/4 - (3r)/4) + (c/4 + f/4 - (3i)/4 + z/4)(o/4 + p/4 - (3q)/4 + r/4) + (c/4 - (3f)/4 + i/4 + z/4)(o/4 - (3p)/4 + q/4 + r/4) + (f/4 - (3c)/4 + i/4 + z/4)(p/4 - (3o)/4 + q/4 + r/4)]
[ (a/4 + d/4 + g/4 - (3x)/4)(s/4 + t/4 + u/4 - (3v)/4) + (a/4 + d/4 - (3g)/4 + x/4)(s/4 + t/4 - (3u)/4 + v/4) + (a/4 - (3d)/4 + g/4 + x/4)(s/4 - (3t)/4 + u/4 + v/4) + (d/4 - (3a)/4 + g/4 + x/4)(t/4 - (3s)/4 + u/4 + v/4), (b/4 + e/4 + h/4 - (3y)/4)(s/4 + t/4 + u/4 - (3v)/4) + (b/4 + e/4 - (3h)/4 + y/4)(s/4 + t/4 - (3u)/4 + v/4) + (b/4 - (3e)/4 + h/4 + y/4)(s/4 - (3t)/4 + u/4 + v/4) + (e/4 - (3b)/4 + h/4 + y/4)(t/4 - (3s)/4 + u/4 + v/4), (c/4 + f/4 + i/4 - (3z)/4)(s/4 + t/4 + u/4 - (3v)/4) + (c/4 + f/4 - (3i)/4 + z/4)(s/4 + t/4 - (3u)/4 + v/4) + (c/4 - (3f)/4 + i/4 + z/4)(s/4 - (3t)/4 + u/4 + v/4) + (f/4 - (3c)/4 + i/4 + z/4)(t/4 - (3s)/4 + u/4 + v/4)]
0
既然没有差别,就有恒等式:
(a/4 + d/4 + g/4 - (3x)/4)(k/4 + l/4 + m/4 - (3n)/4) + (a/4 + d/4 - (3g)/4 + x/4)(k/4 + l/4 - (3m)/4 + n/4) + (a/4 - (3d)/4 + g/4 + x/4)(k/4 - (3l)/4 + m/4 + n/4) + (d/4 - (3a)/4 + g/4 + x/4)(l/4 - (3k)/4 + m/4 + n/4)= =K(1,1)=C(1,1)