matlab 常见经典平差 程序

上传人:xzh****18 文档编号:45919703 上传时间:2018-06-20 格式:PDF 页数:11 大小:238.36KB
返回 下载 相关 举报
matlab 常见经典平差 程序_第1页
第1页 / 共11页
matlab 常见经典平差 程序_第2页
第2页 / 共11页
matlab 常见经典平差 程序_第3页
第3页 / 共11页
matlab 常见经典平差 程序_第4页
第4页 / 共11页
matlab 常见经典平差 程序_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《matlab 常见经典平差 程序》由会员分享,可在线阅读,更多相关《matlab 常见经典平差 程序(11页珍藏版)》请在金锄头文库上搜索。

1、 希望本人编写的经典平差可以对 matlab 初学者以及测绘专业的学生有用 By cowboy function void() sprintf(请选择平差类型) sprintf(1: 参数平差n2: 条件平差n3:具有条件的参数平差n4: 具有参数的条件平差n) a=input(请输入对应号码n); switch (a) case 1 % 参数平差 V=AX-L sprintf(1:参数平差 V=AX-L) n=input(请输入 n=); t=input(请输入 t=); A=input(请输入系数矩阵 A=); L=input(请输入常数项矩阵 L=); P=diag(input(请输入权

2、阵 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 =n); fprintf(fid,输出 n,tn) ; fprintf(fid,%12.5f %12.5fn,n ,t) ;%n,t fprintf(fid,输出矩阵 An) m,n=size(A); %A for i=1:1:m for j=1:

3、1:n if j=n fprintf(fid,%12.5fn,A(i,j); else fprintf(fid,%12.5ft,A(i,j); end end end fprintf(fid,n); fprintf(fid,输出矩阵 Ln) ; m,n=size(L); %L for i=1:1:m for j=1:1:n if j=n fprintf(fid,%12.5fn,L(i,j); else fprintf(fid,%12.5ft,L(i,j); end end end fprintf(fid,n); fprintf(fid,输出矩阵 Pn) ; m,n=size(P); %P fo

4、r i=1:1:m for j=1:1:n if j=n fprintf(fid,%12.5fn,P(i,j); else fprintf(fid,%12.5ft,P(i,j); end end end fprintf(fid,n); fprintf(fid,输出矩阵 Xn); m,n=size(X); %X for i=1:1:m for j=1:1:n if j=n fprintf(fid,%12.5fn,X(i,j); else fprintf(fid,%12.5ft,X(i,j); end end end fprintf(fid,n); fprintf(fid,输出矩阵 Vn); m,

5、n=size(V); %V for i=1:1:m for j=1:1:n if j=n fprintf(fid,%12.5fn,V(i,j); else fprintf(fid,%12.5ft,V(i,j); end end end fprintf(fid,n); fprintf(fid,输出矩阵 Qxn); m,n=size(Qx); %Qx for i=1:1:m for j=1:1:n if j=n fprintf(fid,%12.5fn,Qx(i,j); else fprintf(fid,%12.5ft,Qx(i,j); end end end fprintf(fid,n); fpr

6、intf(fid,输出单位权中误差 un); m,n=size(u); %u for i=1:1:m for j=1:1:n if j=n fprintf(fid,%12.5fn,u(i,j); else fprintf(fid,%12.5ft,u(i,j); end end end fprintf(fid,n); fclose(fid); case 2 % 条件平差 BV+W=0 sprintf(2:条件平差 BV+W=0) n=input(请输入 n=); t=input(请输入 t=); B=input(请输入系数矩阵 B=); W=input(请输入自由项向量 W=); P=input

7、(请输入权阵 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); %写入文件路径,文件输出 fprintf(fid,=条件平差: BV+W=0 =n); fprintf(fid,输出 n,tn) ; fprintf(fid,%12.5f %12.5fn,n ,t) ;%n,t fprintf(fid,输出矩阵 Bn); m,n=size(B); %B for

8、i=1:1:m for j=1:1:n if j=n fprintf(fid,%12.5fn,B(i,j); else fprintf(fid,%12.5ft,B(i,j); end end end fprintf(fid,n); fprintf(fid,输出矩阵 Wn); m,n=size(W); %W for i=1:1:m for j=1:1:n if j=n fprintf(fid,%12.5fn,W(i,j); else fprintf(fid,%12.5ft,W(i,j); end end end fprintf(fid,n); fprintf(fid,输出矩阵 Pn); m,n=

9、size(P); %P for i=1:1:m for j=1:1:n if j=n fprintf(fid,%12.5fn,P(i,j); else fprintf(fid,%12.5ft,P(i,j); end end end fprintf(fid,n); fprintf(fid,输出矩阵 Vn); m,n=size(V); %V for i=1:1:m for j=1:1:n if j=n fprintf(fid,%12.5fn,V(i,j); else fprintf(fid,%12.5ft,V(i,j); end end end fprintf(fid,n); fprintf(fi

10、d,输出矩阵 Qxn); m,n=size(Ql); %Ql for i=1:1:m for j=1:1:n if j=n fprintf(fid,%12.5fn,Ql(i,j); else fprintf(fid,%12.5ft,Ql(i,j); end end end fprintf(fid,n); fprintf(fid,输出单位权中误差 un); m,n=size(u); %u for i=1:1:m for j=1:1:n if j=n fprintf(fid,%12.5fn,u(i,j); else fprintf(fid,%12.5ft,u(i,j); end end end f

11、printf(fid,n); fclose(fid); case 3 % 具有条件的参数平差 % 参数平差 V=AX-L % 条件平差 BX+W=0 sprintf(3:具有条件的参数平差 V=AX-L;BX+W=0) n=input(请输入 n=); t=input(请输入 t=); r=input(请输入 r=); A=input(请输入误差方程系数矩阵 A=); L=input(请输入常数项矩阵 L=); B=input(请输入条件方程系数矩阵 B=); W=input(请输入自由项向量 W=); P=input(请输入权阵 P=); sprintf(开始计算) K=-(inv(B*in

12、v(A*P*A)*B)*(W+B*inv(A*P*A)*A*P*L) X=(inv(A*P*A)*(B*K+A*P*L) N=(A*P*A) M=B*inv(N)*B Qx=inv(N)-inv(N)*B*inv(M)*B*inv(N) u=sqrt(V*P*V)/(n-t+r) fid=fopen(data.txt,wt); %写入文件路径,文件输出 fprintf(fid,= 具 有 条 件 的 参 数 平 差 : V=AX-L;BX+W=0 =n); fprintf(fid,输出 n,t,rn) ; fprintf(fid,%12.5f %12.5f %12.5fn,n ,t,r); %n,t,r fprintf(fid,输出矩阵 An); m,n=size(A); %A for i=1:1:m for j=1:1:n if j=n fprintf(fid,%12.5fn,A(i,j); else fprintf(fid,%12.5ft,A(i,j); end end end fprintf(fid,n); fprintf(fid,输出矩阵 Ln);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号