⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compute.m

📁 matlab中常用电法各种装置的电磁正演计算
💻 M
📖 第 1 页 / 共 5 页
字号:
if get(handles.Full_sol_radiobutton, 'value') == 1
    cparams.calc_type = 'Full';
else
    cparams.calc_type = 'Quasi';
end % if

if cparams.domain == 'TD'
    cparams.times = get(handles.Times_edit, 'String');
    [tmp, isOk] = str2num(cparams.times);
    if ~isOk
        cparams.times = handles.DefaultStrings{                         ...
                [handles.DefaultStrings{:,1}]==handles.Times_edit,2};
    end % if
    if get(handles.NST_radiobutton, 'value') == 1
        cparams.FtoTtype = 'NST';
        [cparams.NST_tol, isOk] = str2num(get(handles.NST_tol_edit,     ...
            'String'));
        if ~isOk
            cparams.NST_tol = handles.DefaultStrings{                   ...
                    [handles.DefaultStrings{:,1}]==handles.NST_tol_edit,2};
        end % if
    else
        cparams.FtoTtype = 'FST';
        [cparams.FST_err, isOk] = str2num(get(handles.FST_err_edit,     ...
            'String'));
        if ~isOk
            cparams.FST_err = handles.DefaultStrings{                   ...
                    [handles.DefaultStrings{:,1}]==handles.FST_err_edit,2};
        end % if
    end % if
    
    cparams.showFDsp = get(handles.showFDsp_checkbox, 'Value');
    
    waveform = get(handles.Waveform_popup, 'String');
    cparams.waveform = waveform{get(handles.Waveform_popup, 'Value')};

elseif cparams.domain == 'FD'
    % Frequency domain specific parameters
    cparams.freq = get(handles.Freq_edit, 'String');
    [tmp, isOk] = str2num(cparams.freq);
    if ~isOk
        cparams.freq = handles.DefaultStrings{                         ...
                [handles.DefaultStrings{:,1}]==handles.Freq_edit,2};
    end % if
end

% Hankel transform parameters
if get(handles.NHT_radiobutton, 'value') == 1
    cparams.hank_type = 'NHT';
    [cparams.NHT_tol, isOk] = str2num(get(handles.NHT_tol_edit,         ...
        'String'));
    if ~isOk
        cparams.NHT_tol = handles.DefaultStrings{                       ...
                [handles.DefaultStrings{:,1}]==handles.NHT_tol_edit,2};
    end % if
else
    cparams.hank_type = 'FHT';
    [cparams.FHT_err, isOk] = str2num(get(handles.FHT_err_edit,         ...
        'String'));
    if ~isOk
        cparams.FHT_err = handles.DefaultStrings{                       ...
                [handles.DefaultStrings{:,1}]==handles.FHT_err_edit,2};
    end % if
end % if

cparams.FDspline = get(handles.FDspline_checkbox, 'Value');
if cparams.FDspline
    cparams.FDsp_NDEC = str2double(get(handles.FDsp_NDEC_edit, 'String'));
    cparams.FDsp_Bmin = str2double(get(handles.FDsp_Bmin_edit, 'String'));
    cparams.FDsp_Bmax = str2double(get(handles.FDsp_Bmax_edit, 'String'));
end % if

if strcmpi(get(handles.Quad_tol_edit, 'Enable'), 'On')
    cparams.Quad_tol = str2double(get(handles.Quad_tol_edit, 'String'));
    cparams.Rspline = get(handles.Rspline_checkbox, 'Value');
    if cparams.Rspline
        cparams.Rsp_NDEC = str2double(get(                              ...
            handles.Rsp_NDEC_edit, 'String'));
    end % if
end % if

if isfield(cparams, 'hank_type') && strcmpi(cparams.hank_type, 'NHT') ||...
        isfield(cparams, 'FtoTtype') && strcmpi(cparams.FtoTtype, 'NST')
    cparams.Seg_tol = str2double(get(handles.Seg_tol_edit, 'String'));
    cparams.Max_seg = str2double(get(handles.Max_seg_edit, 'String'));
end

modelwin_han = guidata(handles.modelwin);
modelwin_han.cparams = [];
modelwin_han.cparams = cparams;
guidata(handles.modelwin, modelwin_han);


