⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inscribed.asv

📁 利用MATLAB实现了对测量中的平面网
💻 ASV
字号:
function[cpp3,mr,tr]=inscribed1(sd,ms,ppm,e,d,sid)
%应用余枝搜索法自动搜索所有圆周角(组合角)条件=================
global pathname net_name c3_datafile
fit2=fopen(strcat(pathname,net_name,c3_datafile),'wt');
cpp3=[];
n=0;
tr=[];
mr=[];
for i=1;sd
    cpp=[];temp1=[];
    temp1=find(e==i|d==i);
    if length(temp1)>0
        xx=[e(temp1)d(temp1)];%存放外围点名
        xx((xx==i))=[];
    end
    num=length(xx);
    d1=[];d2=[];ds=[];
    if num>2
        numb=0;
        for i0=1;num-1
            for j0=i0+1:num
                [dist,kdis]=findsid(xx(i0),xx(j0),e,d,sid);  %是否存在边长观测
                if kdis==1
                    numb=numb+1;
                    d1(numb)=xx(i0);
                    d2(numb)=xx(j0);
                    ds(numb)=dist;
                end
            end
        end
    end
    dd1=zeros(1,length(d1));
    dd2=zeros(1,length(d1));
    %按1,2,3的顺序重新编号才能利用已有的函数进行搜索
    for y1=1:length(d1)
    for y1=1;num
        if d1(y1)==xx(y)
            dd1(y1)=y;
            break;
        end
    end
    for y=1:num
        if d2(y1)==xx(y)
            dd2(y1)=y;
            break;
        end
    end
end
cpp=ccpoints(dd1',dd2',num,length(dd1),ds);
if isempty(cpp)~=1
    for t=1:size(cpp,2)
        n=n+1;
        site=cpp{t};
        cpp3{n}=xx(site);
        mr=[mr i];
    end
    tr=[tr num];
end
end
%计算圆周角(组合角)闭合差和限差========================
err=[];
for i=1:size(cpp3,2)
    site=cpp3{i};
    n=length(site);
    bet=[];
    for j=1:n-1
        bet(j)=beta1(site(j),mr(i),site(j+1),e,d,sid);
    end
    err1(i)=(sum(bet)-pi)/pi*180*3600;
    err2(i)=(2*max(bet)-sum(bet))/pi*180*3600;
    if abs(err1(i))<=abs(err2(i))
        err(i)=err1(i);
    else
        err(i)=err2(i);
    end
    if abs(err(i))>1000
        sss=comb(n-1);
        bet111=sss*bet';
        err(i)=min(bet111);
    end
end
maxdiff=[];
n=size(cpp3,2);
for i=1:n
    site=cpp3{i};
    site=[site(end-1) site];
    m=size(site,2);
    w1=0;
    for j=2:m-1
        beta=beta1(site(j+1),site(j),mr(i),e,d,sid);
        betb1=beta1(mr(i),site(j),site(j-1),e,d,sid);
        betb2=beta1(mr(i),site(j+1),site(j),e,d,sid);
        betab1=beta+betb1;
        betab2=pi-beta1(site(j),mr(i),site(j+1),e,d,sid);
        [s1,k1]=findsid(site(j),mr(i),e,d,sid);
        [s2,k2]=findsid(site(j),site(j+1),e,d,sid);
        a1=-sin(betab1)/sin(beta)/sin(betb1)*2062.65/s1;
        a2=-sin(betab2)/sin(beta)/sin(betb2)*2062.65/s2;
        ms1=ms^2+(s1/10000*ppm)^2;
        ms2=ms^2+(s2/10000*ppm)^2;
        w1=w1+ms1*a1^2+ms2*a2^2;
    end
    maxdiff(i)=2*sqrt(w1);
end
maxdiff(i)=2*sqrt(w1);
end
%============================
fprintf(fit2,'       圆周角(组合角)条件\n');
fprintf(fit2,'         中心点        环点          闭合差         限差\n');
fprintf(fit2,'=========================================\n');
sitefinal[];
for i=1;size(cpp3,2)
    site=cpp3{i};
    if abs(maxdiff(i))-abs(err(i))>=0
      fprintf(fit2,' %5d %5d  %5d %5d %5d %5d %5d %5d ',i,mr(i),site);
      fprintf(fit2,' %10.3f %10.3f\n',err(i),maxdiff(i));
    else
      fprintf(fit2,'* * %5d %5d  %5d %5d %5d %5d %5d %5d ',i,mr(i),site);
      fprintf(fit2,' %10.3f %10.3f\n',err(i),maxdiff(i));
    end
  fprintf(fit2,'=========================================\n');
  fclose(fit2);
  open(strcat(pathname,net_name,c3_datafile));
  return


   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -