• 大小: 10KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: Matlab
  • 标签: 导线网  

资源简介

基于matlab 导线网间接平差的程序设计源代码

资源截图

代码片段和文件信息

%---------数据准备-------------------------------------------------------------
clc;clear all;
global d
global jd
global bc
flag=-9999999;wzdx=flag;
%---------打开文本文件-----------------------------------------------------------
[filename1filepath]=uigetfile(‘*.txt‘‘请选择点坐标数据文件‘);
fd=fopen(strcat(filepathfilename1)‘rt‘);
[filename1filepath]=uigetfile(‘*.txt‘‘请选择角度值数据文件‘);
fj=fopen(strcat(filepathfilename1)‘rt‘);
[filename1filepath]=uigetfile(‘*.txt‘‘请选择边长值数据文件‘);
fb=fopen(strcat(filepathfilename1)‘rt‘);
%fd=fopen(‘点坐标.txt‘‘r‘);
%fj=fopen(‘角度值.txt‘‘r‘);
%fb=fopen(‘边长值.txt‘‘r‘);
%-------------------------------读取已知点坐标并编号--------------------------------
ds=0;dmz=[];
while (~feof(fd))
    ds=ds+1;
    dd(ds).dm=fscanf(fd‘%s‘1);dmz=[dmz dd(ds).dm];
    dd(ds).dx=fscanf(fd‘%f‘1);
    dd(ds).dy=fscanf(fd‘%f‘1);
    dd(ds).dh=ds;
    t0=ds;                                       %已知点的个数
end
%-------------------------------读取角度观测值,并形成角度矩度jdz---------------------
js=0;jdz=[];
while(~feof(fj))
    js=js+1;
    jjd(js).czm=fscanf(fj‘%s‘1);
    jjd(js).zzm=fscanf(fj‘%s‘1);
    jjd(js).yzm=fscanf(fj‘%s‘1);
    jjd(js).jd=fscanf(fj‘%f‘1);
    jjd(js).zwc=fscanf(fj‘%f‘1);
    jdz=[jdz jjd(js).jd];
end
%-------------------------------读取边长观测值,并形成边长矩阵bcz-----------------------
bs=0;bcz=[];
while(~feof(fb))
    bs=bs+1;
    bbc(bs).qdm=fscanf(fb‘%s‘1);
    bbc(bs).zdm=fscanf(fb‘%s‘1);
    bbc(bs).bc=fscanf(fb‘%f‘1);
    bbc(bs).zwc=fscanf(fb‘%f‘1);
    bcz=[bcz bbc(bs).bc];
end
fclose(fd);fclose(fj);fclose(fb);
%------------------------------统计未知点个数,放到t1中-------------------------------
t1=0;tt=t0;
for i=1:js
    d1=jjd(i).czm;d2=jjd(i).zzm;d3=jjd(i).yzm;
    dh1=-999;dh2=dh1;dh3=dh2;
    for j=1:tt
        if d1==dd(j).dm;
            dh1=dd(j).dh;
            break
        end
    end
    for j=1:tt
        if d2==dd(j).dm;
            dh2=dd(j).dh;
            break
        end
    end
    for j=1:tt
        if d3==dd(j).dm;
            dh3=dd(j).dh;
            break
        end
    end
    if dh1==-999
        tt=tt+1;t1=t1+1;
        dd(tt).dm=d1;dd(tt).dx=flag;
        dd(tt).dh=tt;dd(tt).dy=flag;
        dh1=dd(tt).dh;
    end
    if dh2==-999
        tt=tt+1;t1=t1+1;
        dd(tt).dm=d2;dd(tt).dx=flag;
        dd(tt).dh=tt;dd(tt).dy=flag;
        dh2=dd(tt).dh;
    end
    if dh3==-999
        tt=tt+1;t1=t1+1;
        dd(tt).dm=d3;dd(tt).dx=flag;
        dd(tt).dh=tt;dd(tt).dy=flag;
        dh3=dd(tt).dh;
    end
    jjd(i).cdh=dh1;jjd(i).zdh=dh2;jjd(i).ydh=dh3;
end
%-------------------------------------------形成平差用的角度观测值矩阵------------------
 for i=1:js
     %disp(strcat(num2str(jjd(i).cdh)‘--‘num2str(jjd(i).zdh)‘--‘num2str(jjd(i).ydh)‘--‘num2str(jjd(i).jd)));
     jd(i1)=jjd(i).cdh;jd(i2)=jjd(i).zdh;jd(i3)=jjd(i).ydh;jd(i4)=jjd(i).jd;jd(i5)=jjd(i).zwc;
 end
 disp(strcat(‘未知点个数=‘num2str(t1)));
 %---------------------------

评论

共有 条评论