#' Samples the random variable eta from a matrix normal random variable with appropriate parameters. #' @param X: X-variable matrix with dimension n cross p. #' @param U: matrix containing Y variables with dimension n cross r. #' @param gamma" matrix with u many orthonormal column. dimension r cross u. #' @param C_prior: prior specification. a p cross p variance covariance matrix. #' @param e_Prior: prior specification. a r cross p matrix. SampleEta<-function(X, U, omega, gamma, C_prior=NULL,e_prior=NULL){ #remember According to the setup C_inv is prior not C check carefully # p=dim(X)[2]; r= dim(U)[2] if( is.null(C_prior) ) { C_prior=0*diag(dim(X)[2]) } if( is.null(e_prior) ) { e_prior=matrix(0,nrow=dim(U)[2],ncol=dim(X)[2]) } Sigma2=solve(t(X)%*% X+C_prior) e_tilde=( t(U) %*% X+ e_prior%*% C_prior ) %*% Sigma2 Mean=t(gamma)%*% e_tilde # check this Sigma1=diag(omega,nrow=length(omega)); eta=rMatrixNormal(Mean,Sigma1,Sigma2) return(eta) }