方位角计算上机报告
注:1.点击‘读取数据并计算’按钮前,先选择测量角倾向
2.所有数据不用手动输入,只需点击读取文件,选择相应文件‘data.xls
图 1 界面设计
即可
图 2 数据表
注:1.点名均为正数
2.方向均为小数,1.2 代表 1 到 2 的方位角
3.初始方位角为某方向点到 1 号点的方位角
图 3 左角计算
图 4 右角计算
代码:
function gz=hdgz(h) %弧度改正,控制方位角的区间为0~360
a=s-fix(s/2/pi)*2*pi;
a=-floor(s/2/pi)*2*pi+s;
elseif s>=0&s<2*pi
s=h
if s>=2*pi
elseif s<0
a=s
end
gz=a
function hu=jdtohd(jd)%角度化弧度
j=jd;
d=fix(j);
f=fix((j-d)*100);
m=(j-d-f/100)*10000;
hu=(d+f/60+m/3600)*pi/180;
function jd=hdtojd(hu)%弧度化角度
h=hu;
h=h*180/pi;
d=fix(h);
mm=(h-d)*3600;
f=round(mm/60)/100;
m=(mm-f*6000)/10000;
jd=d+f+m;
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
[filename, pathname]=uigetfile('*.xls','ì');
if pathname==0
return
end
name= [filename, pathname];
dm=xlsread('data.xls','sheet1','A4:A9');
fx=xlsread('data.xls','sheet1','C4:C9');
gs=xlsread('data.xls','sheet1','B1');
jj=xlsread('data.xls','sheet1','B4:B9');
csfwj=xlsread('data.xls','sheet1','B2');
set(handles.listbox1,'string',jj);
set(handles.edit1,'string',csfwj);
set(handles.edit2,'string',gs);
set(handles.listbox3,'string',dm);
set(handles.listbox4,'string',fx);
csfwjh=jdtohd(csfwj);
for i =1:gs
jjh(i)=jdtohd(jj(i,1))
end
%左角计算
if get(handles.radiobutton1,'value')
option=1;
jd1=csfwjh+jjh(1)-pi;
jd1=hdgz(jd1);
for i=2:gs
jd(1)=jd1
jd(i)=jd(i-1)+jjh(i)-pi;
jd(i)=hdgz(jd(i));
end
for i=1:gs
jdj(i)=hdtojd(jd(i))
end
set(handles.listbox2,'string',jdj);
elseif get(handles.radiobutton2,'value')
%右角计算
option=2;
jd1=csfwjh-jjh(1)+pi;
for i=2:gs
jd(1)=jd1
jd(i)=jd(i-1)-jjh(i)+pi;
jd(i)=hdgz(jd(i));
end
for i=1:gs
end
jdj(i)=hdtojd(jd(i))
set(handles.listbox2,'string',jdj);
end
function pushbutton2_Callback(hObject, eventdata, handles)
set(handles.edit1,'string','');
set(handles.edit2,'string','');
set(handles.listbox1,'string','');
set(handles.listbox2,'string','');
set(handles.listbox3,'string','');
set(handles.listbox4,'string','');
function radiobutton1_Callback(hObject, eventdata, handles)
set(handles.radiobutton2,'value',0);
set(handles.radiobutton1,'value',1);
function radiobutton2_Callback(hObject, eventdata, handles)
set(handles.radiobutton1,'value',0);
set(handles.radiobutton2,'value',1);