基于MATLAB的水准网和测边网平差程序设计

更新时间:2023-03-16 00:08:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

东华理工大学毕业设计 摘要

基于MATLAB的水准网和测边网平差程序设计

摘 要

MATLAB是目前在研究机构广泛应用的一种数值计算及图形工具软件,它的特点是语法结构简明、数值计算高效、图形功能完备,特别适合非专业编程员完成数值计算、科学试验处理等任务。以往的测量数据处理方法需要编制特定的处理矩阵运算程序,而且程度复杂,难度大。

本文介绍一种基于MATLAB的水准网和测边网的程序设计方法,与其它算法语言相比,具有编程简单,运算速度快的特点。文中分别阐述了水准网和测边网程序的理论基础、实现步骤和运行结果。通过实例的分析,总结出利用MATLAB对测量数据处理有很大的应用价值,它缩短了编程的时间,提高工作效率。

关键词:MATLAB; 水准网; 测边网; 程序设计

1

东华理工大学毕业设计 摘要

ABSTRACT

MATLAB is one species of numerical-values calculation and graphic tools software which is widely used to apply at research institutions at present. The particularities are: concise grammar-structure、highly efficient in numerical values calculating、complete function of graphs、especially it is adapted to evildoing professional programmer to accomplish the tasks that are numerical-values calculating and scientific experiments treating. The ancient methods of measured data-processing need establishing special proceedings of treating matrices operation, moreover, it is complex and greatly difficult. This article introduces one programming method dealing with leveling and measuring edge network based on MATLAB. Compared with other algorithm language, it has particularities which are simply programming and quickly operating. The article separately expatiate the theories basics、realizing steps and running results at leveling and measuring edge network. With the analysis of examples, it has prodigious application value in measured data-processing by use of MATLAB. Moreover, it shortens programming time and improves working effectiveness.

Key words:MATLAB;leveling network;measuring edge network;programming

2

东华理工大学毕业设计 目录

目 录

绪论 .................................................................. 4 1. MATLAB软件简介 ................................................... 5 2.MATLAB 在测量平差中的应用 .......................................... 6 2.1测量平差原理的概述 ................................................ 6 2.2平差程序总体方案 .................................................. 7 3.1程序的功能 ........................................................ 8 3.2水准模型网的间接平差 .............................................. 8 3.2.1 “权”值的确定 ................................................ 8 3.2.2 水准路线的平差计算 ............................................ 9 3.2.3 精度评定 ..................................................... 11 3.3 水准网间接平差程序信息设计 ....................................... 11 3.4 水准网程序与使用说明 ........................................... 12 3.4.1 水准网程序流程图 ............................................ 12 3.4.2 水准网程序的使用 ............................................ 12 3.5 案例 ............................................................ 13 4. 测边网平差程序设计 ................................................ 15 4.1 数学模型 ........................................................ 15 4.1.1 误差方程和法方程的组成 ....................................... 15 4.1.2 边长观测的权 ................................................ 15 4.1.3 解算法方程 .................................................. 16 4.1.4 精度评定 .................................................... 19 4.2 测边网平差信息设计 ............................................ 20 4.2.1 主要的技术要求 .............................................. 21 4.3利用MATLAB的绘图语句绘制网图 ................................... 21 4.4 测边网程序和使用说明 ............................................ 22 4.5 程序代码说明: ................................................. 23 4.6 程序的使用算例 .................................................. 25 结 论 ................................................................ 29 致 谢 ............................................................... 30 参考文献 ............................................................. 31 附录一 ............................................................... 32 附录二 ............................................................... 36 附录三 ............................................................... 46

3

东华理工大学毕业设计 绪论

绪论

作为一名测量技术人员,如果不掌握一门PC机编程语言与便携计算工具,要想提高测量工作的效率几乎寸步难行。测量需求的多样性与复杂性,造就了测量计算鲜明的个性化特点,这就是在商业测量计算软件高度发达的今天,掌握一种实用的程序语言进行编程计算仍有广泛的市场需求的重要原因。

当今较流行的计算机程序语言基本上都是基于Windows的,例如Turbo Pascal,Visual Basic,Visual C,Borland C++等,这些程序语言的优势是基于对象及可利用Windows丰富的系统资源,应用它们可以开发出界面非常丰富和友好的应用程序,其劣势主要有以下几点:

1.Windows程序都非常庞大,学习并熟练掌握它们并非易事。

