0001 function varargout = ltpda_ss_select(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
0026
0027 ALGONAME = mfilename;
0028 VERSION = '$Id: ltpda_ss_select.m,v 1.1 2008/03/11 16:52:56 adrien Exp $';
0029 CATEGORY = 'STATESPACE';
0030 display(['starting ' ALGONAME]);
0031
0032 if not(isempty(varargin))
0033 if isequal( varargin{1}, 'Version')
0034 varargout = VERSION;
0035 return;
0036 elseif isequal(varargin{1}, 'Params')
0037 varargout = plist( 'Inputs', cell(1,0), 'Outputs', cell(1,0) );
0038 return;
0039 elseif isequal(varargin{1}, 'Category')
0040 varargout = CATEGORY;
0041 return;
0042 end
0043 end
0044
0045 if length(varargin)==2
0046 Systems = varargin{1};
0047 modifs = varargin{2};
0048 System_out = plist();
0049 else
0050 error('wrong number of inputs!')
0051 end
0052
0053 for i_system = 1:length(Systems)
0054 for i_modif = 1 :length(modifs)
0055 System = Systems(i_system);
0056 modif = modifs(i_modif);
0057
0058
0059
0060 Inputs = find(modif,'Inputs') ;
0061 Outputs = find(modif,'Outputs') ;
0062
0063
0064 SystemBMats = find(System,'BMATS');
0065 SystemCMat = find(System,'CMAT');
0066 SystemDMats = find(System,'DMATS');
0067 SystemNbInputs = find(System,'NBINPUTS');
0068 SystemInputNames = find(System,'INPUTNAMES');
0069 SystemInputSizes = find(System,'INPUTSIZES');
0070 SystemInputIsUsed = find(System,'INPUTISUSED');
0071 SystemInputVarNames = find(System,'INPUTVARNAMES');
0072 SystemOutputVarNames = find(System,'OUTPUTVARNAMES');
0073
0074 if not(length(Inputs)==SystemNbInputs)
0075 error('wrong number of inputs')
0076 end
0077
0078 SystemNbInputs1 = 0;
0079 for i=1:SystemNbInputs
0080 if not(isempty(Inputs{i}))
0081 SystemNbInputs1 = SystemNbInputs1+1;
0082 end
0083 end
0084
0085 SystemBMats2 = cell(SystemNbInputs1,1);
0086 SystemDMats2 = cell(SystemNbInputs1,1);
0087 SystemInputNames2 = cell(SystemNbInputs1,1);
0088 SystemInputSizes2 = zeros(1, SystemNbInputs1);
0089 SystemInputIsUsed2 = zeros(1, SystemNbInputs1);
0090 SystemInputVarNames2 = cell(SystemNbInputs1,1);
0091
0092 SystemNbInputs2 = 0;
0093 for i=1:SystemNbInputs
0094 if not(isempty(Inputs{i}))
0095 if length(Inputs{i}) > SystemInputSizes(i)
0096 error('more inputs than possible!')
0097 end
0098 SystemNbInputs2 = SystemNbInputs2 + 1;
0099 Inputs_loc = Inputs{i};
0100 SystemBMat = SystemBMats{i};
0101 SystemBMats2{SystemNbInputs2} = SystemBMat(:,Inputs_loc);
0102 SystemDMat = SystemDMats{i};
0103 SystemDMats2{SystemNbInputs2} = SystemDMat(Outputs,Inputs_loc);
0104 SystemInputNames2{SystemNbInputs2} = SystemInputNames{i};
0105 SystemInputSizes2(SystemNbInputs2) = length(Inputs_loc);
0106 SystemInputIsUsed2(SystemNbInputs2) = SystemInputIsUsed(i);
0107 SystemInputVarNames2{SystemNbInputs2} = SystemInputVarNames{i}(Inputs_loc);
0108 end
0109 end
0110 SystemOutputVarNames2 = SystemOutputVarNames(Outputs);
0111
0112 System_out(i_system, i_modif) = pset(System,'BMATS', SystemBMats2, 'CMAT',{SystemCMat{1}(Outputs,:)}, 'DMATS', SystemDMats2,...
0113 'NBINPUTS', SystemNbInputs1, 'INPUTNAMES', SystemInputNames2, 'INPUTSIZES', SystemInputSizes2, 'INPUTISUSED', SystemInputIsUsed2, ...
0114 'INPUTVARNAMES', SystemInputVarNames2, 'OUTPUTVARNAMES', SystemOutputVarNames2 );
0115 end
0116 end
0117 varargout = {System_out};
0118 end