To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.
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 |
|