fill_covariance_matrix - Fills a covariance matrix for a Gaussian process


#include "gp/gp_gaussian_processes.h"

Example compile flags (system dependent):
   -L/home/kobus/misc/load/linux_x86_64_opteron -L/usr/lib/x86_64-linux-gnu
  -lKJB                               -lfftw3  -lgsl -lgslcblas -ljpeg  -lSVM -lstdc++                    -lpthread -lSLATEC -lg2c    -lacml -lacml_mv -lblas -lg2c      -lncursesw 

int fill_covariance_matrix
	Matrix **cov,
	const Vector_vector *indices,
	const Vector_vector *indices_2,
	const void *hyper_params,
	int d,
	int (*covariance)(Matrix **,const Vector *,const Vector *,const void *,int)


This routine creates a covariance matrix for a Gaussian process where the dimension of the indices is given by the dimension of the vectors of indices and indices_2, and the dimension of the variables is d. Then, it fills *cov with submatrices that are the result of calling the given covariance function for a pair of indices. For example, the submatrix of *cov of elements 0,1,...,d is A, where A is the matrix gotten in the call covariance(&A, indices->elements[0], indices_2->elements[0], d). Naturally, indices and indices_2 must have the same length, and all of their vectors must have equal lengths. Also, covariance must "return" a dxd matrix (there are some predefined covariance functions in the library). If the routine succeeds, cov will be a square matrix of dimension indices->elements[0]->length*d. hyper_params holds any hyper parameters that the covariance function needs. The covariance function itself should cast it to the correct type. If the matrix pointed to by cov is NULL, then a matrix of the appropriate size is created. If it exists, but is the wrong size, then it is recreated. Otherwise, the storage is recycled.


If the routine fails (due to storage allocation or an error in the covariance function), then ERROR is returned with and error message being set. Otherwise NO_ERROR is returned.




This software is not adequatedly tested. It is recomended that results are checked independantly where appropriate.


Ernesto Brau


Ernesto Brau


fill_mean_vector , sample_from_gaussian_process_prior , sample_from_gaussian_process_prior_i , sample_from_gaussian_process_predictive , sample_from_gaussian_process_predictive_i , get_gaussian_process_predictive_distribution , get_gaussian_process_predictive_distribution_i , get_gaussian_process_posterior_distribution , get_gaussian_process_posterior_distribution_i , compute_gaussian_process_likelihood , compute_gaussian_process_likelihood_i , compute_gaussian_process_marginal_likelihood , compute_gaussian_process_marginal_likelihood_i , compute_gaussian_process_marginal_log_likelihood , compute_gaussian_process_marginal_log_likelihood_i