Home > m > timetools > statespacefunctions > ltpda_ss_select.m

ltpda_ss_select

PURPOSE ^

ltpda_ss_select enables to select a smaller I/O set of a system

SYNOPSIS ^

function varargout = ltpda_ss_select(varargin)

DESCRIPTION ^

 ltpda_ss_select enables to select a smaller I/O set of a system

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

 DESCRIPTION: ltpda_ss_select enables to select a I/O set of a system

 CALL: varargout = ltpda_ss_select(varargin)
 [subystem] = paramSubstitute(subystem, operations)
 
 INPUTS: subystem - (array) of plist describing a subsystem (refer to
 ltpda_ss_check for details) 
 operations - plist of elements for selction of I/O
 
 OUTPUTS: subystem - (array of) plist describing the subsystem (refer to
 test_subsys for details) with restiction done

 VERSION: $Id: ltpda_ss_select.m,v 1.1 2008/03/11 16:52:56 adrien Exp $

 HISTORY: 07-03-2008 A Grynagier
 Creation

 TO DO : 
 
% standard calls for LTPDA function data

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function varargout = ltpda_ss_select(varargin)
0002 % ltpda_ss_select enables to select a smaller I/O set of a system
0003 %
0004 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0005 %
0006 % DESCRIPTION: ltpda_ss_select enables to select a I/O set of a system
0007 %
0008 % CALL: varargout = ltpda_ss_select(varargin)
0009 % [subystem] = paramSubstitute(subystem, operations)
0010 %
0011 % INPUTS: subystem - (array) of plist describing a subsystem (refer to
0012 % ltpda_ss_check for details)
0013 % operations - plist of elements for selction of I/O
0014 %
0015 % OUTPUTS: subystem - (array of) plist describing the subsystem (refer to
0016 % test_subsys for details) with restiction done
0017 %
0018 % VERSION: $Id: ltpda_ss_select.m,v 1.1 2008/03/11 16:52:56 adrien Exp $
0019 %
0020 % HISTORY: 07-03-2008 A Grynagier
0021 % Creation
0022 %
0023 % TO DO :
0024 %
0025 %% standard calls for LTPDA function data
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         %% Retriveing option fields for operations
0059         % fields from user options
0060         Inputs = find(modif,'Inputs') ;
0061         Outputs = find(modif,'Outputs') ;
0062         % subsystem data matrices
0063         % SystemAMat = find(System,'AMAT');
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         % getting new number of inputs
0078         SystemNbInputs1 = 0;
0079         for i=1:SystemNbInputs
0080             if not(isempty(Inputs{i}))
0081                 SystemNbInputs1 = SystemNbInputs1+1;
0082             end
0083         end
0084         %new fields
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         % filling in new fields
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         %% parsing into new system
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 ); %#ok<AGROW>
0115     end
0116 end
0117 varargout = {System_out};
0118 end

Generated on Mon 31-Mar-2008 13:54:54 by m2html © 2003