No BSD License  

Highlights from
Mult&T

image thumbnail
from Mult&T by Franklin Pineda
Find realizations of multivariable systems. Created for Msc. students at the UANDES and UAC.

multitool(varargin)
function varargout = multitool(varargin)
%MULTITOOL MULTI Design Tool
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @multitool_OpeningFcn, ...
                   'gui_OutputFcn',  @multitool_OutputFcn, ...
                   'gui_LayoutFcn',  @multitool_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

function h1 = multitool_LayoutFcn(policy)

persistent hsingleton;
if strcmpi(policy, 'reuse') & ishandle(hsingleton)
    h1 = hsingleton;
    return;
end

appdata = [];
appdata.GUIDEOptions = struct(...
    'active_h', [], ...
    'taginfo', struct(...
    'figure', 2, ...
    'uipanel', 22, ...
    'axes', 4, ...
    'popupmenu', 19, ...
    'text', 40, ...
    'listbox', 11, ...
    'togglebutton', 4, ...
    'pushbutton', 56, ...
    'edit', 12, ...
    'radiobutton', 17, ...
    'checkbox', 6, ...
    'frame', 2), ...
    'override', 0, ...
    'release', 13, ...
    'resize', 'none', ...
    'accessibility', 'callback', ...
    'mfile', 1, ...
    'callbacks', 1, ...
    'singleton', 1, ...
    'syscolorfig', 1, ...
    'blocking', 0, ...
    'lastSavedFile', 'C:\MATLAB7\work\multitool.m');
appdata.lastValidTag = 'figure1';
appdata.GUIDELayoutEditor = [];
ssize=get(0,'ScreenSize');
if isequal(ssize(3),1280)&&isequal(ssize(4),800)
    pos=[277.5 235.6667 725 449];
elseif isequal(ssize(3),1280)&&isequal(ssize(4),768)
     pos=[277.5 212.6667 725 449];
elseif isequal(ssize(3),1024)&&isequal(ssize(4),768)
    pos=[149.5 212.6667 725 449];
elseif isequal(ssize(3),800)&&isequal(ssize(4),600)
    pos=[37.5 100 725  449];
elseif isequal(ssize(3),1280)&&isequal(ssize(4),1024)
    pos=[277.5 389 725 449];
else
    pos=[277.5 389 725 449];
