📄 macaa.m
字号:
% -- Title: 计算机辅助线性电路分析程序 界面模块
% -- Project: MACAA
% -------------------------------------------------------------------------
% -- File: MACAA.m / MACAA.fig
% -- Author/Designer: 董晓舟 (Xiaozhoudong@vip.sina.com)
% -- Organization: 山东大学威海分校 信息工程学院
% -- Last update: 2004/11/14
% -- IDE: Mathworks MATLAB 7 Release 14
% -- Dependency:
% -------------------------------------------------------------------------
% -- Discription: 节点/支路输入
% 保存输入文件名为 运行目录\BranchMatrix(ASCII)
% \BranchValue(MAT)
% 保存结果文件名为 运行目录\ANSMatrix(ASCII)
% -------------------------------------------------------------------------
% -- Revision Number: 1
% -- Date of Change: 2005/3/19
% -- Modifier: 张丹丹 (Sophiadandan@vip.sina.com)
% -- Discription: 根据用户输入选择符号或数值解法
% 更改界面显示方式以适应符号法求解
% -------------------------------------------------------------------------
function varargout = MACAA(varargin)
% --- TOP -----------------------------------------------------------------
% Begin initialization code
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @test_OpeningFcn, ...
'gui_OutputFcn', @test_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code
% --- Executes just before test is made visible.
function test_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
initialize_gui(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = test_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
% ------------------------------------------------------------- TOP END ---
% --- TEXTBOX -------------------------------------------------------------
% 文本框输入
% BRANCH NUM --- 1 -
function BranchNum_Callback(hObject, eventdata, handles)
% VALUE --- 2 -
function Value_Callback(hObject, eventdata, handles)
handles.metricdata.value = get(hObject, 'String');
guidata(handles.figure1, handles);
% NFROM --- 3 -
function nfrom_Callback(hObject, eventdata, handles)
handles.metricdata.nfrom = str2double(get(hObject, 'String'));
guidata(handles.figure1, handles);
% NFTO --- 4 -
function nto_Callback(hObject, eventdata, handles)
handles.metricdata.nto = str2double(get(hObject, 'String'));
guidata(handles.figure1, handles);
% NCFROM --- 5 -
function ncfrom_Callback(hObject, eventdata, handles)
handles.metricdata.ncfrom = str2double(get(hObject, 'String'));
guidata(handles.figure1, handles);
% NCTO --- 6 -
function ncto_Callback(hObject, eventdata, handles)
handles.metricdata.ncto = str2double(get(hObject, 'String'));
guidata(handles.figure1, handles);
% --------------------------------------------------------- TEXTBOX END ---
% --- POPMENU -------------------------------------------------------------
% --- 支路类型选择
function BranchStyle_Callback(hObject, eventdata, handles)
% 获取选择
handles.metricdata.style = get(handles.BranchStyle, 'Value');
handles.metricdata.value = 0;
handles.metricdata.nfrom = 0;
handles.metricdata.nto = 0;
handles.metricdata.ncfrom = 0;
handles.metricdata.ncto = 0;
set(handles.Value, 'String', '0');
set(handles.nfrom, 'String', '0');
set(handles.nto, 'String', '0');
set(handles.ncfrom, 'String', '0');
set(handles.ncto, 'String', '0');
guidata(handles.figure1, handles);
% 根据支路类型设置输入状态
switch handles.metricdata.style
case 1 % R
set(handles.Unit, 'String', 'Ohm');
set(handles.ncto, 'Enable', 'off');
set(handles.ncfrom, 'Enable', 'on');
set(handles.NctoText, 'Enable', 'off');
set(handles.Value, 'Enable', 'on');
set(handles.ValueText, 'Enable', 'on');
set(handles.NcfromText, 'String', '设置压定义:');
set(handles.NcfromText, 'Enable', 'on');
case 2 % G
set(handles.Unit, 'String', 'Simensi');
set(handles.ncto, 'Enable', 'off');
set(handles.ncfrom, 'Enable', 'on');
set(handles.NctoText, 'Enable', 'off');
set(handles.Value, 'Enable', 'on');
set(handles.ValueText, 'Enable', 'on');
set(handles.NcfromText, 'String', '设置压定义:');
set(handles.NcfromText, 'Enable', 'on');
case 3 % VS
set(handles.Unit, 'String', 'Voltage');
set(handles.ncto, 'Enable', 'off');
set(handles.ncfrom, 'Enable', 'off');
set(handles.NctoText, 'Enable', 'off');
set(handles.Value, 'Enable', 'on');
set(handles.ValueText, 'Enable', 'on');
set(handles.NcfromText, 'String', '控制始节点:');
set(handles.NcfromText, 'Enable', 'off');
case 4 % CS
set(handles.Unit, 'String', 'Ampere');
set(handles.ncto, 'Enable', 'off');
set(handles.ncfrom, 'Enable', 'off');
set(handles.NctoText, 'Enable', 'off');
set(handles.Value, 'Enable', 'on');
set(handles.ValueText, 'Enable', 'on');
set(handles.NcfromText, 'String', '控制始节点:');
set(handles.NcfromText, 'Enable', 'off');
case 5 % VCCS
set(handles.Unit, 'String', ' ');
set(handles.ncto, 'Enable', 'on');
set(handles.ncfrom, 'Enable', 'on');
set(handles.NctoText, 'Enable', 'on');
set(handles.Value, 'Enable', 'on');
set(handles.ValueText, 'Enable', 'on');
set(handles.NcfromText, 'String', '控制始节点:');
set(handles.NcfromText, 'Enable', 'on');
case 6 % VCVS
set(handles.Unit, 'String', ' ');
set(handles.ncto, 'Enable', 'on');
set(handles.ncfrom, 'Enable', 'on');
set(handles.NctoText, 'Enable', 'on');
set(handles.Value, 'Enable', 'on');
set(handles.ValueText, 'Enable', 'on');
set(handles.NcfromText, 'String', '控制始节点:');
set(handles.NcfromText, 'Enable', 'on');
case 7 % CCCS
set(handles.Unit, 'String', ' ');
set(handles.ncto, 'Enable', 'off');
set(handles.ncfrom, 'Enable', 'on');
set(handles.NctoText, 'Enable', 'off');
set(handles.Value, 'Enable', 'on');
set(handles.ValueText, 'Enable', 'on');
set(handles.NcfromText, 'String', '控制支路号:');
set(handles.NcfromText, 'Enable', 'on');
case 8 % CCVS
set(handles.Unit, 'String', ' ');
set(handles.ncto, 'Enable', 'off');
set(handles.ncfrom, 'Enable', 'on');
set(handles.NctoText, 'Enable', 'off');
set(handles.Value, 'Enable', 'on');
set(handles.ValueText, 'Enable', 'on');
set(handles.NcfromText, 'String', '控制支路号:');
set(handles.NcfromText, 'Enable', 'on');
case 9 % OPAMP
set(handles.Unit, 'String', ' ');
set(handles.ncto, 'Enable', 'on');
set(handles.ncfrom, 'Enable', 'on');
set(handles.NctoText, 'Enable', 'on');
set(handles.Value, 'Enable', 'off');
set(handles.ValueText, 'Enable', 'off');
set(handles.NcfromText, 'String', '控制始节点:');
set(handles.NcfromText, 'Enable', 'on');
end
% --------------------------------------------------------- POPMENU END ---
% --- BUTTON --------------------------------------------------------------
% ADD --- 1 -
% --- 编辑-添加
function Add_Callback(hObject, eventdata, handles)
global NN
global BRANCHVAL
global BRANCHMAT
global STYLENAME
% --- 输入保护 ---
if isnan(handles.metricdata.nfrom)
set(handles.nfrom, 'String', 0);
errordlg('错误:输入必须为数值!','Error');
handles.metricdata.nfrom = 0;
guidata(handles.figure1, handles);
return
end % Nfrom
if isnan(handles.metricdata.nto)
set(handles.nto, 'String', 0);
errordlg('错误:输入必须为数值!','Error');
handles.metricdata.nto = 0;
guidata(handles.figure1, handles);
return
end % Nto
if isnan(handles.metricdata.ncfrom)
set(handles.ncfrom, 'String', 0);
errordlg('错误:输入必须为数值!','Error');
handles.metricdata.ncfrom = 0;
guidata(handles.figure1, handles);
return
end % Ncfrom
if (( handles.metricdata.style == 1 )||( handles.metricdata.style == 2 ))
if ~(handles.metricdata.ncfrom == 0 || handles.metricdata.ncfrom == 1)
set(handles.ncfrom, 'String', 0);
errordlg('错误:输入必须为0或1!','Error');
handles.metricdata.ncfrom = 0;
guidata(handles.figure1, handles);
return
end
end % Ncfrom be a Voltage define flag
if isnan(handles.metricdata.ncto)
set(handles.ncto, 'String', 0);
errordlg('错误:输入必须为数值!','Error');
handles.metricdata.ncfrom = 0;
guidata(handles.figure1, handles);
return
end % Ncto
% --- Add/CHANGE item 添加/更改 记录 ---
if (NN == handles.metricdata.DataViewer) % 添加
NN = NN + 1;
if isempty(BRANCHMAT) % 初次输入
BRANCHVAL(NN) = sym(handles.metricdata.value);
BRANCHMAT(NN,2) = str2double(handles.metricdata.value);
else
if all(sum(isnan(BRANCHMAT(:,2)))) % 符号运算
BRANCHVAL(NN) = sym(handles.metricdata.value);
BRANCHMAT(NN,2) = str2double(handles.metricdata.value);
else % 数值运算
if isnan(str2double(handles.metricdata.value)) % 新插入为符号
for i = 1:length(BRANCHMAT(:,2))
BRANCHVAL(i) = sym(BRANCHMAT(i,2));
end
BRANCHVAL(NN) = sym(handles.metricdata.value);
BRANCHMAT(NN,2) = str2double(handles.metricdata.value);
end
end
end
BRANCHMAT(NN,1) = handles.metricdata.style;
BRANCHMAT(NN,3) = handles.metricdata.nfrom;
BRANCHMAT(NN,4) = handles.metricdata.nto;
BRANCHMAT(NN,5) = handles.metricdata.ncfrom;
BRANCHMAT(NN,6) = handles.metricdata.ncto;
m = 1:5;
switch handles.metricdata.style
case 1 % R
STYLENAME(NN,m) = 'R ';
case 2 % G
STYLENAME(NN,m) = 'G ';
case 3 % VS
STYLENAME(NN,m) = 'VS ';
case 4 % CS
STYLENAME(NN,m) = 'CS ';
case 5 % VCCS
STYLENAME(NN,m) = 'VCCS ';
case 6 % VCVS
STYLENAME(NN,m) = 'VCVS ';
case 7 % CCCS
STYLENAME(NN,m) = 'CCCS ';
case 8 % CCVS
STYLENAME(NN,m) = 'CCVS ';
case 9 % OPAMP
STYLENAME(NN,m) = 'OPAMP';
end
handles.metricdata.DataViewer = NN;
guidata(handles.figure1, handles);
set(handles.InputViewer, 'Value', handles.metricdata.DataViewer);
% 更新显示
ResetItems(hObject, handles);
set(handles.BranchNum, 'String', NN+1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -