我用MATLAB写的七参数计算模型,但是实际运用的过程中,误差居然达到了分米,最大是6分米,实在是做不出来了,不知道哪里错了
代码如下:
function dX=burse(A,B)
global dX
%计算七参数
Xa=A(:,1);Ya=A(:,2);Za=A(:,3);
Xb=B(:,1);Yb=B(:,2);Zb=B(:,3);
L=[Xb-Xa;Yb-Ya;Zb-Za]; %列出常数项
m=length(A); %重合点个数
if(m<3)
return;
end
C= [ones(m,1),zeros(m,1),zeros(m,1),zeros(m,1),-Za,Ya,Xa; %列出系数矩阵B
zeros(m,1),ones(m,1),zeros(m,1),Za,zeros(m,1),-Xa,Ya;
zeros(m,1),zeros(m,1),ones(m,1),-Ya,Xa,zeros(m,1),Za];
N=C'*C;
W=C'*L;
dX=N\W; %利用最小二乘法求参数