0001 function OM=DS_DO_ObsModel(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 switch nargin
0014 case 1
0015 if isa(varargin{1},'DS_DO_ObsModel')
0016 OM=varargin{1};
0017 else
0018 error('Wrong parameter type in DS_DO_ObsModel constructor');
0019 end
0020 case 3
0021 if isa(varargin{1},'DSpace')
0022 OM.S=varargin{1};
0023 else
0024 error('Wrong parameter type in DS_DO_ObsModel constructor');
0025 end
0026 if isa(varargin{2},'DSpace')
0027 OM.O=varargin{2};
0028 else
0029 error('Wrong parameter type in DS_DO_ObsModel constructor');
0030 end
0031
0032 if isa(varargin{3},'cell')
0033 OM.p=varargin{3};
0034 no=dim(OM.O);
0035 for i=1:no
0036 if nnz(OM.p{i})/numel(OM.p{i})<0.5
0037 OM.p{i}=sparse(OM.p{i});
0038 end
0039 end
0040 else
0041 error('Wrong parameter type in DS_DO_ObsModel constructor');
0042 end
0043
0044 if dim(OM.O)~=size(OM.p,2) || dim(OM.S)~=size(OM.p{1},1)
0045 error('Size missmatch in DS_DO_ObsModel constructor');
0046 end
0047
0048 OMBase=ObsModel();
0049
0050 OM=class(OM,'DS_DO_ObsModel',OMBase);
0051 otherwise
0052 error('Wrong number of parameters in DS_DO_ObsModel constructor');
0053 end