To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Revision:

root / _FullBNT / BNT / CPDs / @tree_CPD / set_fields.m @ 8:b5b38998ef3b

History | View | Annotate | Download (1.62 KB)

1
function CPD = set_fields(CPD, varargin)
2
% SET_PARAMS Set the parameters (fields) for a tabular_CPD object
3
% CPD = set_params(CPD, name/value pairs)
4
%
5
% The following optional arguments can be specified in the form of name/value pairs:
6
%
7
% CPT     - the CPT
8
% prior   - the prior
9
% clamped - 1 means don't adjust during EM
10
%
11
% e.g., CPD = set_params(CPD, 'CPT', 'rnd')
12

    
13
args = varargin;
14
nargs = length(args);
15
for i=1:2:nargs
16
  switch args{i},
17
   case 'CPT', 
18
    if ischar(args{i+1})
19
      switch args{i+1}
20
       case 'unif', CPD.CPT = mk_stochastic(myones(CPD.sizes));
21
       case 'rnd',  CPD.CPT = mk_stochastic(myrand(CPD.sizes));
22
       otherwise,   error(['invalid type ' args{i+1}]);       
23
      end
24
    elseif isscalar(args{i+1})
25
      p = args{i+1};
26
      k = CPD.sizes(end);
27
      % Bug fix by Herv? BOUTROUILLE 10/1/01
28
      CPD.CPT = myreshape(sample_dirichlet(p*ones(1,k), prod(CPD.sizes(1:end-1)), CPD.sizes));   
29
      %CPD.CPT = myreshape(sample_dirichlet(p*ones(1,k), prod(CPD.sizes(1:end-1))), CPD.sizes);
30
    else
31
      CPD.CPT = myreshape(args{i+1}, CPD.sizes);
32
    end
33
   
34
   case 'prior',       
35
    if ischar(args{i+1}) & strcmp(args{i+1}, 'unif')
36
      CPD.prior = myones(CPD.sizes);
37
    elseif isscalar(args{i+1})
38
      CPD.prior = args{i+1} * normalise(myones(CPD.sizes));
39
    else
40
      CPD.prior = myreshape(args{i+1}, CPD.sizes);
41
    end
42
    
43
   %case 'clamped',      CPD.clamped = strcmp(args{i+1}, 'yes');
44
   %case 'clamped',      CPD = set_clamped(CPD, strcmp(args{i+1}, 'yes'));
45
   case 'clamped',      CPD = set_clamped(CPD, args{i+1});
46
   
47
   otherwise,  
48
    %error(['invalid argument name ' args{i}]);       
49
  end
50
end
51

    
52