1 function Udirichlet = dirichlet_values_weighted_boxes(glob, params)
2 %
function Udirichlet = dirichlet_values_weighted_boxes(glob, params)
4 %
function computing dirichlet-values by pointwise evaluations
6 % values constant params.c_dir in box given by
7 % (beta=1): params.dir_box_xrange{1} and dir_box_yrange{1}
8 % (beta=0): params.dir_box_xrange{2} and dir_box_yrange{2}
9 %
for intermediate betas, the two boxes are weighted
11 % required fields of params:
12 % dir_middle : y coordinate where upper and lower regions are separated
13 % c_dir : dirichlet value in box given by beta and
14 %
'dir_box_{xrange,yrange}'
15 % beta : dirichlet values == params.c_dir in box given by
16 % -
'(beta=1)' params.dir_box_xrange{1} and dir_box_yrange{1}
17 % -
'(beta=0)' params.dir_box_xrange{2} and dir_box_yrange{2}
18 % -
for intermediate betas, the two boxes are weighted
19 % dir_box_xrange : cell array with two cells
for length of the two boxes in
21 % dir_box_yxange : cell array with two cells
for length of the two boxes in
25 % in
'coefficients' mode, the parameters in brackets are empty
29 if ~isempty(glob) && size(glob,1) < size(glob,2)
30 warning('coordinates in variable glob are given row-wise, but expected them to be column-wise');
36 decomp_mode = params.decomp_mode;
39 if ~ismember('beta',params.mu_names)
40 Udirichlet = params.c_dir;
42 Udirichlet = params.c_dir * [params.beta; 1-params.beta];
44 else % decomp_mode < 2
49 Udirichlet = zeros(size(X));
50 xrange = params.dir_box_xrange{1};
51 yrange = params.dir_box_yrange{1};
52 fi = X > xrange(1) & ...
56 Udirichlet(fi) = params.c_dir*params.beta;
57 xrange = params.dir_box_xrange{2};
58 yrange = params.dir_box_yrange{2};
59 fi = X > xrange(1) & ...
63 Udirichlet(fi) = params.c_dir*(1-params.beta);
64 elseif decomp_mode == 1
65 % two components
if beta is in mu, otherwise one component
66 Udirichlet = cell(2,1);
68 Udirichlet{q} = zeros(size(X));
69 xrange = params.dir_box_xrange{q};
70 yrange = params.dir_box_yrange{q};
71 fi = X > xrange(1) & ...
75 Udirichlet{q}(fi) = 1;
77 if ~ismember(
'beta',params.mu_names)
78 % merge to one component
79 Udirichlet = {params.beta*Udirichlet{1} + ...
80 (1-params.beta)*Udirichlet{2}};
83 error(
'decomp_mode unknown');