% *************************************************************************
% *                                                                       *
% *   Callbacks for Calculation UICONTROLS                                *
% *                                                                       *
% *************************************************************************

% -------------------------------------------------------------------------
function DC_radiobutton_Callback(hObject, eventdata, handles)

set(handles.DC_radiobutton, 'Value', 1);
set(handles.Freqdom_radiobutton, 'Value', 0);
set(handles.Timedom_radiobutton, 'Value', 0);
setup_gui(hObject, eventdata, handles, 'DC');

% -------------------------------------------------------------------------
function Freqdom_radiobutton_Callback(hObject, eventdata, handles)

set(handles.DC_radiobutton, 'Value', 0);
set(handles.Freqdom_radiobutton, 'Value', 1);
set(handles.Timedom_radiobutton, 'Value', 0);
setup_gui(hObject, eventdata, handles, 'FD');

% -------------------------------------------------------------------------
function Timedom_radiobutton_Callback(hObject, eventdata, handles)

set(handles.DC_radiobutton, 'Value', 0);
set(handles.Freqdom_radiobutton, 'Value', 0);
set(handles.Timedom_radiobutton, 'Value', 1);
setup_gui(hObject, eventdata, handles, 'TD');

% -------------------------------------------------------------------------function Full_sol_radiobutton_Callback(hObject, eventdata, handles)
set(handles.Quasi_radiobutton, 'Value', 0);
set(handles.Full_sol_radiobutton, 'Value', 1);
% -------------------------------------------------------------------------function Quasi_radiobutton_Callback(hObject, eventdata, handles)
set(handles.Quasi_radiobutton, 'Value', 1);
set(handles.Full_sol_radiobutton, 'Value', 0);

% *************************************************************************
% *                                                                       *
% *   Callbacks for Frequency parameters UICONTROLS                       *
% *                                                                       *
% *************************************************************************
% -------------------------------------------------------------------------function Freq_edit_Callback(hObject, eventdata, handles)
[num, isOk] = str2num(get(handles.Freq_edit, 'string'));

if ~isOk
    modelwin_han = guidata(handles.modelwin);
    set(handles.Freq_edit, 'string', modelwin_han.cparams.freq);
end

% -------------------------------------------------------------------------function NHT_radiobutton_Callback(hObject, eventdata, handles)
set(handles.NHT_radiobutton, 'Value', 1);
set(handles.FHT_radiobutton, 'Value', 0);
set(handles.NHT_tol_edit,    'Enable', 'on' );
set(handles.NHT_tol_txt,     'Enable', 'on' );
set(handles.Max_seg_edit,    'Enable', 'on' );
set(handles.Max_seg_txt,     'Enable', 'on' );
set(handles.Seg_tol_edit,    'Enable', 'on' );
set(handles.Seg_tol_txt,     'Enable', 'on' );
set(handles.FHT_err_edit,    'Enable', 'off');
set(handles.FHT_err_txt,     'Enable', 'off');

% -------------------------------------------------------------------------function FHT_radiobutton_Callback(hObject, eventdata, handles)
set(handles.NHT_radiobutton, 'Value', 0);
set(handles.FHT_radiobutton, 'Value', 1);
set(handles.NHT_tol_edit,    'Enable', 'off');
set(handles.NHT_tol_txt,     'Enable', 'off');
if get(handles.FST_radiobutton, 'Value') ||                             ...
        strcmpi(get(handles.FST_radiobutton, 'Enable'), 'off')
    set(handles.Max_seg_edit,    'Enable', 'off');
    set(handles.Max_seg_txt,     'Enable', 'off');
    set(handles.Seg_tol_edit,    'Enable', 'off');
    set(handles.Seg_tol_txt,     'Enable', 'off');
end
set(handles.FHT_err_edit,    'Enable', 'on' );
set(handles.FHT_err_txt,     'Enable', 'on' );

% -------------------------------------------------------------------------
function FDspline_checkbox_Callback(hObject, eventdata, handles)