2.虽然市场上已有的多种专用的测量平差软件都是采用C语言开发的,但这些软件价格都比较贵,而且都带有加密狗,一次只能供一个用户使用。出于商业目的,开发商不会公开程序源代码,这为修改程序功能以适应用户的特殊需求带来了不便。 3.在测量生产中,经常需要根据工程的实际情况进行一些个性化的数值计算工作,这些数值计算工作无固定模式,这就需要求测量技术人员最好能熟练掌握一种适用于数值计算的程序语言,以便提高测量计算的效率。

4.C语言的数值计算语句不够丰富,例如,在测量平差计算中,经常需要进行的矩阵运算,尤其是解法方程的矩阵求逆不能直接使用语句实现,而必须应用计算机算法编程实现。

如果不是基于商业软件开发,只为满足实际测量工作计算需要,则C语言的劣势就变成了MATLAB语言的优势。

4

东华理大学毕业设计 MATLAB软件简介

1. MATLAB软件简介

MATLAB是从Matrix(矩阵)和Laboratory(实验室)各取前3个字母组成的,意思是矩阵实验室,是美国MathWorks公司于20世纪80年代中期推出的一种交互式、面向对象的科技应用软件,是一个为科学和工程计算而专门设计的高级交互式软件包。MATLAB 集成了图示与精确的数值计算,是一个可以完成各种计算和数据可视化的强有力工具,其优秀的数值计算能力和卓越的数据可视化能力使其很快在数学软件中脱颖而出,成为以矩阵运算为主要工作方式的线性代数、概率论和数理统计、自动控制、数字信号处理、动态系统仿真等领域教学和科研工作者的有力武器。随着该软件自身的发展及市场的需求,其功能日趋完善,前其最高版本7.0版已经推出,随着版本的不断升级,它的数值计算及符号计算功能得到了进一步完善。

MATLAB是以矩阵作为数据操作的基本单位,矩阵的生成、运算、转置、求逆等非常简单。在MATLAB环境中,不需要对创建的变量对象给出类型说明和维数,所有的变量都作为双精度数来分配内存空间,MATLAB将自动地为每一个变量分配内存。MATLAB语言起源于矩阵运算,并已经发展成为一种高度集成的计算机语言,它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。MATLAB系统主要包含5 部分的内容:MATLAB 工作环境、Mablab 数学函数库、MATLAB语言体系、句柄图形、MATLAB应用程序接口(API)。MATLAB系统主要功能包括:数值计算功能、符号计算功能、数据分析和可视化、文字处理功能、SIMULINK动态仿真功能。同时,MATLAB又是开放的,除了内部函数之外,所有的MATLAB 主包文件和各工具包文件都是可读可改的源文件,用户可以作为参考掌握其用法,并可对其修改以适应自己的需要,也可加入自己编写的文件构成新的工具包。例如,随着GPS 的广泛应用,Orion Dynamics and Con2t rol Corporation、Constell Inc. GPSSoft LLC、NavsysCorporation等多家公司都相应开发出了适于GPS数据处理的MATLAB 工具箱。

MATLAB是一个集数值计算、图形管理、程序开发于一体的功能十分强大的系统。将MATLAB应用于测量数据的处理是一件非常有意义的工作。Mo2hamed等曾成功地在MATLAB系统中利用白滤波技术研究动态解算GPS载波相位信号的模糊度问题。因为测量数据的处理特别是测量平差主要应用矩阵运算,而MATLAB又特别易于做矩阵运算,因此,研究开发基于MATLAB的测量平差方法具有极好的应用价值。

5

东华理工大学毕业设计 测边网平差程序设计

位km)。

4.1.3 解算法方程

由于法方程是对称正定阵,因此,可采用改进的平方根法进行解算。 平方根法是对称正定矩阵非常有效的三角分解方法,设A为n阶方阵,如果其所有顺序主子式均不为零,则其存在唯一的分解式: A=LDR

?1?L =?l2????l??n1??d1???,D=????0??1?????其中

?ln,n?10????dn???1?,R =?????r12??r1n???? rn?1,n??1??由于此住A对称性,得L现在设

?d1?D=??????dn????=????RT,又根据A阵正定的性质,可证明D均为正数。

d1?d?????d1???????112d1?d????d1?

即 则 为方便,记为

角方程组:

LY?D?DD1122

112T2A?LDL?TL2DDT?L(L)(D?L?D)?T

LLA?LL

T称为Cholesky分解,即正定对称矩阵的平方根分解法。解AX?b等阶于求解两个三

