#include #include #include "randomS.c" void genfield(x,n,m,beta,lambda,iter,seed) /************************************************************************* Generates a Gaussian MRF via MCMC. Assumes 3rd order nbhd where beta[1..6] correspond to h,v,d+-,d++,hh,vv neighbors respectively. Because this matrix is transposed relative to the Splus matrix, the horizontal adjacencies are reversed here. ***********************************************************************/ double x[1000][1000], *beta, lambda; int n, m, iter; { int ns, i, j, k, by, i1, i2, j1, j2, i0, j0; int samp; double mean, meanprec, prec, sd, nbrs, sumbeta; double rnor(); /* initialize x */ sumbeta = 0.0; for(i=0;i<6;i++) sumbeta += beta[i]; sd = 1.0/sqrt(lambda); for(i=0;i