if get(handles.FDspline_checkbox, 'Value')
    set(handles.showFDsp_checkbox, 'Enable', 'on' , 'Value', 0);
    set(handles.FDsp_NDEC_edit,        'Enable', 'on' );
    set(handles.FDsp_NDEC_txt,         'Enable', 'on' );
    set(handles.FDsp_Bmin_Bmax_txt,    'Enable', 'on' );
    set(handles.FDsp_Bmin_edit,        'Enable', 'on' );
    set(handles.FDsp_Bmax_edit,        'Enable', 'on' );
else
    set(handles.showFDsp_checkbox, 'Enable', 'off', 'Value', 0);
    set(handles.FDsp_NDEC_edit,        'Enable', 'off');
    set(handles.FDsp_NDEC_txt,         'Enable', 'off');
    set(handles.FDsp_Bmin_Bmax_txt,    'Enable', 'off');
    set(handles.FDsp_Bmin_edit,        'Enable', 'off');
    set(handles.FDsp_Bmax_edit,        'Enable', 'off');
end


% *************************************************************************
% *                                                                       *
% *   Callbacks for Time parameters UICONTROLS                            *
% *                                                                       *
% *************************************************************************
% -------------------------------------------------------------------------function Times_edit_Callback(hObject, eventdata, handles)
[num, isOk] = str2num(get(handles.Times_edit, 'string'));

if ~isOk
    modelwin_han = guidata(handles.modelwin);
    set(handles.Times_edit, 'string', modelwin_han.cparams.times);
end

% -------------------------------------------------------------------------function numberinput_Callback(hObject, eventdata, handles)
num = str2double(get(hObject, 'string'));

if isnan(num)
    set(hObject, 'string', handles.DefaultStrings{                      ...
            [handles.DefaultStrings{:,1}]==hObject,2});
end
% -------------------------------------------------------------------------function NST_radiobutton_Callback(hObject, eventdata, handles)
set(handles.NST_radiobutton, 'Value', 1);
set(handles.FST_radiobutton, 'Value', 0);
set(handles.FST_err_edit,    'Enable', 'off');
set(handles.FST_err_txt,     'Enable', 'off');
set(handles.NST_tol_edit,    'Enable', 'on' );
set(handles.NST_tol_txt,     'Enable', 'on' );
set(handles.Max_seg_edit,    'Enable', 'on' );
set(handles.Max_seg_txt,     'Enable', 'on' );
set(handles.Seg_tol_edit,    'Enable', 'on' );
set(handles.Seg_tol_txt,     'Enable', 'on' );

modelwin_han = guidata(handles.modelwin);
modelwin_han.cparams.FtoTtype = 'NST';
guidata(handles.modelwin,modelwin_han);
% -------------------------------------------------------------------------function FST_radiobutton_Callback(hObject, eventdata, handles)
set(handles.NST_radiobutton, 'Value', 0);
set(handles.FST_radiobutton, 'Value', 1);
set(handles.NST_tol_edit,    'Enable', 'off');
set(handles.NST_tol_txt,     'Enable', 'off');
if get(handles.FHT_radiobutton, 'Value') ||                             ...
        strcmpi(get(handles.FHT_radiobutton, 'Enable'), 'off')
    set(handles.Max_seg_edit,    'Enable', 'off');
    set(handles.Max_seg_txt,     'Enable', 'off');
    set(handles.Seg_tol_edit,    'Enable', 'off');
    set(handles.Seg_tol_txt,     'Enable', 'off');
end
set(handles.FST_err_edit,    'Enable', 'on' );
set(handles.FST_err_txt,     'Enable', 'on' );

% -------------------------------------------------------------------------function showFDsp_checkbox_Callback(hObject, eventdata, handles)


% -------------------------------------------------------------------------
function Waveform_popup_Callback(hObject, eventdata, handles)
set(hObject, 'Value', 1);
disp('Waveform popup not implemented yet...');


% *************************************************************************
% *                                                                       *
% *   Callbacks for Dipole integrations UICONTROLS                        *
% *                                                                       *
% *************************************************************************
% -------------------------------------------------------------------------function Rspline_checkbox_Callback(hObject, eventdata, handles)
if get(handles.Rspline_checkbox, 'Value')
    set(handles.Rsp_NDEC_edit,   'Enable', 'on' );
    set(handles.Rsp_NDEC_txt,    'Enable', 'on' );
else
    set(handles.Rsp_NDEC_edit,   'Enable', 'off');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -