📄 output_options.m
字号:
function [out_opt_struct, ok ] = output_options
ok = -1;
% Load saved output options if the temporary file exists:
if exist('tmp_output_options.mat','file'), load('tmp_output_options'); end
% If saved options are not found, set to default options:
field_names = {'ts_plot','obs_pks','est_pks','mult_pks','pk_loads'};
if ~exist('out_opt_struct','var') || ~isstruct(out_opt_struct) || ~isempty(setdiff(field_names,fieldnames(out_opt_struct)))
out_opt_struct.ts_plot = 1;
out_opt_struct.obs_pks = 1;
out_opt_struct.est_pks = 1;
out_opt_struct.mult_pks = 1;
out_opt_struct.pk_loads = 1;
end
% Define variables from the fields of 'out_opt_struct', which will be changed through the GUI:
ts_plot = out_opt_struct.ts_plot;
obs_pks = out_opt_struct.obs_pks;
est_pks = out_opt_struct.est_pks;
mult_pks = out_opt_struct.mult_pks;
pk_loads = out_opt_struct.pk_loads;
scrsz = get(0,'ScreenSize');
Xc = scrsz(3)*.4;
Yc = scrsz(4)*.4;
X0 = scrsz(3)*.25;
Y0 = scrsz(4)*.25;
clr = get(0,'DefaultUicontrolBackgroundColor');
h = dialog('Color',clr,'Position',[Xc Yc X0 Y0],'Name','Select results for output');%,'CloseRequestFcn',@CloseCallback);
set( h, 'Units', 'character');
Size = get( h, 'Position');
Xc = Size(1);
Yc = Size(2);
X0 = 80;
yA = 4;
yB = 6;
yC = 6;
yD = 4;
yE = 4;
Y0 = yA+yB+yC+yD+yE;
set(h,'Position',[Xc Yc X0 Y0]);
hA = uipanel('Parent',h,'BackgroundColor',clr,'Units','character','Position',[0 Y0-yA X0 yA],...
'Title','Plotting (and storing) of time series:');
hB = uipanel('Parent',h,'BackgroundColor',clr,'Units','character','Position',[0 Y0-(yA+yB) X0 yB],...
'Title','Method of computing peaks (select one or both):');
hC = uipanel('Parent',h,'BackgroundColor',clr,'Units','character','Position',[0 Y0-(yA+yB+yC) X0 yC],...
'Title','Results obtained by symmetry (select one):');
hD = uipanel('Parent',h,'BackgroundColor',clr,'Units','character','Position',[0 Y0-(yA+yB+yC+yD) X0 yD],...
'Title','"Worst-case" load distributions:');
hE = uipanel('Parent',h,'BackgroundColor',clr,'Units','character','Position',[0 0 X0 yE]);
TS_chkbox = uicontrol(hA, 'Style','checkbox','String','Display time series during analysis (enables storing of time series)',...
'Units','characters','Value',ts_plot,'Position',[2 yA-3 X0-4 1.5],'Callback',@TSdispCallback);
% TS_txt = uicontrol(hA,'BackgroundColor',clr, 'Style', 'text', 'String','(enables optional storing of time series)',...
% 'HorizontalAlignment','left','Units','character','Position',[7 yA-4.5 X0-8 1.5]);
ObsPks_radio = uicontrol(hB, 'Style','radiobutton','String','Observed peaks (maximum and minimum of time series)',...
'Value',obs_pks,'Units','character','Position',[2 yB-3 X0-4 1.5],'Callback',@ObsPksCallback);
EstPks_radio = uicontrol(hB, 'Style','radiobutton','String','Estimated peaks (expected value of peak from probability distribution)',...
'Value',est_pks,'Units','character','Position',[2 yB-5 X0-4 1.5],'Callback',@EstPksCallback);
% If only one type of peak is selected, disable the corresponding radio button so that it can't be deselected:
if obs_pks & ~est_pks
set(ObsPks_radio,'Enable','inactive');
elseif est_pks & ~obs_pks
set(EstPks_radio,'Enable','inactive');
end
MultPks_radio = uicontrol(hC, 'Style','radiobutton','String','Store multiple peaks for each wind direction as well as averaged peaks',...
'Value',mult_pks,'Units','character','Position',[2 yB-3 X0-4 1.5],'Callback',@MultPksCallback);
AvgPks_radio = uicontrol(hC, 'Style','radiobutton','String','Store averaged peaks only',...
'Value',~mult_pks,'Units','character','Position',[2 yB-5 X0-4 1.5],'Callback',@AvgPksCallback);
% Disable the selected radio button, so that changes can only be made by pressing the other button:
if mult_pks
set(MultPks_radio,'Enable','inactive');
else
set(AvgPks_radio,'Enable','inactive');
end
PkLoads_chkbox = uicontrol(hD, 'Style','checkbox','String','Store load distributions producing peak responses',...
'Value',pk_loads,'Units','character','Position',[2 yD-3 X0-4 1.5],'Callback',@PkLoadsCallback);
save_button = uicontrol(hE, 'Style','pushbutton','String','Save selections','Units','character','Position',[X0*.5-30-4 yE-3 30 2],...
'Callback',@SaveCallback);
cancel_button = uicontrol(hE, 'Style','pushbutton','String','Cancel','Units','character','Position',[X0*.5+4 yE-3 30 2],...
'Callback',@CancelCallback);
uiwait(h);
% function CloseCallback(src, evendata)
% % reset output options to default settings if user presses cancel or closes dialog box
% if ok==-1
% out_opt_struct = DefaultSettings;
% end
% end
function TSdispCallback(src, eventdata)
ts_plot = get(TS_chkbox,'Value');
end
function ObsPksCallback(src, eventdata)
obs_pks = get(ObsPks_radio,'Value');
if obs_pks
set( EstPks_radio, 'Enable', 'on');
else
set( EstPks_radio, 'Enable', 'inactive');
end
end
function EstPksCallback(src, eventdata)
est_pks = get(EstPks_radio,'Value');
if est_pks
set( ObsPks_radio, 'Enable', 'on');
else
set( ObsPks_radio, 'Enable', 'inactive');
end
end
function AvgPksCallback(src, eventdata)
mult_pks = 0;
set(MultPks_radio, 'Value', 0,'Enable','on');
set(AvgPks_radio, 'Enable', 'inactive');
end
function MultPksCallback(src, eventdata)
mult_pks = 1;
set(AvgPks_radio, 'Value', 0,'Enable','on');
set(MultPks_radio,'Enable', 'inactive');
end
function PkLoadsCallback(src, eventdata)
pk_loads = get(PkLoads_chkbox,'Value');
% 1 -> save, 0 -> don't save
end
function SaveCallback(src, eventdata)
out_opt_struct.ts_plot = ts_plot;
out_opt_struct.obs_pks = obs_pks;
out_opt_struct.est_pks = est_pks;
out_opt_struct.mult_pks = mult_pks;
out_opt_struct.pk_loads = pk_loads;
save('tmp_output_options','out_opt_struct');
ok = 1;
close(h);
end
function CancelCallback(src, eventdata)
close(h);
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -