闭合导线计算matlab代码,【求助】闭合导线简易平差Matlab代码需要大神帮忙

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

%观测数据的输入

n=input('请输入闭合导线的点数:');

for i=1:n %按边数进行循环

a=num2str(i); %数字转换为字符串

string1=(char(('请输入第')',a,('条导线的边长:')'))';

bian(i)=input(string1);

b=num2str(i);

string2=(char(('请输入第')',b,('个转折角:')'))';

jiao1=input(string2,'s');

c=jiao1;

du=str2num(c(1:3));

fen=str2num(c(4:5));

miao=str2num(c(6:7));

jiao2(i)=du+fen/60+miao/3600;

end

%起算数据的输入

x=input('请输入起始已知点x的坐标:');

y=input('请输入起始已知点y的坐标:');

string3=(char('请输入起始已知方向的起算方位角:'));

fwj1=input(string3,'s');

c=fwj1;

du=str2num(c(1:3));

fen=str2num(c(4:5));

miao=str2num(c(6:7));

fwj2=du+fen/60+miao/3600;

%角度闭合差的计算

fb=sum(jiao2)-(n-2)*180;

for i=1:n

v(i)=(-1)*fb/n;

end

%真方位角计算

for i=1:n

if i==1

fwjz(1)=fwj2+jiao2(1)+v(1)-180;

end

if i>1

fwjz(i)=fwjz(i-1)+jiao2(i)+v(i)-180;

end

if fwjz(i)>0

fwjz1(i)=fwjz(i);

end

if fwjz(i)<0

fwjz1(i)=fwjz(i)+360;

end

end

%坐标闭合差计算

xzq=cosd(fwj2)*bian(1);

yzq=sind(fwj2)*bian(1);

for i=1:(n-1)

xz(i)=cosd(fwjz1(i))*bian(i+1);

yz(i)=sind(fwjz1(i))*bian(i+1);

end

fx=xzq+sum(xz);

fy=yzq+sum(yz);

fs=sqrt(fx^2+fy^2);

k=fs/sum(bian);

%坐标计算

for i=1:n

vx=(-1)*fx/sum(bian)*bian;

vy=(-1)*fy/sum(bian)*bian;

end

for i=1:n

if i==1

X(1)=x+xzq+vx(1);

Y(1)=y+yzq+vy(1);

end

if i>1

X(i)=X(i-1)+xz(i-1)+vx(i);

Y(i)=Y(i-1)+yz(i-1)+vy(i);

end

end

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值