0001 function AM=DS_DA_ActionModel(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 switch nargin
0013 case 1
0014 if isa(varargin{1},'DS_DA_ActionModel')
0015 AM=varargin{1};
0016 else
0017 if isa(varargin{1},'double')
0018 AM.T=varargin{1};
0019 AM.na=size(RM.T,3);
0020 AM.ns=size(RM.T,1);
0021 AM=class(AM,'DS_DA_ActionModel');
0022 else
0023 error('Wrong parameter type in DS_DA_ActionModel constructor');
0024 end
0025 end
0026 case 3
0027 if isa(varargin{1},'DSpace')
0028 AM.S=varargin{1};
0029 else
0030 error('Wrong parameter type in DS_DA_ActionModel constructor');
0031 end
0032
0033 if isa(varargin{2},'DSpace')
0034 AM.A=varargin{2};
0035 else
0036 error('Wrong parameter type in DS_DA_ActionModel constructor');
0037 end
0038
0039 if isa(varargin{3},'cell')
0040 AM.T=varargin{3};
0041 na=dim(AM.A);
0042 for a=1:na
0043 if nnz(AM.T{a})/numel(AM.T{a})<0.5
0044 AM.T{a}=sparse(AM.T{a});
0045 end
0046 end
0047 else
0048 error('Wrong parameter type in DS_DA_ActionModel constructor');
0049 end
0050
0051 if dim(AM.S)~=size(AM.T{1},1) || dim(AM.S)~=size(AM.T{1},2) || dim(AM.A)~=size(AM.T,2)
0052 error('Size missmatch in DS_CA_ActionModel');
0053 end
0054
0055 AMBase=ActionModel();
0056
0057 AM=class(AM,'DS_DA_ActionModel',AMBase);
0058 otherwise
0059 error('Wrong number of parameters in DS_DA_ActionModel constructor');
0060 end
0061