R: Convert Matrix from Compact Vector to Standard Form

compactToMat {fields} | R Documentation

## Convert Matrix from Compact Vector to Standard Form

### Description

`compactToMat` transforms a matrix from compact, vector form to a standard matrix. Only symmetric matrices can be stored in this form, since a compact matrix is stored as a vector with elements representing the upper triangle of the matrix. This function assumes the vector does not contain diagonal elements of the matrix.

An example of a matrix stored in compact form is any matrix generated from the `rdist` function with `compact=TRUE`.

### Usage

    compactToMat(compactMat, diagVal=0, lower.tri=FALSE, upper.tri=TRUE)

### Arguments

`compactMat` | A symmetric matrix stored as a vector containing elements for the lower-triangular portion of the true matrix (and none of the diagonal elements), as returned by `rdist` with `compact=TRUE`.
`diagVal` | A number to put in the diagonal entries of the output matrix.
`lower.tri` | Whether or not to fill in the upper triangle of the output matrix
`upper.tri` | Whether or not to fill in the lower triangle of the output matrix

### Value

The standard form matrix represented by the input compact matrix

### Author(s)

John Paige

### See Also

`rdist`, `link{dist}`

### Examples

    ################
    #Calculate distance matrix from compact form:
    ################

    #make a distance matrix
    distOut = rdist(1:5, compact=TRUE)
    print(distOut)

    #note that distOut is in compact form:
    print(c(distOut))

    #convert to standard matrix form:
    distMat = compactToMat(distOut)

    ################
    #fast computation of covariance matrix:
    ################

    #generate 5 random points on [0,1]x[0,1] square
    x = matrix(runif(10), nrow=5)

    #get compact distance matrix
    distOut = rdist(x, compact=TRUE)

    #evaluate Exponential covariance with range=1.  Note that
    #Covariance function is only evaluated over upper triangle
    #so time is saved.
    diagVal = Exponential(0, range=1)
    compactCovMat = Exponential(distOut, range=1)
    upperCovMat = compactToMat(compactCovMat, diagVal)
    lowerCovMat = compactToMat(compactCovMat, diagVal, lower.tri=TRUE, upper.tri=FALSE)
    fullCovMat = compactToMat(compactCovMat, diagVal, lower.tri=TRUE, upper.tri=TRUE)
    compactCovMat
    lowerCovMat
    upperCovMat
    fullCovMat

[Package fields version 9.6.1 Index]