Voronoi

The voronoi type defines a prior model defines an a priori model based on a number of Voronoi cells. For example, a 2D model of size (20x20) with 50 randomly located Voronoi cells can be defined using

cells_N_max=50;    
ip=1;
prior{ip}.type='voronoi';    
prior{ip}.x=1:.04:20;
prior{ip}.y=1:.04:20;    
prior{ip}.cells_N=cells_N_max; % SET NUMBER OF CELLS  
prior{ip}.cells_N_min=3;
prior{ip}.cells_N_max=cells_N_max;  
sippi_plot_prior_sample(prior);

The value of each cell is simply an integer number between 1 and prior{ip}.cells_N.

Randomize number of, location of, and value of the Voronois cells

The location and value of the Voronois cells can be randomized by specifying additional, appropriately named a priori types.

For example to randomize location of the Voronoi cell define a number prior models with names cells_x, cells_y, and cells_z (in 3D), as e.g.:

ip=ip+1;
prior{ip}.type='uniform';
prior{ip}.name='cells_x';
prior{ip}.x=[1:cells_N_max];
prior{ip}.min=min(prior{1}.x);
prior{ip}.max=max(prior{1}.x);
prior{ip}.cax=[prior{ip}.min prior{ip}.max];
prior{ip}.prior_master=1;

ip=ip+1;
prior{ip}.type='uniform';
prior{ip}.name='cells_y';
prior{ip}.x=[1:cells_N_max];
prior{ip}.min=min(prior{1}.y);
prior{ip}.max=max(prior{1}.y);
prior{ip}.cax=[prior{ip}.min prior{ip}.max];
prior{ip}.prior_master=1;

Finally, to randomize the value of each cell, define a prior with name cells_value, as e.g.

ip=ip+1;
prior{ip}.type='uniform';
prior{ip}.name='cells_value';
prior{ip}.x=[1:cells_N_max];
prior{ip}.min=5;
prior{ip}.max=15;
prior{ip}.prior_master=1;
prior{1}.cax=[5 15];

Random walk using sequential Gibbs sampling

A random walk in the uniform prior (as in any supported prior type) can be obtained using sequential Gibbs sampling:

for i=1:500;
    [m,prior]=sippi_prior(prior,m);
    sippi_plot_prior(prior,m);
    drawnow;
end

This provides a video as e.g.:

The code for the full example can be found here: prior_reals_voronoi.m.

results matching ""

    No results matching ""