资源描述:
《matlab 常见经典平差 程序.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、希望本人编写的经典平差可以对matlab初学者以及测绘专业的学生有用Bycowboyfunctionvoid()sprintf('请选择平差类型')sprintf('1:参数平差2:条件平差3:具有条件的参数平差4:具有参数的条件平差')a=input('请输入对应号码');switch(a)case1%参数平差V=AX-Lsprintf('1:参数平差V=AX-L')n=input('请输入n=');t=input('请输入t=');A=input('请输入系数矩阵A=');L=
2、input('请输入常数项矩阵L=');P=diag(input('请输入权阵P='))%P=input('请输入权阵P=');N=A'*P*A;U=A'*P*L;sprintf('开始计算')X=inv(N)*(U);V=A*X-L;Qx=inv(N);u=sqrt((V'*P*V)/(n-t));fid=fopen('data.txt','wt');%写入文件路径,文件输出fprintf(fid,'=====================参数平差:V=AX-L==================
3、===');fprintf(fid,'输出n,t');fprintf(fid,'%12.5f%12.5f',n,t);%n,tfprintf(fid,'输出矩阵A')[m,n]=size(A);%Afori=1:1:mforj=1:1:nifj==nfprintf(fid,'%12.5f',A(i,j));elsefprintf(fid,'%12.5ft',A(i,j));endendendfprintf(fid,'');fprintf(fid,'输出矩阵L');[m,n
4、]=size(L);%Lfori=1:1:mforj=1:1:nifj==nfprintf(fid,'%12.5f',L(i,j));elsefprintf(fid,'%12.5ft',L(i,j));endendendfprintf(fid,'');fprintf(fid,'输出矩阵P');[m,n]=size(P);%Pfori=1:1:mforj=1:1:nifj==nfprintf(fid,'%12.5f',P(i,j));elsefprintf(fid,'%12.5ft'
5、,P(i,j));endendendfprintf(fid,'');fprintf(fid,'输出矩阵X');[m,n]=size(X);%Xfori=1:1:mforj=1:1:nifj==nfprintf(fid,'%12.5f',X(i,j));elsefprintf(fid,'%12.5ft',X(i,j));endendendfprintf(fid,'');fprintf(fid,'输出矩阵V');[m,n]=size(V);%Vfori=1:1:mforj=1:1:n
6、ifj==nfprintf(fid,'%12.5f',V(i,j));elsefprintf(fid,'%12.5ft',V(i,j));endendendfprintf(fid,'');fprintf(fid,'输出矩阵Qx');[m,n]=size(Qx);%Qxfori=1:1:mforj=1:1:nifj==nfprintf(fid,'%12.5f',Qx(i,j));elsefprintf(fid,'%12.5ft',Qx(i,j));endendendfprintf(f
7、id,'');fprintf(fid,'输出单位权中误差u');[m,n]=size(u);%ufori=1:1:mforj=1:1:nifj==nfprintf(fid,'%12.5f',u(i,j));elsefprintf(fid,'%12.5ft',u(i,j));endendendfprintf(fid,'');fclose(fid);case2%条件平差BV+W=0sprintf('2:条件平差BV+W=0')n=input('请输入n=');t=input('请输入t=
8、');B=input('请输入系数矩阵B=');W=input('请输入自由项向量W=');P=input('请输入权阵P=');sprintf('开始计算')K=-inv((B*inv(P)*B'))*W;V=inv(P)*B'*K;u=sqrt((V'*P*V)/(n-t));Ql=inv(P)-inv(P)*B'*inv(B*inv(P)*B')*B*inv(P);fid=fopen('data.txt','wt');%写入文件路径,文件输出fpr