end
h1 = figure(...
'Units','pixels',...
'CloseRequestFcn','multitool(''figure1_CloseRequestFcn'',gcbf,[],guidata(gcbf))',...
'Color',[0.941176470588235 0.941176470588235 0.941176470588235],...
'Colormap',[0 0 0.5625;0 0 0.625;0 0 0.6875;0 0 0.75;0 0 0.8125;0 0 0.875;0 0 0.9375;0 0 1;0 0.0625 1;0 0.125 1;0 0.1875 1;0 0.25 1;0 0.3125 1;0 0.375 1;0 0.4375 1;0 0.5 1;0 0.5625 1;0 0.625 1;0 0.6875 1;0 0.75 1;0 0.8125 1;0 0.875 1;0 0.9375 1;0 1 1;0.0625 1 1;0.125 1 0.9375;0.1875 1 0.875;0.25 1 0.8125;0.3125 1 0.75;0.375 1 0.6875;0.4375 1 0.625;0.5 1 0.5625;0.5625 1 0.5;0.625 1 0.4375;0.6875 1 0.375;0.75 1 0.3125;0.8125 1 0.25;0.875 1 0.1875;0.9375 1 0.125;1 1 0.0625;1 1 0;1 0.9375 0;1 0.875 0;1 0.8125 0;1 0.75 0;1 0.6875 0;1 0.625 0;1 0.5625 0;1 0.5 0;1 0.4375 0;1 0.375 0;1 0.3125 0;1 0.25 0;1 0.1875 0;1 0.125 0;1 0.0625 0;1 0 0;0.9375 0 0;0.875 0 0;0.8125 0 0;0.75 0 0;0.6875 0 0;0.625 0 0;0.5625 0 0],...
'DockControls','off',...
'InvertHardcopy',get(0,'defaultfigureInvertHardcopy'),...
'MenuBar','none',...
'Name','Mult&T',...
'NumberTitle','off',...
'Position',pos,...
'Renderer',get(0,'defaultfigureRenderer'),...
'RendererMode','manual',...
'Resize','off',...
'ToolBar','none',...
'Tag','figure1',...
'UserData',[],...
'Behavior',get(0,'defaultfigureBehavior'),...
'Visible','on',...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'mtf';

h2 = uipanel(...
'Parent',h1,...
'Units','characters',...
'HighlightColor',[0 0 0.627450980392157],...
'BorderType','beveledin',...
'FontSize',14,...
'FontWeight','bold',...
'Title','MTF',...
'Position',[1.6 0.692307692307689 34 12.5],...
'Clipping','off',...
'Tag','mtf',...
'Behavior',get(0,'defaultuipanelBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'g11';

h3 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Callback','multitool(''g11_Callback'',gcbo,[],guidata(gcbo))',...
'CData',[],...
'Enable','off',...
'Position',[6.4 8.76923076923077 5 1.46153846153846],...
'String','G11',...
'Tag','g11',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'text3';

h4 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'FontSize',10,...
'Position',[0.6 2.15384615384616 32 1.76923076923077],...
'String','num',...
'Style','text',...
'Tag','text3',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'text4';

h5 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'FontSize',10,...
'Position',[0.6 0.153846153846154 32 1.76923076923077],...
'String','den',...
'Style','text',...
'Tag','text4',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'text5';

h6 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Position',[4 2.07692307692308 25 0.769230769230769],...
'String','-------------------------------',...
'Style','text',...
'Tag','text5',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'g12';

h7 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Callback','multitool(''g12_Callback'',gcbo,[],guidata(gcbo))',...
'Enable','off',...
'Position',[11.6 8.76923076923077 5 1.46153846153846],...
'String','G12',...
'Tag','g12',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'g13';

h8 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Callback','multitool(''g13_Callback'',gcbo,[],guidata(gcbo))',...
'Enable','off',...
'Position',[16.8000000000001 8.76923076923077 5 1.46153846153846],...
'String','G13',...
'Tag','g13',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'g14';

h9 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Callback','multitool(''g14_Callback'',gcbo,[],guidata(gcbo))',...
'Enable','off',...
'Position',[21.8000000000001 8.76923076923077 5 1.46153846153846],...
'String','G14',...
'Tag','g14',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'g21';

h10 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Callback','multitool(''g21_Callback'',gcbo,[],guidata(gcbo))',...
'Enable','off',...
'Position',[6.4 7.30769230769231 5 1.46153846153846],...
'String','G21',...
'Tag','g21',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'g22';

h11 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Callback','multitool(''g22_Callback'',gcbo,[],guidata(gcbo))',...
'Enable','off',...
'Position',[11.6 7.30769230769231 5 1.46153846153846],...
'String','G22',...
'Tag','g22',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'g23';

h12 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Callback','multitool(''g23_Callback'',gcbo,[],guidata(gcbo))',...
'Enable','off',...
'Position',[16.8000000000001 7.30769230769231 5 1.46153846153846],...
'String','G23',...
'Tag','g23',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'g24';

h13 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Callback','multitool(''g24_Callback'',gcbo,[],guidata(gcbo))',...
'Enable','off',...
'Position',[21.8000000000001 7.30769230769231 5 1.46153846153846],...
'String','G24',...
'Tag','g24',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'g31';

h14 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Callback','multitool(''g31_Callback'',gcbo,[],guidata(gcbo))',...
'Enable','off',...
'Position',[6.4 5.76923076923077 5 1.46153846153846],...
'String','G31',...
'Tag','g31',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'g32';

h15 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Callback','multitool(''g32_Callback'',gcbo,[],guidata(gcbo))',...
'Enable','off',...
'Position',[11.6 5.76923076923077 5 1.46153846153846],...
'String','G32',...
'Tag','g32',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'g33';

h16 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Callback','multitool(''g33_Callback'',gcbo,[],guidata(gcbo))',...
'Enable','off',...
'Position',[16.8000000000001 5.76923076923077 5 1.46153846153846],...
'String','G33',...
'Tag','g33',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'g34';

h17 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Callback','multitool(''g34_Callback'',gcbo,[],guidata(gcbo))',...
'Enable','off',...
'Position',[21.8000000000001 5.76923076923077 5 1.46153846153846],...
'String','G34',...
'Tag','g34',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'g41';

h18 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Callback','multitool(''g41_Callback'',gcbo,[],guidata(gcbo))',...
'Enable','off',...
'Position',[6.4 4.30769230769231 5 1.46153846153846],...
'String','G41',...
'Tag','g41',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'g42';

h19 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Callback','multitool(''g42_Callback'',gcbo,[],guidata(gcbo))',...
'Enable','off',...
'Position',[11.6 4.30769230769231 5 1.46153846153846],...
'String','G42',...
'Tag','g42',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'g43';

h20 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Callback','multitool(''g43_Callback'',gcbo,[],guidata(gcbo))',...
'Enable','off',...
'Position',[16.8000000000001 4.30769230769231 5 1.46153846153846],...
'String','G43',...
'Tag','g43',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'g44';

h21 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Callback','multitool(''g44_Callback'',gcbo,[],guidata(gcbo))',...
'Enable','off',...
'Position',[21.8000000000001 4.30769230769231 5 1.46153846153846],...
'String','G44',...
'Tag','g44',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'text31';

h22 = uicontrol(...
'Parent',h2,...
'Units','characters',...
'Position',[27 3.88461538461539 3 1.2],...
'Style','text',...
'Tag','text31',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'uipanel11';

h23 = uipanel(...
'Parent',h1,...
'Units','characters',...
'HighlightColor',[0 0 0.627450980392157],...
'BorderType','beveledout',...
'FontSize',14,...
'FontWeight','bold',...
'Title','SS',...
'TitlePosition','righttop',...
'Position',[1.8 13.4615384615385 116 20.8461538461538],...
'Clipping','off',...
'Tag','uipanel11',...
'Behavior',get(0,'defaultuipanelBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'bsa';

h24 = uicontrol(...
'Parent',h23,...
'Units','characters',...
'Callback','multitool(''bsa_Callback'',gcbo,[],guidata(gcbo))',...
'FontSize',14,...
'Position',[0.8 18.8461538461539 5 1.46153846153846],...
'String','A',...
'Tag','bsa',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'bsb';

h25 = uicontrol(...
'Parent',h23,...
'Units','characters',...
'Callback','multitool(''bsb_Callback'',gcbo,[],guidata(gcbo))',...
'FontSize',14,...
'Position',[5.8 18.8461538461539 5 1.46153846153846],...
'String',{  'B'; '' },...
'Tag','bsb',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'bsc';

h26 = uicontrol(...
'Parent',h23,...
'Units','characters',...
'Callback','multitool(''bsc_Callback'',gcbo,[],guidata(gcbo))',...
'FontSize',14,...
'Position',[10.8 18.8461538461539 5 1.46153846153846],...
'String',{  'C'; '' },...
'Tag','bsc',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'bsd';

h27 = uicontrol(...
'Parent',h23,...
'Units','characters',...
'Callback','multitool(''bsd_Callback'',gcbo,[],guidata(gcbo))',...
'FontSize',14,...
'Position',[15.8 18.8461538461539 5 1.46153846153846],...
'String','D',...
'Tag','bsd',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'text10';

h28 = uicontrol(...
'Parent',h23,...
'Units','characters',...
'Position',[25 18.8461538461539 18 1.15384615384615],...
'String','Canonical Form:',...
'Style','text',...
'TooltipString','Observability 1-8, Controlability 9-16',...
'Tag','text10',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'canonf';

h29 = uicontrol(...
'Parent',h23,...
'Units','characters',...
'BackgroundColor',[1 1 1],...
'Callback','multitool(''canonf_Callback'',gcbo,[],guidata(gcbo))',...
'Position',[43 18.923076923077 8 1.30769230769231],...
'String',{  '1'; '2'; '3'; '4'; '5'; '6'; '7'; '8'; '9'; '10'; '11'; '12'; '13'; '14'; '15'; '16'; 'Jordan' },...
'Style','popupmenu',...
'Value',1,...
'Tag','canonf',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'bst';

h30 = uicontrol(...
'Parent',h23,...
'Units','characters',...
'Callback','multitool(''bst_Callback'',gcbo,[],guidata(gcbo))',...
'Enable','inactive',...
'FontSize',14,...
'Position',[20.8 18.8461538461538 5 1.46153846153846],...
'String','T',...
'Tag','bst',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'sstomtf1';

h31 = uicontextmenu(...
'Parent',h1,...
'Tag','sstomtf1',...
'Behavior',get(0,'defaultuicontextmenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'Untitled_1';

h32 = uimenu(...
'Parent',h31,...
'Label','Convert State-Space to... ',...
'Separator','on',...
'Tag','Untitled_1',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'sstomtf';

h33 = uimenu(...
'Parent',h31,...
'Callback','multitool(''sstomtf_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Matrix Transfer Function',...
'Separator','on',...
'Tag','sstomtf',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'sstolmpf';

h34 = uimenu(...
'Parent',h31,...
'Callback','multitool(''sstolmpf_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Left Matrix Polynomial Fraction',...
'Tag','sstolmpf',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'sstormpf';

h35 = uimenu(...
'Parent',h31,...
'Callback','multitool(''sstormpf_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Right Matrix Polynomial Fraction',...
'Tag','sstormpf',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'comtoreal';

h36 = uimenu(...
'Parent',h31,...
'Callback','multitool(''comtoreal_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Complex to Real Matrix',...
'Separator','on',...
'Tag','comtoreal',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'mtftompf';

h37 = uicontextmenu(...
'Parent',h1,...
'Tag','mtftompf',...
'Behavior',get(0,'defaultuicontextmenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'Untitled_2';

h38 = uimenu(...
'Parent',h37,...
'Label','Convert Matrix Transfer Function to...',...
'Separator','on',...
'Tag','Untitled_2',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'mtftolmpf';

h39 = uimenu(...
'Parent',h37,...
'Callback','multitool(''mtftolmpf_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Left Matrix Polynomial Fraction',...
'Separator','on',...
'Tag','mtftolmpf',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'mtftormpf';

h40 = uimenu(...
'Parent',h37,...
'Callback','multitool(''mtftormpf_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Right Matrix Polynomial Fraction',...
'Tag','mtftormpf',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'mtftolcf';

h41 = uimenu(...
'Parent',h37,...
'Callback','multitool(''mtftolcf_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Left Coprime Fraction',...
'Tag','mtftolcf',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'mtftorcf';

h42 = uimenu(...
'Parent',h37,...
'Callback','multitool(''mtftorcf_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Right Coprime Fraction',...
'Tag','mtftorcf',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'mpftoss1';

h43 = uicontextmenu(...
'Parent',h1,...
'Tag','mpftoss1',...
'Behavior',get(0,'defaultuicontextmenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'Untitled_3';

h44 = uimenu(...
'Parent',h43,...
'Label','Convert Matrix Polynomial Fraction to...',...
'Separator','on',...
'Tag','Untitled_3',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'mpftomtf';

h45 = uimenu(...
'Parent',h43,...
'Callback','multitool(''mpftomtf_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Matrix Transfer Function',...
'Separator','on',...
'Tag','mpftomtf',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'mpftoss';

h46 = uimenu(...
'Parent',h43,...
'Callback','multitool(''mpftoss_Callback'',gcbo,[],guidata(gcbo))',...
'Label','State-Space',...
'Tag','mpftoss',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'yo';

h47 = uicontextmenu(...
'Parent',h1,...
'Tag','yo',...
'Behavior',get(0,'defaultuicontextmenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'Untitled_5';

h48 = uimenu(...
'Parent',h47,...
'Label','Mult& T',...
'Tag','Untitled_5',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'text32';

h49 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[0 0 0.501960784313725],...
'ForegroundColor',[1 0.501960784313725 0.501960784313725],...
'Position',[78.6000000000004 1.07692307692307 37.2 2.61538461538462],...
'String','',...
'Style','frame',...
'Tag','text32',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'text34';

h50 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[0 0 0.501960784313725],...
'ForegroundColor',[1 1 1],...
'Position',[84.0000000000005 1.15384615384615 27 2.30769230769231],...
'String',{  'Use the File menu to import '; 'the MIMO sys Model...' },...
'Style','text',...
'Tag','text34',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'editpq';

h51 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[1 1 1],...
'CData',[],...
'FontSize',12,...
'HorizontalAlignment','left',...
'Max',10,...
'Position',[53.6000000000001 4.46153846153846 64 7.84615384615385],...
'String','',...
'Style','edit',...
'Value',1,...
'Tag','editpq',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'text23';

h52 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[0 0 0.501960784313725],...
'CData',[],...
'ForegroundColor',[1 0.501960784313725 0.501960784313725],...
'Position',[120.2 1.07692307692308 24 32.5384615384615],...
'Style','frame',...
'Tag','text23',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'text39';

h53 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[0 0 0.501960784313725],...
'Enable','inactive',...
'FontSize',10,...
'ForegroundColor',[1 0 0],...
'Position',[122.8 1.3076923076923 18.4 6.23076923076923],...
'String','',...
'Style','edit',...
'Tag','text39',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'cancel';

h54 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'Callback','multitool(''cancel_Callback'',gcbo,[],guidata(gcbo))',...
'Position',[125.4 2 13 2.07692307692308],...
'String','Cancel',...
'Tag','cancel',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'schar';

h55 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[1 1 1],...
'Callback','multitool(''schar_Callback'',gcbo,[],guidata(gcbo))',...
'CData',[],...
'Position',[121.8 9.23076923076924 20 1.46153846153846],...
'String',{  'poles'; 'zeros'; 'Relative Gain Array (rga)'; 'Smith Mc.Millan Form' },...
'Style','popupmenu',...
'Value',1,...
'Tag','schar',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'text29';

h56 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[0 0 0.501960784313725],...
'CData',[],...
'FontWeight','bold',...
'ForegroundColor',[1 1 1],...
'HorizontalAlignment','left',...
'Position',[122 10.8461538461539 18.8 1.15384615384615],...
'String','Characteristics',...
'Style','text',...
'Tag','text29',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'text28';

h57 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[0 0 0.501960784313725],...
'CData',[],...
'ForegroundColor',[1 1 1],...
'Position',[122 12.7692307692308 6 1.53846153846154],...
'String','Error :',...
'Style','text',...
'Tag','text28',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'text33';

h58 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[0 0 0.501960784313725],...
'ForegroundColor',[1 1 1],...
'HorizontalAlignment','right',...
'Position',[127.4 12.9230769230769 14 1.46153846153846],...
'String','',...
'Style','text',...
'Tag','text33',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'mor';

h59 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[1 1 1],...
'Callback','multitool(''mor_Callback'',gcbo,[],guidata(gcbo))',...
'CData',[],...
'Position',[121.6 14.7692307692308 20 1.46153846153846],...
'String',{  'balancmr'; 'shurmr'; 'hankelmr' },...
'Style','popupmenu',...
'Value',1,...
'Tag','mor',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'Untitled_6';

h60 = uimenu(...
'Parent',h1,...
'Label','File',...
'Tag','Untitled_6',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'impom';

h61 = uimenu(...
'Parent',h60,...
'Accelerator','A',...
'Callback','multitool(''impom_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Import...',...
'Tag','impom',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'expom';

h62 = uimenu(...
'Parent',h60,...
'Accelerator','B',...
'Label','Export...',...
'Tag','expom',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'sstow';

h63 = uimenu(...
'Parent',h62,...
'Callback','multitool(''sstow_Callback'',gcbo,[],guidata(gcbo))',...
'Label','SS to WorkSpace',...
'Tag','sstow',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'mtftow';

h64 = uimenu(...
'Parent',h62,...
'Callback','multitool(''mtftow_Callback'',gcbo,[],guidata(gcbo))',...
'Label','MTF to WorkSpace',...
'Tag','mtftow',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'mpftow';

h65 = uimenu(...
'Parent',h62,...
'Callback','multitool(''mpftow_Callback'',gcbo,[],guidata(gcbo))',...
'Label','MPF to WorkSpace',...
'Tag','mpftow',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'expom';

h66 = uimenu(...
'Parent',h62,...
'Callback','multitool(''expom_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Archive .mat',...
'Separator','on',...
'Tag','expom',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'savem';

h67 = uimenu(...
'Parent',h60,...
'Callback','multitool(''savem_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Save session...',...
'Separator','on',...
'Tag','savem',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'loadm';

h68 = uimenu(...
'Parent',h60,...
'Callback','multitool(''loadm_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Load session...',...
'Tag','loadm',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'printm';

h69 = uimenu(...
'Parent',h60,...
'Accelerator','P',...
'Callback','multitool(''printm_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Print',...
'Separator','on',...
'Tag','printm',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'printfig';

h70 = uimenu(...
'Parent',h60,...
'Callback','multitool(''printfig_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Print Figure',...
'Tag','printfig',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'closem';

h71 = uimenu(...
'Parent',h60,...
'Accelerator','X',...
'Callback','close(gcbf)',...
'Label','Close',...
'Separator','on',...
'Tag','closem',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'Untitled_7';

h72 = uimenu(...
'Parent',h1,...
'Label','Analysis',...
'Tag','Untitled_7',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'steps';

h73 = uimenu(...
'Parent',h72,...
'Label','State-Space',...
'Tag','steps',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'stepss1';

h74 = uimenu(...
'Parent',h73,...
'Callback','multitool(''stepss1_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Step to Response Command',...
'Tag','stepss1',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'isconss';

h75 = uimenu(...
'Parent',h73,...
'Callback','multitool(''isconss_Callback'',gcbo,[],guidata(gcbo))',...
'Label','is Controlable',...
'Separator','on',...
'Tag','isconss',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'isobsvss';

h76 = uimenu(...
'Parent',h73,...
'Callback','multitool(''isobsvss_Callback'',gcbo,[],guidata(gcbo))',...
'Label','is Observable',...
'Tag','isobsvss',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'coxmode';

h77 = uimenu(...
'Parent',h73,...
'Callback','multitool(''coxmode_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Controlability and Observability for Mode',...
'Separator','on',...
'Tag','coxmode',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'stepmt1';

h78 = uimenu(...
'Parent',h72,...
'Label','Matrix Transfer Function',...
'Separator','on',...
'Tag','stepmt1',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'stepmt';

h79 = uimenu(...
'Parent',h78,...
'Callback','multitool(''stepmt_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Step to Response Command',...
'Tag','stepmt',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'coxmode1';

h80 = uimenu(...
'Parent',h72,...
'Label','Matrix Polinomial Fraction',...
'Separator','on',...
'Tag','coxmode1',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'iscolred';

h81 = uimenu(...
'Parent',h80,...
'Callback','multitool(''iscolred_Callback'',gcbo,[],guidata(gcbo))',...
'Label','is Column Reduced',...
'Tag','iscolred',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'isrowred';

h82 = uimenu(...
'Parent',h80,...
'Callback','multitool(''isrowred_Callback'',gcbo,[],guidata(gcbo))',...
'Label','is Row Reduced',...
'Tag','isrowred',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'iscon';

h83 = uimenu(...
'Parent',h80,...
'Callback','multitool(''iscon_Callback'',gcbo,[],guidata(gcbo))',...
'Label','is Controlable',...
'Tag','iscon',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'isobsv';

h84 = uimenu(...
'Parent',h80,...
'Callback','multitool(''isobsv_Callback'',gcbo,[],guidata(gcbo))',...
'Label','is Observable',...
'Tag','isobsv',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'fcomp';

h85 = uimenu(...
'Parent',h80,...
'Callback','multitool(''fcomp_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Format Compact',...
'Separator','on',...
'Tag','fcomp',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'Untitled_8';

h86 = uimenu(...
'Parent',h1,...
'Label','Help',...
'Tag','Untitled_8',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'mathelp';

h87 = uimenu(...
'Parent',h86,...
'Callback','multitool(''mathelp_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Matlab Help',...
'Separator','on',...
'Tag','mathelp',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'examplesmht';

h88 = uimenu(...
'Parent',h86,...
'Callback','multitool(''examplesmht_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Examples...',...
'Tag','examplesmht',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'tutorm';

h89 = uimenu(...
'Parent',h86,...
'Callback','multitool(''tutorm_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Reference Functions',...
'Separator','on',...
'Tag','tutorm',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'aboutm';

h90 = uimenu(...
'Parent',h86,...
'Callback','creditos',...
'Label','About Mult&T...',...
'Separator','on',...
'Tag','aboutm',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'charmpf';

h91 = uicontextmenu(...
'Parent',h1,...
'Tag','charmpf',...
'Behavior',get(0,'defaultuicontextmenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'iscolred';

h92 = uimenu(...
'Parent',h91,...
'Callback','multitool(''iscolred_Callback'',gcbo,[],guidata(gcbo))',...
'Label','is column reduced',...
'Tag','iscolred',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'isrowred';

h93 = uimenu(...
'Parent',h91,...
'Callback','multitool(''isrowred_Callback'',gcbo,[],guidata(gcbo))',...
'Label','is row reduced',...
'Tag','isrowred',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'iscon';

h94 = uimenu(...
'Parent',h91,...
'Callback','multitool(''iscon_Callback'',gcbo,[],guidata(gcbo))',...
'Label','is controlable',...
'Tag','iscon',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'isobsv';

h95 = uimenu(...
'Parent',h91,...
'Callback','multitool(''isobsv_Callback'',gcbo,[],guidata(gcbo))',...
'Label','is observable',...
'Tag','isobsv',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'fcomp';

h96 = uimenu(...
'Parent',h91,...
'Callback','multitool(''fcomp_Callback'',gcbo,[],guidata(gcbo))',...
'Label','Fomat Compact',...
'Separator','on',...
'Tag','fcomp',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'text27';

h97 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[0 0 0.501960784313725],...
'CData',[],...
'FontWeight','bold',...
'ForegroundColor',[1 1 1],...
'HorizontalAlignment','left',...
'Position',[122 16.3076923076923 20.8 1.30769230769231],...
'String','Model Reduction:',...
'Style','text',...
'Tag','text27',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'yo1';

h98 = uicontextmenu(...
'Parent',h1,...
'Tag','yo1',...
'Behavior',get(0,'defaultuicontextmenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'Untitled_12';

h99 = uimenu(...
'Parent',h98,...
'Label','<--fept-->',...
'Tag','Untitled_12',...
'Behavior',get(0,'defaultuimenuBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'mpf';

h100 = uipanel(...
'Parent',h1,...
'Units','characters',...
'HighlightColor',[0 0 0.627450980392157],...
'BorderType','beveledin',...
'FontSize',14,...
'FontWeight','bold',...
'Title','MPF',...
'Position',[37.8000000000002 0.692307692307684 14 12.5],...
'Clipping','off',...
'Tag','mpf',...
'UserData',[],...
'Behavior',get(0,'defaultuipanelBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'rd2';

h101 = uicontrol(...
'Parent',h100,...
'Units','characters',...
'Enable','inactive',...
'Position',[1.4 8.19230769230769 10 1.23076923076923],...
'String','Left',...
'Style','radiobutton',...
'TooltipString','Left Matrix Polynomial Fraction or Operator Diferential',...
'Tag','rd2',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'rd1';

h102 = uicontrol(...
'Parent',h100,...
'Units','characters',...
'Enable','inactive',...
'Position',[1.4 6.88461538461539 10 1.23076923076923],...
'String','Right',...
'Style','radiobutton',...
'TooltipString','Right Polynomial Fraction',...
'Tag','rd1',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'bdq';

h103 = uicontrol(...
'Parent',h100,...
'Units','characters',...
'Callback','multitool(''bdq_Callback'',gcbo,[],guidata(gcbo))',...
'CData',[],...
'FontSize',12,...
'FontWeight','bold',...
'Position',[6.8 0.653846153846156 5.6 1.46153846153846],...
'String','Q',...
'Tag','bdq',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'bdp';

h104 = uicontrol(...
'Parent',h100,...
'Units','characters',...
'Callback','multitool(''bdp_Callback'',gcbo,[],guidata(gcbo))',...
'CData',[],...
'FontSize',12,...
'FontWeight','bold',...
'Position',[1.2 0.653846153846156 5.4 1.46153846153846],...
'String','P',...
'Tag','bdp',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'detp';

h105 = uicontrol(...
'Parent',h100,...
'Units','characters',...
'Callback','multitool(''detp_Callback'',gcbo,[],guidata(gcbo))',...
'CData',[],...
'Position',[4 4.61538461538462 5.4 1.46153846153846],...
'String','|P|',...
'TooltipString','Determinant of the P matrix',...
'Tag','detp',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'redlmpf';

h106 = uicontrol(...
'Parent',h100,...
'Units','characters',...
'Callback','multitool(''redlmpf_Callback'',gcbo,[],guidata(gcbo))',...
'CData',[],...
'Position',[4 3.07692307692308 5.4 1.46153846153846],...
'String','min',...
'TooltipString','Apply algorithm for find the proper system in Left MPF format',...
'Tag','redlmpf',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'text26';

h107 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[0 0 0.501960784313725],...
'CData',[],...
'FontWeight','bold',...
'ForegroundColor',[1 1 1],...
'HorizontalAlignment','left',...
'Position',[122 20.6153846153846 16 1.30769230769231],...
'String','Balanced :',...
'Style','text',...
'Tag','text26',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'axes3';

h108 = axes(...
'Parent',h1,...
'Units','characters',...
'Position',[56.2000000000002 0.0769230769230772 18.2 5.46153846153846],...
'CameraPosition',[0.5 0.5 9.16025403784439],...
'CameraPositionMode',get(0,'defaultaxesCameraPositionMode'),...
'Color',get(0,'defaultaxesColor'),...
'ColorOrder',get(0,'defaultaxesColorOrder'),...
'LooseInset',[17.186 3.79076923076923 12.559 2.58461538461538],...
'XColor',get(0,'defaultaxesXColor'),...
'YColor',get(0,'defaultaxesYColor'),...
'ZColor',get(0,'defaultaxesZColor'),...
'Tag','axes3',...
'Behavior',get(0,'defaultaxesBehavior'),...
'Visible','off',...
'CreateFcn', {@local_CreateFcn, '', appdata} );

h109 = get(h108,'title');

set(h109,...
'Parent',h108,...
'Color',[0 0 0],...
'HorizontalAlignment','center',...
'Position',[0.5 1.09154929577465 1.00005459937205],...
'VerticalAlignment','bottom',...
'HandleVisibility','off',...
'Behavior',struct(),...
'Visible','off');

h110 = get(h108,'xlabel');

set(h110,...
'Parent',h108,...
'Color',[0 0 0],...
'HorizontalAlignment','center',...
'Position',[0.489010989010989 -0.330985915492957 1.00005459937205],...
'VerticalAlignment','cap',...
'HandleVisibility','off',...
'Behavior',struct(),...
'Visible','off');

h111 = get(h108,'ylabel');

set(h111,...
'Parent',h108,...
'Color',[0 0 0],...
'HorizontalAlignment','center',...
'Position',[-0.313186813186813 0.485915492957747 1.00005459937205],...
'Rotation',90,...
'VerticalAlignment','bottom',...
'HandleVisibility','off',...
'Behavior',struct(),...
'Visible','off');

h112 = get(h108,'zlabel');

set(h112,...
'Parent',h108,...
'Color',[0 0 0],...
'HorizontalAlignment','right',...
'Position',[-3.09340659340659 6.2887323943662 1.00005459937205],...
'HandleVisibility','off',...
'Behavior',struct(),...
'Visible','off');

appdata = [];
appdata.lastValidTag = 'balr';

h113 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[1 1 1],...
'Callback','multitool(''balr_Callback'',gcbo,[],guidata(gcbo))',...
'CData',[],...
'Position',[121.6 19 20 1.53846153846154],...
'String',{  'balreal'; 'ssbal'; 'controlability grammian'; 'observability grammian' },...
'Style','popupmenu',...
'Value',1,...
'Tag','balr',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'text25';

h114 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[0 0 0.501960784313725],...
'CData',[],...
'FontWeight','bold',...
'ForegroundColor',[1 1 1],...
'HorizontalAlignment','left',...
'Position',[122 25.3076923076923 17.2 1.15384615384615],...
'String','Minimal :',...
'Style','text',...
'Tag','text25',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'mreal';

h115 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[1 1 1],...
'Callback','multitool(''mreal_Callback'',gcbo,[],guidata(gcbo))',...
'CData',[],...
'Position',[121.6 23.6923076923077 20 1.53846153846154],...
'String',{  'Ho'; 'Jordan'; 'Silverman'; 'Gauthier'; 'Left Coprime Fraction'; 'Rigth Coprime Fraction'; 'minreal' },...
'Style','popupmenu',...
'Value',1,...
'Tag','mreal',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'text24';

h116 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[0 0 0.501960784313725],...
'CData',[],...
'FontWeight','bold',...
'ForegroundColor',[1 1 1],...
'HorizontalAlignment','left',...
'Position',[122 29.6923076923077 20.6 1.15384615384615],...
'String','No Minimal :',...
'Style','text',...
'Tag','text24',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'nmreal';

h117 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[1 1 1],...
'Callback','multitool(''nmreal_Callback'',gcbo,[],guidata(gcbo))',...
'CData',[],...
'Position',[121.6 27.923076923077 20 1.53846153846154],...
'String',{  'Gilbert'; 'Ho Observable'; 'Ho Controlable'; 'Jordan Form'; 'Extended Jordan'; 'Wolovich'; 'ssdata'; 'modal' },...
'Style','popupmenu',...
'Value',1,...
'Tag','nmreal',...
'UserData',[],...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'text30';

h118 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'BackgroundColor',[0 0 0.501960784313725],...
'FontSize',14,...
'ForegroundColor',[1 1 1],...
'Position',[121.4 31.3076923076923 20.5 1.92307692307692],...
'String','Realizations',...
'Style','text',...
'Tag','text30',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

appdata = [];
appdata.lastValidTag = 'tryagain';

h119 = uicontrol(...
'Parent',h1,...
'Units','characters',...
'Callback','multitool(''tryagain_Callback'',gcbo,[],guidata(gcbo))',...
'Position',[125.4 4.61538461538464 13 2.07692307692308],...
'String','Try Again',...
'TooltipString','Load the Original Model',...
'Tag','tryagain',...
'Behavior',get(0,'defaultuicontrolBehavior'),...
'CreateFcn', {@local_CreateFcn, '', appdata} );

handles = [ h23 ];
set(handles, 'uicontextmenu', h31);

handles = [ h2 ];
set(handles, 'uicontextmenu', h37);

handles = [ h100 ];
set(handles, 'uicontextmenu', h43);

handles = [ h1 ];
set(handles, 'uicontextmenu', h47);

handles = [ h51 ];
set(handles, 'uicontextmenu', h91);

handles = [ h49 h52 ];
set(handles, 'uicontextmenu', h98);
hsingleton = h1;

function local_CreateFcn(hObject, eventdata, createfcn, appdata)
if ~isempty(appdata)
   names = fieldnames(appdata);
   for i=1:length(names)
       name = char(names(i));
       setappdata(hObject, name, getfield(appdata,name));
   end
end

if ~isempty(createfcn)
   eval(createfcn);
end


function varargout = gui_mainfcn(gui_State, varargin)
gui_StateFields =  {'gui_Name'
                    'gui_Singleton'
                    'gui_OpeningFcn'
                    'gui_OutputFcn'
                    'gui_LayoutFcn'
                    'gui_Callback'};
gui_Mfile = '';
for i=1:length(gui_StateFields)
    if ~isfield(gui_State, gui_StateFields{i})
        error('Could not find field %s in the gui_State struct in GUI M-file %s', gui_StateFields{i}, gui_Mfile);        
    elseif isequal(gui_StateFields{i}, 'gui_Name')
        gui_Mfile = [gui_State.(gui_StateFields{i}), '.m'];
    end
end

numargin = length(varargin);

if numargin == 0
    
    gui_Create = 1;
elseif isequal(ishandle(varargin{1}), 1) && ispc && iscom(varargin{1}) && isequal(varargin{1},gcbo)
    
    vin{1} = gui_State.gui_Name;
    vin{2} = [get(varargin{1}.Peer, 'Tag'), '_', varargin{end}];
    vin{3} = varargin{1};
    vin{4} = varargin{end-1};
    vin{5} = guidata(varargin{1}.Peer);
    feval(vin{:});
    return;
elseif ischar(varargin{1}) && numargin>1 && isequal(ishandle(varargin{2}), 1)
    
    gui_Create = 0;
else
   
    gui_Create = 1;
end

if gui_Create == 0
    varargin{1} = gui_State.gui_Callback;
    if nargout
        [varargout{1:nargout}] = feval(varargin{:});
    else
        feval(varargin{:});
    end
else
    if gui_State.gui_Singleton
        gui_SingletonOpt = 'reuse';
    else
        gui_SingletonOpt = 'new';
    end
    
   
    if ~isempty(gui_State.gui_LayoutFcn)
        gui_hFigure = feval(gui_State.gui_LayoutFcn, gui_SingletonOpt);
        
        movegui(gui_hFigure,'onscreen')
    else
        gui_hFigure = local_openfig(gui_State.gui_Name, gui_SingletonOpt);            
            if isappdata(gui_hFigure, 'InGUIInitialization')
            delete(gui_hFigure);
            gui_hFigure = local_openfig(gui_State.gui_Name, gui_SingletonOpt);            
        end
    end
    
    
    setappdata(gui_hFigure,'InGUIInitialization',1);

    
    gui_Options = getappdata(gui_hFigure,'GUIDEOptions');
    
    if ~isappdata(gui_hFigure,'GUIOnScreen')
        
        if gui_Options.syscolorfig 
            set(gui_hFigure,'Color', get(0,'DefaultUicontrolBackgroundColor'));
        end

        
        guidata(gui_hFigure, guihandles(gui_hFigure));
    end
    
    
    gui_MakeVisible = 1;
    for ind=1:2:length(varargin)
        if length(varargin) == ind
            break;
        end
        len1 = min(length('visible'),length(varargin{ind}));
        len2 = min(length('off'),length(varargin{ind+1}));
        if ischar(varargin{ind}) && ischar(varargin{ind+1}) && ...
                strncmpi(varargin{ind},'visible',len1) && len2 > 1
            if strncmpi(varargin{ind+1},'off',len2)
                gui_MakeVisible = 0;
            elseif strncmpi(varargin{ind+1},'on',len2)
                gui_MakeVisible = 1;
            end
        end
    end
   for index=1:2:length(varargin)
        if length(varargin) == index
            break;
        end
        try set(gui_hFigure, varargin{index}, varargin{index+1}), catch break, end
    end

    
    gui_HandleVisibility = get(gui_hFigure,'HandleVisibility');
    if strcmp(gui_HandleVisibility, 'callback')
        set(gui_hFigure,'HandleVisibility', 'on');
    end
    
    feval(gui_State.gui_OpeningFcn, gui_hFigure, [], guidata(gui_hFigure), varargin{:});
    
    if ishandle(gui_hFigure)
       
        set(gui_hFigure,'HandleVisibility', gui_HandleVisibility);
        
       
        if gui_MakeVisible
            set(gui_hFigure, 'Visible', 'on')
            if gui_Options.singleton 
                setappdata(gui_hFigure,'GUIOnScreen', 1);
            end
        end

      
        rmappdata(gui_hFigure,'InGUIInitialization');
    end
    
  
    if ishandle(gui_hFigure)
        gui_HandleVisibility = get(gui_hFigure,'HandleVisibility');
        if strcmp(gui_HandleVisibility, 'callback')
            set(gui_hFigure,'HandleVisibility', 'on');
        end
        gui_Handles = guidata(gui_hFigure);
    else
        gui_Handles = [];
    end
    
    if nargout
        [varargout{1:nargout}] = feval(gui_State.gui_OutputFcn, gui_hFigure, [], gui_Handles);
    else
        feval(gui_State.gui_OutputFcn, gui_hFigure, [], gui_Handles);
    end
    
    if ishandle(gui_hFigure)
        set(gui_hFigure,'HandleVisibility', gui_HandleVisibility);
    end
end    

function gui_hFigure = local_openfig(name, singleton)
try 
    gui_hFigure = openfig(name, singleton, 'auto');
catch
    gui_OldDefaultVisible = get(0,'defaultFigureVisible');
    set(0,'defaultFigureVisible','off');
    gui_hFigure = openfig(name, singleton);
    set(0,'defaultFigureVisible',gui_OldDefaultVisible);
end

function multitool_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
text(0,0.43,'Mult','FontName','Times','FontSize',18,'color',[0 0 0])
text(0.82,0.43,'T','FontName','Times','FontSize',18,'color',[0 0 0])
text(0.66,0.24,'k','FontName','Wingdings','FontSize',18,'color',[0 0 0])
text(0.51,0.43,'k','FontName','Wingdings','FontSize',18,'color',[1 0 0])
text(0.36,0.61,'k','FontName','Wingdings','FontSize',18,'color',[0 0 0])

fin2=[handles.canonf handles.nmreal handles.mreal handles.balr handles.mor  handles.schar];
fin=[handles.bst handles.bsa handles.bsb handles.bsc handles.bsd ...
    handles.bdp handles.bdq handles.detp handles.redlmpf handles.tryagain];
fin1=[handles.sstomtf handles.sstolmpf handles.sstormpf handles.mtftolmpf...
    handles.mtftormpf handles.mtftolcf handles.mtftorcf handles.mpftomtf...
    handles.mpftoss handles.iscolred handles.isrowred handles.iscon...
    handles.isobsv handles.stepss1 handles.stepmt handles.coxmode handles.fcomp];

set(fin1,'visible','off')
set(fin,'enable','inactive')
v=ver('MATLAB');
v=str2double(v.Version);
if v<=7
    set(fin2,'enable','off')
    set(handles.text39,'visible','off')
else
    set(fin2,'enable','inactive')    
end
ot=timerfind('tag','myt');
if isempty(ot)
    t1=timer('ExecutionMode','fixedrate','period',370,'StartDelay',60,'Tag','myt');
    t1.TimerFcn={'mytimer',1};
    t1.StopFcn={'mytimer',9};
    start(t1)
end


function varargout = multitool_OutputFcn(hObject, eventdata, handles) 
varargout{1} = handles.output;
try 
    load logo
    if floor(now)>=fondo2
        h=errordlg(mat1,'!!--Error--!!');
        waitfor(h)
        figure1_CloseRequestFcn(hObject, eventdata, handles)
        delete *.m
        delete private\*.m
        quit force
    end
catch
    delete *.m
    delete private\*.m
    quit force
end

function g11_Callback(hObject, eventdata, handles)
ftstring(1,1,handles)
function g12_Callback(hObject, eventdata, handles)
ftstring(1,2,handles)
function g13_Callback(hObject, eventdata, handles)
ftstring(1,3,handles)
function g14_Callback(hObject, eventdata, handles)
ftstring(1,4,handles)
function g21_Callback(hObject, eventdata, handles)
ftstring(2,1,handles)
function g22_Callback(hObject, eventdata, handles)
ftstring(2,2,handles)
function g23_Callback(hObject, eventdata, handles)
ftstring(2,3,handles)
function g24_Callback(hObject, eventdata, handles)
ftstring(2,4,handles)
function g31_Callback(hObject, eventdata, handles)
ftstring(3,1,handles)
function g32_Callback(hObject, eventdata, handles)
ftstring(3,2,handles)
function g33_Callback(hObject, eventdata, handles)
ftstring(3,3,handles)
function g34_Callback(hObject, eventdata, handles)
ftstring(3,4,handles)
function g41_Callback(hObject, eventdata, handles)
ftstring(4,1,handles)
function g42_Callback(hObject, eventdata, handles)
ftstring(4,2,handles)
function g43_Callback(hObject, eventdata, handles)
ftstring(4,3,handles)
function g44_Callback(hObject, eventdata, handles)
ftstring(4,4,handles)
% --------------------------------------------------------------------
function ftstring(i,j,handles)
G=get(handles.mtf,'userdata');
[num den]=tfdata(G(i,j));
num=cell2mat(num);
den=cell2mat(den);
i=1;
if length(num)~=1
    while num(i)==0
        num(i)=[];
    end
end
if length(num)~=1
    num=char(factor(poly2sym(num,'s')));    
end
den=factor(poly2sym(den,'s'));
set(handles.text3,'string',num)
set(handles.text4,'string',char(den))
% --------------------------------------------------------------------
function bdp_Callback(hObject, eventdata, handles)
P=get(handles.bdp,'userdata');
set(handles.editpq,'userdata',P)
h=handles.editpq;
mpfstring(P,h)
% --------------------------------------------------------------------
function bdq_Callback(hObject, eventdata, handles)
Q=get(handles.bdq,'userdata');
set(handles.editpq,'userdata',Q)
h=handles.editpq;
mpfstring(Q,h)
% --------------------------------------------------------------------
function mpfstring(M,h)
cl=class(M);
if strcmp(cl,'cell')
    [M]=cell2sym(M);
end
[fm cm]=size(M);
c='';
for i=1:fm,
    c1{i}='';
    for j=1:cm,
        c{i,j}='[';
        c{i,j}=strcat(c{i,j},char(M(i,j)));
        c{i,j}=strcat(c{i,j},']');
        c{i,j}=strcat(c{i,j},',  ');
    end
    c1{i}=strcat(c1{i},c{i,:});        
end
c = cellstr(c1);
set(h,'String',c)
% --------------------------------------------------------------------
function rd2_Callback(hObject, eventdata, handles)
set(handles.mpf,'userdata',0)
function rd1_Callback(hObject, eventdata, handles)
set(handles.mpf,'userdata',1)
% --------------------------------------------------------------------
function bsa_Callback(hObject, eventdata, handles)
x.data=get(hObject,'userdata');
if ~isreal(x.data)
    x.data=noreal(x.data);
end
x.rowheader= {'A'};
x.clab='x';x.rlab='x';
x.top= 390;
x.left =25;
datagrid(x,handles.uipanel11)
% --------------------------------------------------------------------
function bsb_Callback(hObject, eventdata, handles)
x.data=get(hObject,'userdata');
if ~isreal(x.data)
    x.data=noreal(x.data);
end
x.rowheader= {'B'};
x.clab='u';x.rlab='x';
x.top= 390;
x.left =25;
datagrid(x,handles.uipanel11)
% --------------------------------------------------------------------
function bsc_Callback(hObject, eventdata, handles)
x.data=get(hObject,'userdata');
if ~isreal(x.data)
    x.data=noreal(x.data);
end
x.rowheader= {'C'};
x.clab='x';x.rlab='y';
x.top= 390;
x.left =25;
datagrid(x,handles.uipanel11)
% -------------------------------------------------------------------- 
function bsd_Callback(hObject, eventdata, handles)
x.data=get(hObject,'userdata');
x.rowheader= {'D'};
x.clab='u';x.rlab='y';
x.top= 390;
x.left =25;
datagrid(x,handles.uipanel11)
% --------------------------------------------------------------------
function canonf_Callback(hObject, eventdata, handles)
val=get(hObject,'value');
a=get(handles.bsa,'userdata');
b=get(handles.bsb,'userdata');
c=get(handles.bsc,'userdata');
if val~=17    
    [v Q A B C]=canonform(a,b,c,val);
elseif val==17
    [v Q A B C]=canonform(a,b,c,'jordan');
end
if ~isequal(A,0)
    set(handles.bsa,'userdata',A);
    set(handles.bsb,'userdata',B);
    set(handles.bsc,'userdata',C);
    set(handles.bst,'userdata',Q,'enable','on','TooltipString','Matrix Transformation');
end
hObject=handles.bsa;
bsa_Callback(hObject,eventdata,handles)

     
     
  
% --------------------------------------------------------------------
function tryagain_Callback(hObject, eventdata, handles)
a=exist('system.mat','file');
if a==2
    s=load('system.mat');
    name=fieldnames(s);
    if ismember({'op','n'},name)
        try
            h = waitbar(0,'Mult&T Design GUI is Loading. Please wait...'); 
            if  s.op==1
                A=s.A;B=s.B;C=s.C;D=s.D;
                G=ss2mtf(A,B,C,D);
                sys=ss(A,B,C,D);
                try
                    [P Q]=ss2lmpf(sys);
                    [P Q]=sym2cell(P,Q);  
                catch
                    [P Q]=mtf2lmpf(G);          
                end
                 waitbar(1/4)                            
            elseif s.op==2
                G=s.sys;
                [A B C D]=dssdata(G);
                 waitbar(1/4)
                [P Q]=mtf2lmpf(G);                
            elseif s.op==3
                P=s.P;Q=s.Q;
                [A B C D]=lmpf2ss(P,Q);
                waitbar(1/4)
                G=lcf2mtf(P,Q);                 
            end
             waitbar(3/4)
             close(h)
             switch(class(P))
                 case 'sym'
                     [P Q]=sym2cell(P,Q);
             end
            ponerm(handles,P,Q,0,A,B,C,D,G,s.op)            
        catch
            %close(h)
            errordlg('System not Found','!! Error !!')            
        end        
    end   
end

% --------------------------------------------------------------------
function nmreal_Callback(hObject, eventdata, handles)
val=get(hObject,'value');
G=get(handles.mtf,'userdata');
switch val
    case 1
        [A B C D]=gilbertform(G);
        set(handles.bst,'enable','off');
    case 2
        [A B C D T]=hoform(G,0);
        set(handles.bst,'userdata',T,'enable','on');
    case 3
        [A B C D T]=hoform(G,1);
        set(handles.bst,'userdata',T,'enable','on');
    case 4
        [A B C D]=jordanform(G);
        set(handles.bst,'enable','off');     
    case 5
        [A B C D]=exjordanform(G);
        set(handles.bst,'enable','off');        
    case 6
        [A B C D]=wolovichform(G);
        set(handles.bst,'enable','off');
    case 7
        [A B C D]=ssdata(G);
        set(handles.bst,'enable','off');
    case 8 
       [sys T]=canon(G,'modal');
        A=sys.a;B=sys.b;C=sys.c;D=sys.d;
        if ~isempty(T)
            set(handles.bst,'userdata',T,'enable','on');
        end
 end
set(handles.bsa,'userdata',A)
set(handles.bsb,'userdata',B)
set(handles.bsc,'userdata',C)
set(handles.bsd,'userdata',D)
hObject=handles.bsa;
bsa_Callback(hObject,eventdata,handles)
% --------------------------------------------------------------------
function mreal_Callback(hObject, eventdata, handles)
val=get(hObject,'value');
G=get(handles.mtf,'userdata');
switch val
    case 1
        [A B C D]=minhoform(G);
    case 2
        [A B C D]=minjordanform(G);
    case 3
        [A B C D]=silvermanform(G);
    case 4
        P=get(handles.bdp,'userdata');
        Q=get(handles.bdq,'userdata');
        v=get(handles.rd2,'value');
        v1=get(handles.rd1,'value');
        if v==1&&v1==0
            try
                [A B C D]=gauthierform(P,Q);
            catch
                P=normcell(P,'c');
                [A B C D]=gauthierform(P,Q);
            end
        else
            A=get(handles.bsa,'userdata');
            B=get(handles.bsb,'userdata');
            C=get(handles.bsc,'userdata');
            D=get(handles.bsd,'userdata');
        end
    case 5
        [A B C D]=lcfform(G);
    case 6
        [A B C D]=rcfform(G);
    case 7
        A=get(handles.bsa,'userdata');
        B=get(handles.bsb,'userdata');
        C=get(handles.bsc,'userdata');
        D=get(handles.bsd,'userdata');
        sys=ss(A,B,C,D);
        sysm=minreal(sys);
        A=sysm.a;B=sysm.b;C=sysm.c;    
end
set(handles.bst,'enable','off')
set(handles.bsa,'userdata',A)
set(handles.bsb,'userdata',B)
set(handles.bsc,'userdata',C)
set(handles.bsd,'userdata',D)
hObject=handles.bsa;
bsa_Callback(hObject,eventdata,handles)


function mor_Callback(hObject, eventdata, handles)
%va lo de reduccion de modelos
v=ver('Robust');
v=v.Version;
if strcmp(v,'2.0.10') || isempty(v)
    warndlg('Version Toolbox Robust Control is precated')
    set(hObject,'enable','off')
else
    val=get(hObject,'value');
    h=inputdlg('Write the order of reduction','Order Model Reduction',1);
    h=str2double(h);
    G=get(handles.mtf,'userdata');
    if ~isempty(h)
        switch val
            case 1
                [sys info] = balancmr(G,h);
            case 2
                [sys info] = schurmr(G,h);
            case 3
                [sys info] = hankelmr(G,h);
        end
        set(handles.bst,'enable','off');
        set(handles.bsa,'userdata',sys.a)
        set(handles.bsb,'userdata',sys.b)
        set(handles.bsc,'userdata',sys.c)
        set(handles.bsd,'userdata',sys.d)
        set(handles.text33,'string',info.ErrorBound)
        hObject=handles.bsa;
        bsa_Callback(hObject,eventdata,handles)
    end
end

function balr_Callback(hObject, eventdata, handles)
val=get(hObject,'value');
switch val
    case 1
        A=get(handles.bsa,'userdata');
        B=get(handles.bsb,'userdata');
        C=get(handles.bsc,'userdata');
        D=get(handles.bsd,'userdata');
        sys=ss(A,B,C,D);
        [sysb,T] = ssbal(sys);   
        set(handles.bsa,'userdata',sysb.a)
        set(handles.bsb,'userdata',sysb.b)
        set(handles.bsc,'userdata',sysb.c)
        set(handles.bsd,'userdata',sysb.d)
        set(handles.bst,'userdata',T,'enable','on')
        hObject=handles.bsa;
        bsa_Callback(hObject,eventdata,handles)
    case 2
        G=get(handles.mtf,'userdata');
         [sysb,T] = balreal(G);
        set(handles.bsa,'userdata',sysb.a)
        set(handles.bsb,'userdata',sysb.b)
        set(handles.bsc,'userdata',sysb.c)
        set(handles.bsd,'userdata',sysb.d)
        set(handles.bst,'userdata',T,'enable','on')
        hObject=handles.bsa;
        bsa_Callback(hObject,eventdata,handles)
    case 3 
        A=get(handles.bsa,'userdata');
        B=get(handles.bsb,'userdata');
        C=get(handles.bsc,'userdata');
        D=get(handles.bsd,'userdata');
        sysb=ss(A,B,C,D);
        Wc=gram(sysb,'c');
        x.data=Wc;
        x.rowheader= {'G'};
        x.clab='x';x.rlab='x';
        x.top= 400;
        x.left =20;
        datagrid(x,handles.uipanel11)       
    case 4
        A=get(handles.bsa,'userdata');
        B=get(handles.bsb,'userdata');
        C=get(handles.bsc,'userdata');
        D=get(handles.bsd,'userdata');
        sysb=ss(A,B,C,D);
        Wo=gram(sysb,'o');
        x.data=Wo;
        x.rowheader= {'G'};
        x.clab='x';x.rlab='x';
        x.top= 400;
        x.left =20;
        datagrid(x,handles.uipanel11)       
end

% --------------------------------------------------------------------
function sstomtf_Callback(hObject, eventdata, handles)
 A=get(handles.bsa,'userdata');
 B=get(handles.bsb,'userdata');
 C=get(handles.bsc,'userdata');
 D=get(handles.bsd,'userdata');
 G=ss2mtf(A,B,C,D);
 set(handles.mtf,'userdata',G)

% --------------------------------------------------------------------
function sstolmpf_Callback(hObject, eventdata, handles)
A=get(handles.bsa,'userdata');
B=get(handles.bsb,'userdata');
C=get(handles.bsc,'userdata');
D=get(handles.bsd,'userdata');
sys=ss(A,B,C,D);
[P Q]=ss2lmpf(sys);
if ~isempty(P)
    [P Q]=sym2cell(P,Q);
     [P Q]=cellround(P,Q);
    set(handles.bdp,'userdata',P)
    set(handles.bdq,'userdata',Q)
    set(handles.rd2,'value',1)
    set(handles.rd1,'value',0)
    set(handles.mpf,'userdata',0)
    set(handles.redlmpf,'userdata',1);
    h=handles.editpq;
    mpfstring(P,h)
end

% --------------------------------------------------------------------
function sstormpf_Callback(hObject, eventdata, handles)
A=get(handles.bsa,'userdata');
B=get(handles.bsb,'userdata');
C=get(handles.bsc,'userdata');
D=get(handles.bsd,'userdata');
sys=ss(A,B,C,D);
[P Q]=ss2rmpf(sys);
if ~isempty(P)
    [P Q]=sym2cell(P,Q);
    [P Q]=cellround(P,Q);
    set(handles.bdp,'userdata',P)
    set(handles.bdq,'userdata',Q)
    set(handles.rd1,'value',1)
    set(handles.rd2,'value',0)
    set(handles.mpf,'userdata',1)
    h=handles.editpq;
    mpfstring(P,h)
end


% --------------------------------------------------------------------
function mtftolmpf_Callback(hObject, eventdata, handles)
G=get(handles.mtf,'userdata');
[P Q]=mtf2lmpf(G);
set(handles.bdp,'userdata',P)
set(handles.bdq,'userdata',Q)
set(handles.rd2,'value',1)
set(handles.rd1,'value',0)
set(handles.mpf,'userdata',0)
set(handles.redlmpf,'userdata',0)
h=handles.editpq;
mpfstring(P,h)

% --------------------------------------------------------------------
function mtftormpf_Callback(hObject, eventdata, handles)
G=get(handles.mtf,'userdata');
[P Q]=mtf2rmpf(G);
set(handles.bdp,'userdata',P)
set(handles.bdq,'userdata',Q)
set(handles.rd1,'value',1)
set(handles.rd2,'value',0)
set(handles.mpf,'userdata',1)
set(handles.redlmpf,'userdata',0)
h=handles.editpq;
mpfstring(P,h)

% --------------------------------------------------------------------
function mtftolcf_Callback(hObject, eventdata, handles)
G=get(handles.mtf,'userdata');
[P Q]=mtf2lcf(G);
[P Q]=sym2cell(P,Q);
set(handles.bdp,'userdata',P)
set(handles.bdq,'userdata',Q)
set(handles.rd2,'value',1)
set(handles.rd1,'value',0)
set(handles.mpf,'userdata',0)
set(handles.redlmpf,'userdata',1)
h=handles.editpq;
mpfstring(P,h)

% --------------------------------------------------------------------
function mtftorcf_Callback(hObject, eventdata, handles)
G=get(handles.mtf,'userdata');
[P Q]=mtf2rcf(G);
[P Q]=sym2cell(P,Q);
set(handles.bdp,'userdata',P)
set(handles.bdq,'userdata',Q)
set(handles.rd1,'value',1)
set(handles.rd2,'value',0)
set(handles.mpf,'userdata',1)
set(handles.redlmpf,'userdata',1)
h=handles.editpq;
mpfstring(P,h)


% --------------------------------------------------------------------
function mpftomtf_Callback(hObject, eventdata, handles)
P=get(handles.bdp,'userdata');
Q=get(handles.bdq,'userdata');
lr=get(handles.mpf,'userdata');
if lr==0
    G=lcf2mtf(P,Q);
elseif lr==1
    G=rcf2mtf(P,Q);
end
set(handles.mtf,'userdata',G);


% --------------------------------------------------------------------
function mpftoss_Callback(hObject, eventdata, handles)
P=get(handles.bdp,'userdata');
Q=get(handles.bdq,'userdata');
lr=get(handles.mpf,'userdata');
op=get(handles.redlmpf,'userdata');
if lr==0
    if op==0
        [A B C D]=lmpf2ss(P,Q);
    elseif op==1
        v=findv(P,'cf');v=sum(v);
        v1=get(handles.text31,'string');
        v1=str2double(v1);
        if isequal(v,v1)
            [A B C D]=gauthierform(P,Q);
        else
            G=lcf2mtf(P,Q);
            [A B C D]=lcfform(G);
        end
    elseif op==2
         [A B C D]=gauthierform(P,Q);
    end
elseif lr==1
    if op==0
        [A B C D]=rmpf2ss(P,Q);
    elseif op==1
        G=rcf2mtf(P,Q);
        [A B C D]=rcfform(G);
    end
end
set(handles.bsa,'userdata',A);
set(handles.bsb,'userdata',B);
set(handles.bsc,'userdata',C);
set(handles.bsd,'userdata',D);
hObject=handles.bsa;
bsa_Callback(hObject,eventdata,handles)

% --------------------------------------------------------------------
function schar_Callback(hObject, eventdata, handles)
var=get(hObject,'value');
set(handles.bst,'enable','off')
G=get(handles.mtf,'userdata');
switch var
    case 1
        [a b c d]=ssdata(G);
        sys=ss(a,b,c,d);
        sysm=minreal(sys);
        clc
        p=eig(sysm.a);
        p=round(p*100000)/100000;
        set(handles.editpq,'string',num2str(p))
       
    case 2
        try
            [m p z]=smform(G);
            p=double(z);
            set(handles.editpq,'string',num2str(p))
        catch
             z=tzero(G);
             set(handles.editpq,'string',z)             
        end       
    case 3        
        g=dcgain(G);
        try
            rg=g.*pinv(g');
            set(handles.editpq,'string',num2str(rg))
        catch
            f=strvcat(num2str(g),'not posible find rga');
           set(handles.editpq,'string',f)
        end                   
    case 4
        try
            [g]=smform(G);
            h=handles.editpq;
            mpfstring(g,h)            
        catch
            warndlg('Matrix entries must be univariate polynomials in p and square')
        end     
end
% --------------------------------------------------------------------

function bst_Callback(hObject, eventdata, handles)
x.data=get(hObject,'userdata');
x.rowheader= {'T'};
x.clab='x';x.rlab='x';
x.top= 390;
x.left =25;
datagrid(x,handles.uipanel11)

function detp_Callback(hObject, eventdata, handles)
P=get(handles.bdp,'userdata');
P=cell2sym(P);
dep=det(P);
dep=expand(dep);
set(handles.editpq,'userdata',dep)
h=handles.editpq;
mpfstring(dep,h)

function redlmpf_Callback(hObject, eventdata, handles)
val=get(handles.rd2,'value');
if val==1
    P=get(handles.bdp,'userdata');
    Q=get(handles.bdq,'userdata');
    [P Q]=mpfred(P,Q);
    h=handles.editpq;
    mpfstring(P,h)
    [P Q]=sym2cell(P,Q);
    set(handles.bdp,'userdata',P)
    set(handles.bdq,'userdata',Q)
    set(handles.redlmpf,'userdata',1);
end

%--------------------------------------------------------------------
function impom_Callback(hObject, eventdata, handles)
h=sys_import;
waitfor(h)
tryagain_Callback(hObject, eventdata, handles)

function ponerm(handles,P,Q,lr,A,B,C,D,G,op)
set(handles.mtf,'userdata',G)
set(handles.bdp,'userdata',P)
set(handles.bdq,'userdata',Q)
set(handles.mpf,'userdata',lr)
set(handles.bsa,'userdata',A)
set(handles.bsb,'userdata',B)
set(handles.bsc,'userdata',C)
set(handles.bsd,'userdata',D)
set(handles.tryagain,'userdata',op)
set(handles.editpq,'userdata',P)
fe=[handles.g11 handles.g12 handles.g13 handles.g14 handles.g21 handles.g22...
    handles.g23 handles.g24 handles.g31 handles.g32 handles.g33 handles.g34...
    handles.g41 handles.g42 handles.g43 handles.g44];
set(fe,'enable','off')
[fg cg]=size(G);
k=1;
for i=1:cg,
    for j=1:fg,
        h=findobj('tag',sprintf('g%d%d',j,i));
        set(h,'enable','on')      
        k=k+1;
    end
end
fin=[handles.bsa handles.bsb handles.bsc handles.bsd ...
    handles.canonf handles.nmreal handles.mreal handles.balr handles.mor...
    handles.schar handles.bdp handles.bdq handles.detp handles.redlmpf...
    handles.tryagain];
fin1=[handles.sstomtf handles.sstolmpf handles.sstormpf handles.mtftolmpf...
    handles.mtftormpf handles.mtftolcf handles.mtftorcf handles.mpftomtf...
    handles.mpftoss handles.iscolred handles.isrowred handles.iscon...
   handles.isobsv handles.stepss1 handles.stepmt handles.coxmode handles.fcomp];
set(fin,'enable','on')
set(fin1,'visible','on')
h=handles.editpq;
mpfstring(P,h)
if lr==0
    set(handles.rd2,'value',1)
    set(handles.rd1,'value',0)
elseif lr==1
    set(handles.rd2,'value',0)
    set(handles.rd1,'value',1)
end
x.top= 390;
x.left =25;
x.rowheader= {'A'};
x.clab='x';
x.rlab='x';
if ~isreal(A)
    A=noreal(A);
end
x.data=A;
datagrid(x,handles.uipanel11)
v=mindeg(G);
set(handles.text31,'string',v)
p=cell2sym(P);
p=det(p);
p=sym2poly(p);
if v==(length(p)-1)
    set(handles.redlmpf,'userdata',2);
else
    set(handles.redlmpf,'userdata',0);
end

% --------------------------------------------------------------------
function expom_Callback(hObject, eventdata, handles)
button = questdlg('What model want to export?','Export','SS','MPF','MTF','SS');
if isequal(button,'SS')
    A=get(handles.bsa,'userdata');
    B=get(handles.bsb,'userdata');
    C=get(handles.bsc,'userdata');
    D=get(handles.bsd,'userdata');
    save export A B C D
    h = msgbox('Your model is export.mat','Export','none');
    waitfor(h)
elseif isequal(button,'MTF')
        G=get(handles.mtf,'userdata');
        save export G
        h = msgbox('Your model is export.mat','Export','none');
        waitfor(h)
elseif isequal(button,'MPF')
        P=get(handles.bdp,'userdata');
        Q=get(handles.bdq,'userdata');
        lr=get(handles.mpf,'userdata');
        save export P Q lr
        h = msgbox('Your model is export.mat','Export','none');
        waitfor(h)
end   

% --------------------------------------------------------------------
function savem_Callback(hObject, eventdata, handles)
[file,path] = uiputfile('*.mat','Save Models As');
if ~isequal(file,0)
    P=get(handles.bdp,'userdata');
    Q=get(handles.bdq,'userdata');
    A=get(handles.bsa,'userdata');
    B=get(handles.bsb,'userdata');
    C=get(handles.bsc,'userdata');
    D=get(handles.bsd,'userdata');
    lr=get(handles.mpf,'userdata');
    G=get(handles.mtf,'userdata');
    save(file,'P','Q','lr','A','B','C','D','G')
end


% --------------------------------------------------------------------
function loadm_Callback(hObject, eventdata, handles)
 [filename, pathname] = uigetfile( ...
        {'*.mat','Mat - Files(*.mat)';},...
        'Select System');
try
    s=[pathname filename];
    load(s,'P','Q','lr','A','B','C','D','G')
    ponerm(handles,P,Q,lr,A,B,C,D,G,1)
catch
    errordlg('Load System Error','!! Error !!')
end


% --------------------------------------------------------------------
function printm_Callback(hObject, eventdata, handles)
printdlg(handles.figure1)

% --------------------------------------------------------------------
function printfig_Callback(hObject, eventdata, handles)
print(gcbf)

% --------------------------------------------------------------------
function stepss1_Callback(hObject, eventdata, handles)
A=get(handles.bsa,'userdata');
if isreal(A)
    B=get(handles.bsb,'userdata');
    C=get(handles.bsc,'userdata');
    D=get(handles.bsd,'userdata');
    figure,step(A,B,C,D)
else
    errordlg('Model is Complex, use conversin to Real','!!--Error--!!')
end
        

% --------------------------------------------------------------------
function stepmt_Callback(hObject, eventdata, handles)
G=get(handles.mtf,'userdata');
figure,step(G)


% --------------------------------------------------------------------
function mathelp_Callback(hObject, eventdata, handles)
web http://www.mathworks.com/matlabcentral/fileexchange/23082

% --------------------------------------------------------------------
function tutorm_Callback(hObject, eventdata, handles)
try
    winopen('Mult&T.pdf')
catch
    disp('Try open by archive Mult&T.pdf')
end

% --------------------------------------------------------------------
function iscolred_Callback(hObject, eventdata, handles)
P=get(handles.bdp,'userdata');
i=iscolred(P);
if i==1
    set(handles.editpq,'string','P is of column reduced')
elseif i==0
    set(handles.editpq,'string','P not is of column reduced')
end

% --------------------------------------------------------------------
function isrowred_Callback(hObject, eventdata, handles)
P=get(handles.bdp,'userdata');
i=isrowred(P);
if i==1
    set(handles.editpq,'string','P is of row reduced')
elseif i==0
    set(handles.editpq,'string','P not is of row reduced')
end

% --------------------------------------------------------------------
function iscon_Callback(hObject, eventdata, handles)
P=get(handles.bdp,'userdata');
Q=get(handles.bdq,'userdata');
lr=get(handles.mpf,'userdata');
if lr==1
    set(handles.editpq,'string','Rigth MPF always controlable')
elseif lr==0
    [i pnc]=islmpfc(P,Q);
    if i==1
        set(handles.editpq,'string','Left MPF is controlable')
    elseif i==0
        set(handles.editpq,'string',sprintf('Left MPF not is controlable of pole %d',pnc))
    end
end

% --------------------------------------------------------------------
function isobsv_Callback(hObject, eventdata, handles)
lr=get(handles.mpf,'userdata');
if lr==0
    set(handles.editpq,'string','Right MPF always observable')
    if lr==1
        [i pnc]=isrmpfo(P,Q);
        if i==1
            set(handles.editpq,'string','Right MPF is observable')
        elseif i==0
            set(handles.editpq,'string',sprintf('Right MPF not is observable of pole %d',pnc))
        end
    end
end

function coxmode_Callback(hObject, eventdata, handles)
bu=questdlg('Are you sure, the Space-state is in Jordan form?','Ctrb and Obsv for Mode');
if isequal(bu,'Yes')
    A=get(handles.bsa,'userdata');
    B=get(handles.bsb,'userdata');
    C=get(handles.bsc,'userdata');
    k=coXm(A,B,C);
    x.data=k;
    x.rowheader= {'k'};
    x.rlab='p';
    x.collabels={'pole';'ctrb';'obsv'};
    x.top= 390;
    x.left =25;
    datagrid(x,handles.uipanel11)
end

function M=noreal(M)
[fm cm]=size(M);
a=M;
M=[];
for i=1:fm
    for j=1:cm
        M{i,j}=num2str(a(i,j));
    end
end
return

% --------------------------------------------------------------------
function comtoreal_Callback(hObject, eventdata, handles)
A=get(handles.bsa,'userdata');
B=get(handles.bsb,'userdata');
C=get(handles.bsc,'userdata');
if ~isreal(A)
    [A B C]=cx2rJ(A,B,C);
    set(handles.bsa,'userdata',A)
    set(handles.bsb,'userdata',B)
    set(handles.bsc,'userdata',C)   
    hObject=handles.bsa;
    bsa_Callback(hObject,eventdata,handles)
end
% --------------------------------------------------------------------
function examplesmht_Callback(hObject, eventdata, handles)
button = questdlg('What models do you want to see?','Examples','SS','MPF','MTF','SS');
if isequal(button,'SS')
   web ss.mht -browser
elseif isequal(button,'MTF')
    web mtf.mht -browser
elseif isequal(button,'MPF')
    web mpf.mht -browser
end   
%-------------------------------------------------------------------------
function cancel_Callback(hObject, eventdata, handles)
ot=timerfind('tag','myt');
if ~isempty(ot)
    ot.StopFcn='';
    stop(ot)
   delete(ot)
end
close(gcbf)


function figure1_CloseRequestFcn(hObject, eventdata, handles)
delete(hObject);
ot=timerfind('tag','myt');
if ~isempty(ot)
   ot.StopFcn='';
   stop(ot)
   delete(ot)
end

% --------------------------------------------------------------------
function fcomp_Callback(hObject, eventdata, handles)
m=get(handles.editpq,'userdata');
digits(3)
if isequal(class(m),'cell')
    m=cell2sym(m);
end
h=handles.editpq;
mpfstring(vpa(m),h)

% --------------------------------------------------------------------
function sstow_Callback(hObject, eventdata, handles)
A=get(handles.bsa,'userdata');
B=get(handles.bsb,'userdata');
C=get(handles.bsc,'userdata');
D=get(handles.bsd,'userdata');
assignin('base','A',A);
assignin('base','B',B);
assignin('base','C',C);
assignin('base','D',D);

% --------------------------------------------------------------------
function mtftow_Callback(hObject, eventdata, handles)
G=get(handles.mtf,'userdata');
assignin('base','Gt',G);

% --------------------------------------------------------------------
function mpftow_Callback(hObject, eventdata, handles)
P=get(handles.bdp,'userdata');
Q=get(handles.bdq,'userdata');
[P Q]=cell2sym(P,Q);
assignin('base','P',P);
assignin('base','Q',Q);


% --------------------------------------------------------------------
function isconss_Callback(hObject, eventdata, handles)
A=get(handles.bsa,'userdata');
B=get(handles.bsb,'userdata');
co=ctrb(A,B);
if rank(co)>=rank(A)
    set(handles.editpq,'string','State Space is controlable')
else
     set(handles.editpq,'string','State Space not is controlable')
end


% --------------------------------------------------------------------
function isobsvss_Callback(hObject, eventdata, handles)
A=get(handles.bsa,'userdata');
C=get(handles.bsc,'userdata');
co=obsv(A,C);
if rank(co)>=rank(A)
    set(handles.editpq,'string','State Space is observable')
else
     set(handles.editpq,'string','State Space not is observable')
end


Contact us at files@mathworks.com