RMangle: Anisotropy matrix given by angle

Description Usage Arguments Value See Also Examples

View source: R/RMmodels.R

Description

RMangle delivers an anisotropy matrix for the argument Aniso in RMmodel in two dimensions. RMangle requires one or two stretching 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 the x-z plane, then in the x-y plane.

Usage

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

Arguments

angle

angle a

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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 model 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)))
system.time(RFfit(estmodel, data=d, modus_operandi='sloppy'))

RandomFields documentation built on Jan. 19, 2022, 1:06 a.m.