Table of Contents
SIPPI can be used as a convenient approach for unconditional an conditional simulation.
In order to use SIPPI to solve inverse problems, one must provide the solution to the forward problem. Essentially this amounts to implementing a Matlab function that solves the forward problem in using a specific input/output format. If a solution to the forward problem already exist, this can be quite easily done simply using a Matlab wrapper function.
A few implementations of solutions to forward problems are included as examples as part of SIPPI. These will be demonstrated in the following
A prior model consisting of three independent 1D distributions (a Gaussian, Laplace, and Uniform distribution) can be defined using
ip=1;
prior{ip}.type='GAUSSIAN';
prior{ip}.name='Gaussian';
prior{ip}.m0=10;
prior{ip}.std=2;
ip=2;
prior{ip}.type='GAUSSIAN';
prior{ip}.name='Laplace';
prior{ip}.m0=10;
prior{ip}.std=2;
prior{ip}.norm=1;
ip=3;
prior{ip}.type='GAUSSIAN';
prior{ip}.name='Uniform';
prior{ip}.m0=10;
prior{ip}.std=2;
prior{ip}.norm=60;
m=sippi_prior(prior);
m =
[14.3082] [9.4436] [10.8294]
1D histograms of a sample (consisting of 1000 realizations) of the prior models can be visualized using ...
sippi_plot_prior_sample(prior);
The FFT-MA type a priori model allow separation of properties of the covariance model (covariance parameters, such as range, and anisotropy ratio) and the random component of a Gaussian model. This allow one to define a Gaussian a priori model, where the covariance parameters can be treated as unknown variables.
In order to treat the covariance parameters as unknowns, one must define one a priori model of type FFTMA, and then a number of 1D GAUSSIAN type a priori models, one for each covariance parameter. Each gaussian type prior model must have a descriptive name, corresponding to the covariance parameter that is should describe:
prior{im}.type='gaussian';
prior{im}.name='m_0'; % to define a prior for the mean
prior{im}.name='sill'; % to define a prior for sill (variance)
prior{im}.name='range_1'; % to define a prior for the range parameter 1
prior{im}.name='range_2'; % to define a prior for the range parameter 2
prior{im}.name='range_3'; % to define a prior for the range parameter 3
prior{im}.name='ang_1'; % to define a prior for the first angle of rotation
prior{im}.name='ang_2'; % to define a prior for the second angle of rotation
prior{im}.name='ang_3'; % to define a prior for the third angle of rotation
prior{im}.name='nu'; % to define a prior for the shape parameter, nu
% (only applies when the Matern type Covariance model is used)
A very simple example of a prior model defining a 1D Spherical type covariance model with a range between 5 and 15 meters, can be defined using:
im=1;
prior{im}.type='FFTMA';
prior{im}.x=[0:.1:10]; % X array
prior{im}.m0=10;
prior{im}.Va='1 Sph(10)';
prior{im}.fftma_options.constant_C=0;
im=2;
prior{im}.type='gaussian';
prior{im}.name='range_1';
prior{im}.m0=10;
prior{im}.std=5
prior{im}.norm=80;
prior{im}.prior_master=1; % -- NOTE, set this to the FFT-MA type prior for which this prior type
% should describe the range
Note that the the field prior_master must be set to point the to the FFT-MA type a priori model (through its id/number) for which it should define a covariance parameter (in this case the range).
10 independent realizations of this type of a priori model are shown in the following figure
![]() |
Such a prior, as all prior models available in SIPPI, works with sequential Gibbs sampling, allowing a random walk in the space of a prior acceptable models, that will sample the prior model. An example of such a random walk can be performed using
prior{1}.seq_gibbs.step=.005;
prior{2}.seq_gibbs.step=0.1;
clear m_real;
for i=1:150;
[m,prior]=sippi_prior(prior,m);
m_real(:,i)=m{1};
end
An example of such a set of 150 dependent realization of the prior can be seen below
![]() |
| This site is hosted by sourceforge.net |