0001 function varargout = utp_ltpda_ss_modify_time_setup(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 ALGONAME = mfilename;
0022 VERSION = '$Id: utp_ltpda_ss_modify_time_setup.m,v 1.4 2008/03/11 16:52:56 adrien Exp $';
0023 CATEGORY = 'STATESPACE';
0024 display(['starting ' ALGONAME]);
0025
0026 if not(isempty(varargin))
0027 if isequal( varargin{1}, 'Version')
0028 varargout = VERSION;
0029 return;
0030 elseif isequal(varargin{1}, 'Params')
0031 varargout = plist();
0032 return;
0033 elseif isequal(varargin{1}, 'Category')
0034 varargout = CATEGORY;
0035 return;
0036 end
0037 end
0038 output =1;
0039
0040 for i=1:100
0041 nSysTot = 1;
0042 pSys = 1;
0043 nUTot = floor(rand()*4);
0044 OutputSizes = floor(rand()*4);
0045 InputSizes = floor(rand(nUTot)*4);
0046 try
0047 j = 1;
0048 syst0 = utp_ltpda_ss_random_generate(nSysTot, pSys, nUTot, OutputSizes, InputSizes);
0049 AMAT = find(syst0, 'AMAT');
0050 V = max(0.5 , max(abs(imag(eig(AMAT{1})))));
0051 if size(V,1)==0
0052 V = 1;
0053 end
0054 Tmax = 3.1415/V/2;
0055
0056
0057 NewTimeStep = plist('TIMESTEP',Tmax*0.05);
0058 j = j+1;
0059 syst2 = ltpda_ss_modify_time_setup(syst0,NewTimeStep);
0060
0061 NewTimeStep = plist('TIMESTEP',0.5*Tmax);
0062 j = j+1;
0063 syst3 = ltpda_ss_modify_time_setup(syst2,NewTimeStep);
0064
0065 NewTimeStep = plist('TIMESTEP',0.05*Tmax);
0066 j = j+1;
0067 syst4 = ltpda_ss_modify_time_setup(syst3,NewTimeStep);
0068
0069 NewTimeStep = plist('TIMESTEP',0);
0070 j = j+1;
0071 syst5 = ltpda_ss_modify_time_setup(syst4,NewTimeStep);
0072
0073 NewTimeStep =[NewTimeStep NewTimeStep NewTimeStep];
0074 j = j+1;
0075 syst6 = ltpda_ss_modify_time_setup([syst5 syst5],NewTimeStep);
0076 display('ok')
0077 catch
0078 display(['error at step ' num2str(j)])
0079 output = 0;
0080 display('pb')
0081 end
0082
0083
0084 AMAT2 = find(syst2,'AMAT');
0085 AMAT4 = find(syst4,'AMAT');
0086 AMAT0 = find(syst0,'AMAT');
0087 AMAT5 = find(syst5,'AMAT');
0088
0089
0090
0091
0092
0093
0094
0095
0096 if not( norm(AMAT2{1}-AMAT4{1})<5e-7)
0097 display('error possible when changing time between discrete and discrete')
0098 output = 0;
0099 end
0100 if not(norm(AMAT0{1}-AMAT5{1})<5e-7)
0101 display('error possible when changing time between continuous and discrete')
0102 output = 0;
0103 end
0104 if not(norm(AMAT2{1}-AMAT4{1})<1e-13)
0105 display(['small error when changing time between discrete and discrete :' num2str(norm(AMAT2{1}-AMAT4{1}))])
0106 end
0107 if not(norm(AMAT0{1}-AMAT5{1})<1e-13)
0108 display(['small error when changing time between continuous and discrete : ' num2str(norm(AMAT0{1}-AMAT5{1}))])
0109 end
0110 end
0111 varargout = {output};
0112 end