📄 maingui.m
字号:
delete(DI);
msgbox('参数配置错误,请检查!','错误','error','modal');
end
%------------------------------------------------------------------
function stop_callback(hobject,eventdata,handles)
% 停止或继续仿真。
try
load iconh fcontinue fstop;
catch
return
end
fi=handles;
MS=findobj(gcf,'tag','stop');%menu continue/stop
switch get(MS,'userdata')
case 1,
set(MS,'userdata',0);
try
TS=findobj(fi,'tag','t_stop');%toolbar continue/stop
set(TS,'TooltipString','继续','cdata',fcontinue);
end
uiwait(fi)
case 0,
set(MS,'userdata',1);
try
TS=findobj(fi,'tag','t_stop');%toolbar continue/stop
set(TS,'TooltipString','暂停','cdata',fstop);
end
uiresume(fi)
end
%--------------------------------------------------------------------------
function clear_callback(hobject,eventdata,handles)
setappdata(handles,'over',1);
set(findobj('tag','start'),'enable','on');
%--------------------------------------------------------------------------
function grid_callback(hobject,eventdata,handles)
fi=handles{1};
ax=handles{2};
gr=get(hobject,'userdata');
if gr
set(hobject,'userdata',0);
set(ax,'xgrid','off','ygrid','off');
else
set(hobject,'userdata',1);
set(ax,'xgrid','on','ygrid','on');
end
%--------------------------------------------------------------------------
function axislimit(hobject,eventdata,handles)
fi=handles(1);
cax=get(fi,'currentaxes');
xl=get(cax,'xlim');
yl=get(cax,'ylim');
prompt={'x轴:','y轴:'};
dlg_title='SSSSSSSSSSSS';
num_lines=[1 1]';% 每一输入框的行数。
def={num2str(xl),num2str(yl)};% 每一输入框的默认值。
answer=h_inputdlg(prompt,dlg_title,num_lines,def);
if isempty(answer)
return
end
xlim=str2num(answer{1});
if ~isempty(xlim)
set(cax,'xlim',xlim);
end
ylim=str2num(answer{2});
if ~isempty(ylim)
set(cax,'ylim',ylim);
end
%--------------------------------------------------------------------------
function axisauto(hobject,eventdata,handles)
fi=handles(1);
cax=get(fi,'currentaxes');
set(cax,'xlimmode','auto');
set(cax,'ylimmode','auto');
%-------------------------------------------------------------------------
function trajshowing(hobject,eventdata,handles)
DI=waitdlg('WWWWWWWWWWWWWWWWWWWWait...');
tf=findobj('tag','trajfig');
if ishandle(tf)
figure(tf)
return
end
FI=handles{1};
me=handles{2};
tmp=get(me(1),'userdata');
if(length(tmp)~=10)
[tacan_control_h,tacan_control_la,tacan_control_phi,flir_control_h,flir_control_la,flir_control_phi,index,period,tm,trajdata,tarpos]=deal(tmp{:});
else
[tacan_control_h,tacan_control_la,tacan_control_phi,flir_control_h,flir_control_la,flir_control_phi,index,period,tm,trajdata]=deal(tmp{:});
end
i=1;jj=1;jump=0;
tacan_tdistance=linspace(1e6,1e6,length(tacan_control_phi));
flir_tdistance=linspace(1e6,1e6,length(flir_control_phi));
tacan_ttime=linspace(0,0,length(tacan_control_phi));
flir_ttime=linspace(0,0,length(flir_control_phi));
while (i+jump<=length(trajdata))
seg=find(sort([index i])==i)-1;
pe=period(seg(end));
jump=floor(.1/pe);
phi(jj)=trajdata{2,i+jump}(1);
la(jj)=trajdata{2,i+jump}(2);
h(jj)=trajdata{2,i+jump}(3);
time(jj)=trajdata{1,i+jump};
for ic=1:length(tacan_control_la)
d2=(phi(jj)-tacan_control_phi(ic))^2+(la(jj)-tacan_control_la(ic))^2;
if d2<tacan_tdistance(ic)
tacan_tdistance(ic)=d2;
tacan_ttime(ic)=time(jj);
end
end
for ic=1:length(flir_control_la)
d2=(phi(jj)-flir_control_phi(ic))^2+(la(jj)-flir_control_la(ic))^2;
if d2<flir_tdistance(ic)
flir_tdistance(ic)=d2;
flir_ttime(ic)=time(jj);
end
end
i=i+jump;
jj=jj+1;
end
phi_=c2rad([30 0 0]);e=0.081819191;
h_=10000;Re=6378137;
Rm=Re*(1-e*e)/(1-e*e*sin(phi_)*sin(phi_))^1.5;
C1=1/(Rm+h_);
Rn=Re/sqrt((1-e*e*sin(phi_)*sin(phi_)));
C2=sec(phi_)/(Rn+h_);
x=la;
x=x/C2;
tx1=x(1);
x=x-tx1;
y=phi;
y=y/C1;
ty1=y(1);
y=y-ty1;
figures=get(0,'userdata');
if isfield(figures,'FV') & ishandle(figures.FV)
figure(figures.FV);
else
FV=figure('Menubar','figure', 'numbertitle','off', 'Unit','normalized', 'name','SSSSSSSSSS',...
'tag','trajfig');
set(0,'userdata',figures);
end
ai=axes('parent',FV);
set(ai,'color',[.4,.8,.4]);
grid on
hold on;
axis equal
view(2)
line(x,y,h,'color','b','parent',ai);
th=find(abs(h-300)>.1 & abs(h-4000)>.1);
tacan_control_x=tacan_control_la;
tacan_control_x=tacan_control_x/C2;
tacan_control_x=tacan_control_x-la(1)/C2;
tacan_control_y=tacan_control_phi;
tacan_control_y=tacan_control_y/C1;
tacan_control_y=tacan_control_y-phi(1)/C1;
flir_control_x=flir_control_la;
flir_control_x=flir_control_x/C2;
flir_control_x=flir_control_x-la(1)/C2;
flir_control_y=flir_control_phi;
flir_control_y=flir_control_y/C1;
flir_control_y=flir_control_y-phi(1)/C1;
filterpattern=getappdata(figures.FI,'filterpattern');
legendtext={'\fontsize{8}AAAAAAAAAAAAA'};
if filterpattern(2)==1 | filterpattern(3)==1
plot3(tacan_control_x,tacan_control_y,tacan_control_h,'^','color','b');
p=get(ai,'xlim');
for(it=1:length(tacan_ttime))
ts=['GGGG' (num2str(floor(tacan_ttime(it)))) 's'];
text(tacan_control_x(it)+(p(2)-p(1))/40,tacan_control_y(it),ts);
end
legendtext{end+1}='\fontsize{8}TTTTTTTTTTTTTTTTT';
end
if filterpattern(4)==1
plot3(flir_control_x,flir_control_y,flir_control_h,'*','color','r');
p=get(ai,'xlim');
for(it=1:length(flir_ttime))
ts=['TT' (num2str(floor(flir_ttime(it)))) 's'];
text(flir_control_x(it)+(p(2)-p(1))/40,flir_control_y(it),ts);
end
legendtext{end+1}='\fontsize{8}FFFFFFFFFFFFFFF';
end
if exist('tarpos')
legendtext{end+1}='\fontsize{8}HHHHHHHHHH';
end
legend(legendtext);
tphi=phi(end);
tphi=tphi/C1;
tphi=tphi-phi(1)/C1;
tla=la(end);
tla=tla/C2;
tla=tla-la(1)/C2;
text(tla,tphi,['End Time:' num2str(time(end)) 's']);
try
ty=tarpos(1)/C1-ty1;
tx=tarpos(2)/C2-tx1;
th=tarpos(3);
plot3(tx,ty,th,'^')
end
p=get(ai,'xlim');
p(1)=p(1)-p(1)/5;
p(2)=p(2)+p(2)/5;
set(ai,'xlim',p);
p=get(ai,'ylim');
p(1)=p(1)-p(1)/5;
p(2)=p(2)+p(2)/5;
set(ai,'ylim',p);
xlabel('\fontsize{8}AAAAAAAA/m');ylabel('\fontsize{8}HHHHHHHH/m');zlabel('\fontsize{8}SSSSSSSS/m');
axis equal
delete(DI);
%-------------------------------------------------------------------------
function plotresult(hobject,eventdata,handles)
% try
[n,p]=uigetfile('*.dat','SSSSSSSS');
if n==0 return; end
load('-mat',[p n],'plotdata');
figures=get(0,'userdata');
handles=get(figures.FI,'userdata');
plotall(plotdata,handles,figures.FI,1);
% catch
% errordlg('EEEEEE','');
% end
%-------------------------------------------------------------------------
function statusbar_callback(hobject,eventdata,handles)
figures=get(0,'userdata');
presstype=get(figures.FI,'selectiontype');
if strcmp(presstype,'open')==1
filterpattern;
end
%-------------------------------------------------------------------------
function controlinput_callback(hobject,eventdata,handles)
figures=get(0,'userdata');
if isfield(figures,'FIV') & ishandle(figures.FIV)
figure(figures.FIV);
else
figures.FIV=controlinput;
set(0,'userdata',figures);
end
%-------------------------------------------------------------------------
function deleteFigure(hobject,eventdata,handles)
if exist('data.tmp')
delete('data.tmp');
end
if exist('gpsout.tmp')
delete('gpsout.tmp');
end
figures=get(0,'userdata');
if isfield(figures,'FII') & ishandle(figures.FII)%TACAN controlinput
delete(figures.FII);
end
if isfield(figures,'FIII') & ishandle(figures.FIII)%FLIR controlinput
delete(figures.FIII);
end
if isfield(figures,'FIV') & ishandle(figures.FIV)%controlinput
delete(figures.FIV);
end
if isfield(figures,'FV') & ishandle(figures.FV)%trajshow
delete(figures.FV);
end
if isfield(figures,'FVI') & ishandle(figures.FVI)%filterpattern
delete(figures.FVI);
end
if isfield(figures,'FVII') & ishandle(figures.FVII)%simconfig
delete(figures.FVII);
end
if isfield(figures,'FVIII') & ishandle(figures.FVIII)%montocarlo
delete(figures.FVIII);
end
set(0,'userdata',[]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -