0001 function varargout = utp_ltpda_ss_ss2iir(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025 ALGONAME = mfilename;
0026 VERSION = 'Id: utp_ltpda_ss_ss2iir.m,v 0.3 2008/02/17 20:23:45 agry';
0027 CATEGORY = 'STATESPACE';
0028 display(['starting ' ALGONAME]);
0029
0030 if not(isempty(varargin))
0031 if isequal( varargin{1}, 'Version')
0032 varargout = VERSION;
0033 return;
0034 elseif isequal(varargin{1}, 'Params')
0035 varargout = plist();
0036 return;
0037 elseif isequal(varargin{1}, 'Category')
0038 varargout = CATEGORY;
0039 return;
0040 end
0041 end
0042
0043 result = 1;
0044
0045 for i0 = 1:30
0046
0047 nSysTot = floor(rand()*4)+1;
0048 pSys = floor(rand()*nSysTot)+1;
0049 nUTot = floor(rand()*nSysTot)+1;
0050 OutputSizes = ones(nSysTot,1)+floor(rand(nSysTot,1)*5);
0051 InputSizes = ones(nUTot,1)+floor(rand(nUTot,1)*5);
0052
0053 syst1 = utp_ltpda_ss_random_generate(nSysTot, pSys, nUTot, OutputSizes, InputSizes);
0054 syst1 = pset(syst1, 'TIMESTEP',1);
0055
0056
0057 syst = plist();
0058 syst(1) = syst1;
0059 syst(2) = syst1;
0060
0061
0062 INPUTS = {};
0063 INPUTCOLUMNS = [];
0064 OUTPUTROWS = [];
0065 ListNames1 = find(syst1, 'INPUTNAMES');
0066 ListSizes1 = find(syst1, 'INPUTSIZES');
0067 c1 = find(syst1, 'CMAT');
0068 out1 = size(c1{1},1);
0069 i1 = 0;
0070 for i2 = 1:length(ListNames1)
0071 do = floor(rand()*2);
0072 if do
0073 if ListSizes1(i2)>0
0074 i1=i1+1;
0075 INPUTS{i1} = ListNames1{i2};
0076 INPUTCOLUMNS(i1) = 1+floor(rand()*ListSizes1(i2));
0077 end
0078 end
0079 end
0080 if out1>1
0081 OUTPUTROWS = 1:out1;
0082 end
0083 opt = plist('INPUTS', INPUTS, 'INPUTCOLUMNS', INPUTCOLUMNS ,'OUTPUTROWS',OUTPUTROWS);
0084
0085 try
0086 iir = ltpda_ss_ss2iir(syst, opt);
0087 display('OK')
0088 catch
0089 result = 0;
0090 display('pb')
0091 end
0092
0093 end
0094
0095
0096 A=[0 1; 2 3];
0097 B=[0 1;1 0];
0098 C=[1 1 ;2 -1];
0099 D=[0 0;1 0] ;
0100 syst = plist('TYPE', 'SUBSYSTEM' ,'NAME', 'SS1' ,'TIMESTEP', 1 , ...
0101 'XISOUTPUT',0,'YISOUTPUT',1,'XINI', [0 0]' , ...
0102 'PARAMNAMES', {} ,'PARAMVALUES', [] ,'PARAMSIGMAS', [] ,...
0103 'NBINPUTS', 1 ,'INPUTNAMES', {'U'} ,'INPUTSIZES', 1 , 'INPUTISUSED', 1 ,...
0104 'AMAT', {A} ,'BMATS', {B} ,'CMAT', {C} ,'DMATS', {D} );
0105 ltpda_ss_check(syst)
0106 f = ltpda_ss_ss2iir(syst, plist('INPUTS', {'U'}, 'INPUTCOLUMNS', 1 ,'OUTPUTROWS',2));
0107 fa = [1 -4 0];
0108 fb = [1 -3 -2];
0109 if (norm(fa-f.a) + norm(fb-f.b))>1e-14
0110 result = 0;
0111 end
0112 display(result)
0113 varargout = {result};
0114 end
0115