资源简介

这是本人制作的导线网平差matlab程序,压缩包里有程序,计算数据和最终结果,程序中包含一些必要的注释。

资源截图

代码片段和文件信息

function plannet()
%  a:已知点个数  b:未知点个数  ab:点数                    D:点号 
%  X:X坐标       Y:Y坐标      bc_count:边长观测个数       fx_count:方向观测个数
%  fw_count:方位角观测个数  bcQ:边长起点号  bcZ:边长终点号  s:边长观测值
%  fxzwc:方向观测中误差     fxQ:方向起点号  fxZ:方向终点号  jd:方向观测角度
%  jszb_x近似坐标x          jszb_x近似坐标y
%读取数据文件


[filenamefilepath]=uigetfile(‘*.txt‘‘选择数据:‘);
name=[filepath filename];
fid=fopen(name‘rt‘);
if(fid==-1)
      disp(‘文件未打开,请重试!‘);
      return;
end

a=fscanf(fid‘%f‘1);  
b=fscanf(fid‘%f‘1);  
ab=a+b;
for i=1:ab
    D(i)=fscanf(fid‘%f‘1);
end
for i=1:a
    X(i)=fscanf(fid‘%f‘1);
    Y(i)=fscanf(fid‘%f‘1);
end
bc_count=fscanf(fid‘%f‘1);  
fx_count=fscanf(fid‘%f‘1);
fw_count=fscanf(fid‘%f‘1);
for j=1:bc_count
    bcQ(j)=fscanf(fid‘%f‘1);   
    bcZ(j)=fscanf(fid‘%f‘1);  
    s(j)=fscanf(fid‘%f‘1);   
end
fxzwc=fscanf(fid‘%f‘1);
for j=1:fx_count
    fxQ(j)=fscanf(fid‘%f‘1);   
    fxZ(j)=fscanf(fid‘%f‘1);  
    jd(j)=fscanf(fid‘%f‘1);   
end
for j=1:ab
    jszb_x(j)=fscanf(fid‘%f‘1);
    jszb_y(j)=fscanf(fid‘%f‘1);
end
fclose(fid);

%将角度转换成弧度
du=fix(jd);
f=(jd-du).*100;
fen=fix(f);
miao=(f-fen).*100;
fen=fen./60;
miao=miao./3600;
r=(du+fen+miao)./180;
jd=r.*pi;

%%%%%%%赋初值为零
Bx(bc_countb*2)=0;
Lx(bc_count1)=0;


Bf(fx_countb*2)=0;
Lf(fx_count1)=0;



sumx=1;
sumxx=0;
while (sumx>10^-6&&sumxx<100) %叠代

% Bx=zeros(bc_count2*ab);
% Lx=zeros(bc_count1);
Ps=zeros(bc_count1);%边长的权
for ii=1:bc_count
    for i=1:ab
        if D(i)==bcQ(ii)
            n1=i;
        end
    end
    for i=1:ab
        if D(i)==bcZ(ii)
            n2=i;
        end
    end
    x1=jszb_x(n1);
    y1=jszb_y(n1);
    x2=jszb_x(n2);
    y2=jszb_y(n2);
    dx=x2-x1;
    dy=y2-y1;
    Sij=sqrt(dx^2+dy^2);
    bij=-dy./Sij;
    aij=-dx./Sij;
    if n1<=a&&n2>a
        Bx(iin2*2-1)=-aij;
        Bx(iin2*2)=-bij;
    elseif n1>a&&n2<=a
        Bx(iin1*2-1)=aij;
        Bx(iin1*2)=-bij;
    elseif n1>a&&n2>a
        Bx(iin1*2-1)=aij;
        Bx(iin1*2)=bij;
        Bx(iin2*2-1)=-aij;
        Bx(iin2*2)=-bij;
    end
    Lx(ii)=s(ii)-Sij;
end
Bx=Bx(:a*2+1:end);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%方向

for ii=1:fx_count
    for i=1:ab
        if D(i)==fxQ(ii)
            n1=i;
        end
    end
    for i=1:ab
        if D(i)==fxZ(ii)
            n2=i;
        end
    end
    x1=jszb_x(n1);
    y1=jszb_y(n1);
    x2=jszb_x(n2);
    y2=jszb_y(n2);
    dx=x2-x1;
    dy=y2-y1;
    Sij=sqrt(dx^2+dy^2);
    bij=-206265*dx./Sij^2;
    aij=-206265*dy./Sij^2;
    if n1<=a&&n2>a
        Bf(iin2*2-1)=-aij;
        Bf(iin2*2)=-bij;
    elseif n1>a&&n2<=a
        Bf(iin1*2-1)=aij;
        Bf(iin1*2)=-bij;
    elseif n1>a&&n2>a
        Bf(iin1*2-1)=aij;
        Bf(iin1*2)=bij;
        Bf(iin2*2-1)=-aij;
        Bf(iin2*2)=-bij;
    end
    
    %近似方位角
    fwj(ii)=atan(abs(dy/dx));
    if(dx>0&&dy>0)
        fwj(ii)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        4448  2018-05-23 12:50  plannet.m
     文件         160  2018-05-23 12:50  result.txt
     文件         568  2018-05-18 09:39  sj.txt

评论

共有 条评论