b和LX?YT

在用平方根分解法计算时,需要进行n次开方运算。为了避免开方,可以直接采用对称正定的A?LDLT分解式对平方根法进行改进。从而解方程组AX?LDLT?b可以按如

下步骤进行:把A分解成A,则AX?b变成(LDLT)X?b,即等价于

?LY?b ?T?1LX?DY?由此可以解出X和Y。这称为改进的平方根法,在计算中避免了开方运算。

平方根法和改进的平方根法的计算量和存储量比消去法节约近一半,而且不需要选主元,能得到比较精确的数值解。

16

东华理工大学毕业设计 测边网平差程序设计

法方程用改进平方根法解算的过程如下: (1)分解:

?S1?S????1C?STD?1S

11??其中

Sn1??S???,D?????Smn????? ?Sm??n

?c11??????c?n1????1cn1??s12????s??11?cnn?????s1n??s11??sn?1,nsn?1,n?1?????S?????????1??11???1? ??Smn??nSs1j?c1j c2j?c3j?s12s1js11s13s1js11s2j,s2j?c2j?s12s1js11,j?2s13s1js11s23s2js22

,j?3?s23s2js22?s3j,s3j?c3j??纯量计算公式为 (2)求逆

R?S?1s1j?cij????cij??i?1i?1?k?1skiskjskki?1,j?2

??r1n????rnn?? 由RS=I得

?r1?? ???1?r11?R????

rr2122???rnr?rnnn21??s???????????11s?1222ss?nns??snn?1?1??02??????????00?1???0?0??0? ???1? 17

东华理工大学毕业设计 测边网平差程序设计

纯量计算公式:

通式为 (3)求积

