0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 function varargout = isstable(varargin)
0020 utils.helper.msg(utils.const.msg.MNAME, ['running ', mfilename]);
0021
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
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
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