資源簡介
這是本人制作的導線網平差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
- 上一篇:基于simuli
nk的儲能逆變器VF控制仿真 - 下一篇:matlab圖像融合程序
評論
共有 條評論