rii?1siir??r11s1212s22r?(r11s13?r12s23)13?s33r?(r11s1n???r1(n?1)s(n?1)n1n?

snnr

r22s1223??s33r?(r22s24?r23s34)24?s44r?(r22s2n???r2(n?1)s(n?1)n2n?snn??r?1ii ?s?ii?j?1?r

?ikskj?r?k?1ij?,j?i??sijQ?(STD?1S)?1?S?1D(?S1T)?RTD R?r11?rn1??s11??r11?Q?RDTR?????????

????????r???????nn?s?n?n?1rn?r??nn?s11r11s12r12?s1nr1n??r11????ss??22r22?2nr2n??rnnr?nn??????????? ?s??nnrnn??r1nrnn?r?nn?18

东华理工大学毕业设计 测边网平差程序设计

4.1.4 精度评定

(1) 坐标改正数以及单位权中误差的计算m0 使用上三角一维数组形式存储坐标改正数的公式为:

i?1n ?xi???qjiwj?j?1?qj?1ijwj,i?1,?,n

?的单位是cm. 其中,n=2?dd,xi平差值:

写成分量的形式,为

Xi?X0i0?X?X??x

??xi

如果近似坐标的误差较大,或网形较大,平差的结果不会精确,这时,就需要进行迭 代平差,直到两次平差间互差在允许值内。

由测量平差理论: 同样可得到单位权中误差:

m0?[PVV]m?n???VTPVn?t

其中,m-n观测个数减去未知点个数;

m?m1?m2?m3,n?2?dd?ST,ST?方向观测的测站数[PVV]?[pll]?[?x??]

(2)点位误差椭圆

误差椭圆表示了网中点或点与点之间的误差分布情况如图。在测量工作中,常用的误差椭圆对布网方案作精度分析。绘制误差椭圆只需要三个数据:椭圆长半轴a,短半轴b和主轴方向φ,其求法为

a?b?221212(?(?2x????2y??(?(?2x????2y)?4?)?4?222xy2x2y2x2y2xy????,)???)tan2??2?xy2y

?2x?? 19

东华理工大学毕业设计 测边网平差程序设计

图4-1 误差椭圆的表达

顾及方差与权倒数的关系,得

a?2

?022(Qxx?Q2?yy(Q?Qxx)y?yQ422

b?2?02(Qxx?Qyy?(Qxx?Qyy)?Q4xy??x)y??,2?)??2tan?2?2QxyQxx?Qyy

根据上述的理论,我们实际要求的是mxi、myi、mxiyi。只要得到了这些元素,就能依照上面的公式来求得椭圆的元素了。 4.2

测边网平差信息设计

外业测量的数据首先应进行预处理,包括测站平差、归心计算、观测值归化到椭球面的改正、椭球面归化到高斯平面的改正等,然后将预处理后的数据输入到以后缀名为TXT的文本文件中,该数据文件的组织格式如下所列:

表4-1 数据组织格式

次序 1 2 3 4 5 6 7 8 9

内容

已知点个数ed,未知点个数dd,[控制参数]

点号pn。先输入已知点编号,各点输入顺序无要求 已知点坐标,x0,y0,x1,y1,x2,y2? 测量边的个数m1

边长的固定误差ms,边长的比例误差pp。单位分别是:cm和×0.000001 边长的起始点号e,终点点号d,边长sid。每一条边一行,依次列出 推算近似坐标的路线经过的边数

推算近似坐标的起算已知点坐标(按顺时针) 推算近似坐标的路线经过的边的边号

20

东华理工大学毕业设计 附录二

附录二

测边网平差程序代码:

global ed dd sd dd1 pn x0 y0 m1 m2 m3 ms pp e d sid md g f aa bb cc rt rr tt ql w global pathname net_name s_datafile b_datafile filename; x0=[];y0=[];e=[];d=[];sid=[];g=[];f=[];pn=[];

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%数据的读入

if(isempty(pathname)|isempty(net_name))

[filename,pathname]=uigetfile('*.txt','Input filename'); i=find('.'==filename); net_name=filename(1:i-1); end

fit1=fopen(strcat(pathname,filename),'rt'); if(fit1==-1)

msgbox('Input File or Path is not correct','Warning','warn'); return;

end read

b_datafile='out.txt'

fit2=fopen(strcat(pathname,net_name,b_datafile),'wt'); if(fit1==-1)

msgbox('Input File or Path is not correct','Warning','warn'); return; end

[a]=fscanf(fit1,'%d',2); ed=a(1);dd=a(2); sd=ed+dd;

fprintf(fit2,']\\n',ed,dd,dd1); fprintf(fit2,'\\n');

[pn]=fscanf(fit1,'%d',sd);

36

%open afile to 东华理工大学毕业设计 附录二

pn1=pn;

[pn1,i2]=chkdat(sd,pn,pn1);

fprintf(fit2,'] ] ] ] ] ] ] ] ] ] ]\\n',pn); fprintf(fit2,'\\n');

[a]=fscanf(fit1,'%f',2*ed); for i=1:ed

x0(i)=a(2*i-1); y0(i)=a(2*i);

fprintf(fit2,'.3f .3f\\n',x0(i),y0(i)); end

fprintf(fit2,'\\n'); m1=fscanf(fit1,'%d',1); fprintf(fit2,']\\n',m1); isid=0; if(m1>0)

fprintf(fit2,'side\\n'); [a]=fscanf(fit1,'%f',2); ms=a(1); pp=a(2);

fprintf(fit2,'%6.2f %6.2f\\n',ms,pp); [a]=fscanf(fit1,'%d %d %f',3*m1); for i=1:m1

e(i)=a(3*i-2);d(i)=a(3*i-1);sid(i)=a(3*i); fprintf(fit2,'] ] .3f\\n',e(i),d(i),sid(i)); end

[e,i1]=chkdat(sd,pn,e); [d,i2]=chkdat(sd,pn,d); i3=0; for i=1:m1; if(e(i)==d(i)) i3=1;

fprintf(fit2,'* * ] ] ] * *\\n',i,e(i),d(i)); end

fprintf(fit2,'] ] .3f\\n',e(i),d(i),sid(i)); end

37

东华理工大学毕业设计 附录二

isid=i1+i2+i3; end idir=0; kk=isid if(kk>0)

msgbox('Error by function rddat1','Warning','warn'); return; end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%近似坐标计算

xyknow(1:ed)=pn1(1:ed);xyunknow(1:dd)=pn1(ed+1:sd); [aa]=fscanf(fit1,'%d',2); A=aa(1);B=aa(2); mn=fscanf(fit1,'%d',1); [bb]=fscanf(fit1,'%d',mn); m=bb;

for i=1:length(m) if i==1

if e(m(i))==A|e(m(i))==B P=d(m(i)); else

P=e(m(i)); end else

if e(m(i-1))==A|d(m(i-1))==A B=P; else A=P; end

if e(m(i))==A|e(m(i))==B P=d(m(i)); else

P=e(m(i)); end

38

东华理工大学毕业设计 附录二

end for j=1:m1

if (e(j)==P|d(j)==P)&(d(j)==A|e(j)==A) s1=sid(j); end

if (e(j)==P|d(j)==P)&(d(j)==B|e(j)==B) s2=sid(j); end end

deltx=x0(B)-x0(A); delty=y0(B)-y0(A);

alfaAB=alfa(deltx,delty) ; ss=sqrt(deltx*deltx+delty*delty);

ee=(s1*s1+ss*ss-s2*s2)/(2*ss);ff=sqrt(s1*s1-ee*ee); x0(P)=x0(A)+ee*cos(alfaAB)-ff*sin(alfaAB); y0(P)=y0(A)+ee*sin(alfaAB)+ff*cos(alfaAB); end

fprintf(fit2,'\\n');

fprintf(fit2,'计算的近似坐标\\n'); for i=1:sd

fprintf(fit2,'.3f .3f \\n',x0(i),y0(i)); end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% k=1; while(k)

lo=2062.648062470964; n=2*dd; sum=n*(n+1)/2.0; sd=ed+dd; a=[];

39

东华理工大学毕业设计 附录二

a(1:m1,1:9)=0.0; c(1:sum)=0.0; w(1:n)=0.0;

fprintf(fit2,'误差方程系数和常数项 \\n'); for i=1:m1 %边长观测误差方程 dx=x0(d(i))-x0(e(i)); dy=y0(d(i))-y0(e(i)); ss=sqrt(dx*dx+dy*dy); cosa=dx/ss; sina=dy/ss;

a(i,1)=2*e(i)-1-2*ed+1.0e-9; a(i,2)=-cosa; a(i,3)=a(i,1)+1; a(i,4)=-sina;

a(i,5)=2*d(i)-1-2*ed+1.0e-9; a(i,6)=cosa; a(i,7)=a(i,5)+1; a(i,8)=sina;

a(i,9)=10.0*(ss-sid(i));

%ql(i)=(ms^2+(ss*pp*0.0001)^2); ql(i)=((ms+ss*pp*0.001)); ql(i)=100/ql(i)^2;

fprintf(fit2,'.3f .3f .3f .3f .3f .3f .3f .3f .3f \\n',a(i,:)); end

% fprintf(fit2,'.3f \\n',ql); for i=1:m1 %形成法方程 for j=1:4

jj=fix(a(i,2*j-1)); if(jj<=0) continue; end

w(jj)=w(jj)+a(i,2*j)*a(i,9)*ql(i); di=(jj-1)*(n-jj/2.0);

40

东华理工大学毕业设计 附录二

for k=1:4

kk=fix(a(i,2*k-1)); if(kk<=0|jj>kk) continue; end

c(di+kk)=c(di+kk)+a(i,2*k)*a(i,2*j)*ql(i); end end end

fprintf(fit2,' \\n');

fprintf(fit2,'.3f \\n',w); fprintf(fit2,'法方程系数\\n');

fprintf(fit2,'.3f .3f .3f .3f .3f .3f .3f .3f .3f \\n',c)

%%%%%%%%%%%%%%坐标改正数和单位权中误差的计算 sd=ed+dd; n=2*dd; k=0; for i=1:n dxy(i)=0.0; di=(i-1)*(n-i/2.0); for j=1:n

dj=(j-1)*(n-j/2.0); if(j

dxy(i)=dxy(i)-c(dj+i)*w(j); %dxy(i)=dxy(i)-c(di+j)*w(j); else

dxy(i)=dxy(i)-c(di+j)*w(j); %dxy(i)=dxy(i)-c(dj+i)*w(j); end end

%if(abs(dxy(i))>1.0) %k=1; %end

41

东华理工大学毕业设计 附录二

dxy(i)=-dxy(i)/100.0; end

%end % while(k11) while(k11) x(1:ed)=x0(1:ed); y(1:ed)=y0(1:ed); for i=1:dd

x(ed+i)=x0(ed+i)+dxy(2*i-1); y(ed+i)=y0(ed+i)+dxy(2*i); end

x0(1:sd)=x(1:sd); y0(1:sd)=y(1:sd); for i=1:sd if(i<=ed) vx(i)=0.0; vy(i)=0.0; else

vx(i)=dxy(2*(i-ed)-1); vy(i)=dxy(2*(i-ed)); end end

fprintf(fit2,' 坐标改正数和坐标平差值\\n');

fprintf(fit2,' pn vx x y\\n'); for i=1:sd

fprintf(fit2,' m %8.4f .4f %8.4f ),vx(i),x(i),vy(i),y(i)); end pvv=0.0; for i=1:n

pvv=pvv+w(i)*dxy(i)*100.0; end for i=1:m1

pvv=pvv+a(i,9)*a(i,9)/ql(i); end

42

vy .4f\\n',pn(i 东华理工大学毕业设计 附录二

uw0=sqrt(pvv/((m1-n)*1.0e0)); fprintf(fit2,' .4f\\n',uw0); end % while(k11) while(k11)

%%%%%%%%%%%%%%点位误差椭圆的计算 global ai bi fi

%fit2=fopen('D:\\大牛文档\\work\\siliout.txt','wt') fprintf(fit2,' 误差椭圆参数\\n');

fprintf(fit2,' pn(i) mx my b fi\\n'); n=2.0*dd; maxmm=0.0; smm=0.0; for i=1:dd ii=ed+i;

di=(2*i-2)*(n-(2*i-1)/2.0); dj=(2*i-1)*(n-i); ql=c(di+2*i-1); q2=c(dj+2*i); q3=c(di+2*i); dl=sqrt(abs(ql+q2-q3)); d11=uw0*dl; xx=ql-q2; yy=2*q3; zz=ql+q2; mx1=sqrt(ql); my1=sqrt(q2); mm1=sqrt(zz); if(abs(xx)<1e-10) fi(i)=sign(90.0,q3); else

fi(i)=atan(yy/xx)*57.2958; end

if(xx>=0.0&yy>=0.0)

43

mm a 东华理工大学毕业设计 附录二

fi(i)=fi(i)/2.0; elseif(xx>=0.0&yy<=0.0) fi(i)=(fi(i)+360.0)/2.0; elseif(xx<0.0)

fi(i)=(fi(i)+180.0)/2.0; end

ww=sqrt(xx*xx+yy*yy); a1=sqrt((zz+ww)/2.0); b1=sqrt((zz-ww)/2.0); ab1=a1-b1; mx=uw0*mx1; my=uw0*my1; mm=uw0*mm1; if(mm>maxmm) i1=ii; end

smm=smm+mm; ai(i)=uw0*a1; bi(i)=uw0*b1; ab=ai(i)-bi(i);

fprintf(fit2,'d .3f .3f .3f .3f .3f .3f\\n',pn(ii),mx,my,mm,ai(i),bi(i),fi(i)); end

smm=smm/dd;

fprintf(fit2,' 单位权中误差= %9.6f\\n',uw0);

%fprintf(fit2,' the maximum station error mm= %8.3f(cm) pp= M\\n',maxmm,pn(i1));

fprintf(fit2,' 平均站误差mm= %8.3f\\n',smm);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%绘制控制网图 kk=0;

%tile1={'误差椭圆比例'};

%prompt011={'请输入误差椭圆的比例'}; lines=1;

44

东华理工大学毕业设计 附录二

d11={'100'};

c12=inputdlg('plese input the scale','scale',lines,d11);%输入误差比例椭圆对话框 scale=str2num(str2mat(c12)); %scale=500; hold off

title('控制网网图'); xlabel('Y坐标'); ylabel('X坐标'); plot(y(1:ed),x(1:ed),'k') hold on

plot(y((ed+1):end),x((ed+1):end),'k.') for i=1:ed+dd %写点名

text(y(i)+3,x(i)+3,num2str(pn(i))); end

for i=1:m1%画边长连线

plot([y(e(i)) y(d(i))],[x(e(i)) x(d(i))],'r'); end

for i=1:dd %画误差椭圆 fe(i)=fi(i)*pi/180.;

plot(y(i+ed)+(ai(i)*cos(0:0.01:2*pi)*sin(fe(i))+bi(i)*sin(0:0.01:2*pi)*cos(fe(i)))*scale,... x(i+ed)+(ai(i)*cos(0:0.01:2*pi)*cos(fe(i))-bi(i)*sin(0:0.01:2*pi)*sin(fe(i)))*scale,'r'); end axis equal; zoom on fclose('all');

open(strcat(pathname,net_name,b_datafile));

return

%%%%%%%%%%%%%%%%%%%U%%%%%%%%%%%%%%%%%% function a=alfa(dx,dy)%%%%%计算方位角函数 a11=atan(dy/dx); if (dy>0&dx>0) a=a11; elseif (dx<0) a=pi+a11;

45

本文来源:https://www.bwwdw.com/article/4p6v.html

Top