Learn R Programming

RandomFields (version 3.1.16)

RMangle: Anisotropy matrix given by angle

Description

RMangle delivers an anisotropy matrix for the argument Aniso in RMmodel in two dimensions. RMangle requires one two strechting values, passed by ratio or diag, and an angle.

In two dimensions and with angle equal to $a$ and diag equal to $(d1, d2)$ the anisotropy matrix $A$ is A = diag(d1, d2) %*% matrix(ncol=2, c(cos(a), sin(a), -sin(a), cos(a)))

In three dimensions and with angle equal to $a$, second angle $L$ and diag equal to $(d1, d2, d3)$ the anisotropy matrix $A$ is A = diag(d1, d2, d3) %*% matrix(ncol=3, c(cos(a) * cos(L), sin(a) * cos(L), sin(L), -sin(a), cos(a), 0, -cos(a) * sin(L), -sin(a) * sin(L), cos(L) )) i.e. $Ax$ turns a vector x first in $x-z$ plane, then in the $x-y$ plane.

Usage

RMangle(angle, lat.angle, ratio, diag)

Arguments

angle
anglea
lat.angle
second angle; in 3 dimensions only
ratio
equivalent to diag=c(1, 1/ratio); in 2 dimensions only
diag
the diagonal components of the matrix

Value

RMangle returns an object of class RMmodel.

See Also

RMtrafo, RMmodel

Examples

Run this code

RFoptions(seed=0) ## *ANY* simulation will have the random seed 0; set
##                   RFoptions(seed=NA) to make them all random again

model <- RMexp(Aniso=RMangle(angle=pi/4, ratio=3))
plot(model, dim=2)

x <- seq(0, 2, 0.05)
z <- RFsimulate(x, x, model=model)
plot(z)


model <- RMexp(Aniso=RMangle(angle=pi/4, lat.angle=pi/8, diag=c(1,2,3)))
x <- seq(0, 2, 0.2)
z <- RFsimulate(x, x, x, model=model)
plot(z, MARGIN.slices=3)


## next models gives an example how to estimate the parameters back
n <- 20
x <- runif(n, 0, 10)
y <- runif(n, 0, 10)
coords <- expand.grid(x, y)
model <- RMexp(Aniso=RMangle(angle=pi/4, diag=c(1/4, 1/12)))
d <- RFsimulate(model, x=coords[, 1], y=coords[, 2], n=10)
estmodel <- RMexp(Aniso=RMangle(angle=NA, diag=c(NA, NA)))
unix.time(RFfit(estmodel, data=d, modus_operandi='sloppy'))



Run the code above in your browser using DataLab