0001 function gm=GMixture(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 switch nargin
0014 case 0
0015 gm.w=[];
0016 gm.g={};
0017 gm.n=0;
0018 gm=class(gm,'GMixture');
0019 case 1
0020 if isa(varargin{1},'GMixture')
0021 gm=varargin{1};
0022 else
0023 if isa(varargin{1},'cell')
0024 n=size(varargin{1},2);
0025 gm=GMixture(ones(1,n)/n,varargin{1});
0026 else
0027 error('Wrong type of parameters in GMixture constructor');
0028 end
0029 end
0030 case 2
0031 n1=size(varargin{1},2);
0032 n2=size(varargin{2},2);
0033 if n1~=n2
0034 error('Size missmatch in GMixture constructor');
0035 end
0036 if isa(varargin{1},'double')
0037 gm.w=varargin{1};
0038 else
0039 error('Wrong type of parameters in GMixture constructor');
0040 end
0041 if isa(varargin{2},'cell')
0042 gm.g=varargin{2};
0043 else
0044 error('Wrong type of parameters in GMixture constructor');
0045 end
0046 gm.n=n1;
0047 gm=class(gm,'GMixture');
0048 otherwise
0049 error('Wrong number of parameters in GMixture constructor');
0050 end