资源简介
这是本人制作的导线网平差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图像融合程序
相关资源
- Pattern Recognition and Machine Learning(高清
- MATLAB 编程 第二版 Stephen J. Chapman 著
- 均值滤波和FFT频谱分析Matlab代码
- 《MATLAB扩展编程》代码
- HDB3码、AMI码的MATLAB实现
- 3点GPS定位MATLAB仿真
- MATLAB数字信号处理85个实用案例精讲入
- matlab从入门到精通pdf94795
- 欧拉放大论文及matlab代码
- 跳一跳辅助_matlab版本
- 全面详解LTE MATLAB建模、仿真与实现
- MIMO-OFDM无线通信技术及MATLAB实现_孙锴
- MATLAB Programming for Engineers 4th - Chapman
- matlab 各种谱分析对比
- 分数阶chen混沌matlab程序
- 基于粒子群算法的非合作博弈的matl
- MATLAB车流仿真 包括跟驰、延误
- matlab空间桁架计算程序
- 基于MATLAB的图像特征点匹配和筛选
- DMA-TVP-FAVAR
- GPS信号的码捕获matlab代码.7z
- 一维光子晶体MATLAB仿真代码吸收率折
- newmark法源程序
- 传统关联成像、计算鬼成像matlab
- pri传统分选算法
- 摆动滚子推杆盘形凸轮设计
- 医学图像重建作业matlab源码
- Matlab实现混沌系统的控制
- 检测疲劳驾驶
- Matlab锁相环仿真-Phase Locked Loop.rar
评论
共有 条评论