Home > classes > @ssm > isstable.m

isstable

PURPOSE ^

tells if ssm is numerically stable

SYNOPSIS ^

function varargout = isstable(varargin)

DESCRIPTION ^

 tells if ssm is numerically stable
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 DESCRIPTION: ISSTABLE tells if ssm is numerically stable

 MFILE INFO: Get information about this methods by calling
              >> ssm.getInfo('display')

              Get information about a specified set by calling:
              >> ssm.getInfo('display', 'Default')

 VERSION:     $Id: display.m,v 1.1 2008/08/06 18:35:26 ingo Exp $

 HISTORY:     30012007 Diepholz
                 Creation

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 % tells if ssm is numerically stable
0002 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0003 %
0004 % DESCRIPTION: ISSTABLE tells if ssm is numerically stable
0005 %
0006 % MFILE INFO: Get information about this methods by calling
0007 %              >> ssm.getInfo('display')
0008 %
0009 %              Get information about a specified set by calling:
0010 %              >> ssm.getInfo('display', 'Default')
0011 %
0012 % VERSION:     $Id: display.m,v 1.1 2008/08/06 18:35:26 ingo Exp $
0013 %
0014 % HISTORY:     30012007 Diepholz
0015 %                 Creation
0016 %
0017 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0018 
0019 function varargout = isstable(varargin)
0020 utils.helper.msg(utils.const.msg.MNAME, ['running ', mfilename]);
0021 %%% Check if this is a call for parameters
0022 if utils.helper.isinfocall(varargin{:})
0023   varargout{1} = getInfo(varargin{3});
0024   return
0025 end
0026 objs = utils.helper.collect_objects(varargin(:), 'ssm');
0027 
0028 for i=1:length(objs)
0029   [A B C D Ts] = double(objs(i), plist('inputs','ALL','states', 'ALL','outputs','ALL'));
0030   if Ts == 0
0031     vp = eig(A);
0032     ninst = length(find(real(vp)>0));
0033     isst(i) = ninst==0;
0034   else
0035     vp = eig(A);
0036     ninst = length(find(abs(vp)>1));
0037     isst(i) = ninst==0;
0038   end
0039 end
0040 if sum(isst)<length(isst)
0041   display('warning, at least one system is not stable :')
0042   for i=1:length(objs)
0043     if ~isst(i)
0044       display(objs(i).name)
0045       display(objs(i).description)
0046     end
0047   end
0048 end
0049 varargout ={isst};
0050 end
0051 
0052 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0053 %                               Local Functions                               %
0054 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0055 
0056 function ii = getInfo(varargin)
0057   if nargin == 1 && strcmpi(varargin{1}, 'None')
0058     sets = {};
0059     pl   = [];
0060   else
0061     sets = {'Default'};
0062     pl   = getDefaultPlist;
0063   end
0064   % Build info object
0065   ii = minfo(mfilename, 'ssm', '', 'Output', '$Id: display.m,v 1.1 2008/08/06 18:35:26 ingo Exp $', sets, pl);
0066 end
0067 
0068 function plo = getDefaultPlist()
0069   plo = plist();
0070 end
0071 
0072

Generated on Mon 08-Sep-2008 13:18:47 by m2html © 2003