Description Usage Arguments Details Value Author(s) See Also Examples
View source: R/halton.indicies.CRT.r
Computes Halton indices of D-dimensional points by solving the Chinese Remainder Theorem.
This function is slightly slower than halton.indices.vector
, but
it works for large problems.
1 2 3 4 5 6 7 8 | halton.indices.CRT(
hl.coords,
n.boxes,
D = 2,
b = c(2, 3),
delta = c(1, 1),
ll.corner = c(0, 0)
)
|
hl.coords |
nXD vector of coordinates for points. No points can be outside the bounding box or exactly on the right or top boundary. See Details. |
n.boxes |
DX1 vector containing number of Halton boxes in each dimension. |
D |
Number of dimensions |
b |
DX1 vector of bases to use in the Halton sequence. |
delta |
DX1 vector of study area bounding box extents in each dimension. Study area is
bounded by a cube in D space, which is |
ll.corner |
DX1 vector containing minimum coordinates in all dimensions. |
The Halton sequence maps the non-negative integers (the Halton indices) to D-space.
This routine does the inverse.
Given a point in D-space and a grid of Halton boxes, the point's Halton index
is any integer N which gets mapped to the Halton box containing the point.
(i.e., any integer in the set ${x:N = x mod C}$, where $C$
= prod(n.boxes)
).
This routine solves the Chinese Remainder Theorem to find Halton indices.
This routine loops over the points in hl.coords
, and as such minimizes memory usage
but sacrifices speed. For small problems, see halton.indices.vector
,
which computes indices by actually placing points in Halton boxes to find their indices.
No point can be less than it's corresponding ll.corner
. No point
can be equal to or greater than it's corresponding ll.corner + delta
.
Note: n.boxes
is checked for compatibility with b
. That is,
log(n.boxes, b)
must all be integers.
A nX1 vector of Halton indices corresponding to points in hl.coords
.
Trent McDonald
halton.indices.vector
, halton.indices
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | pt <- data.frame(x=0.43, y=0.64)
n.boxes <- c(16,9)
halton.indices.vector(pt, n.boxes) # should equal 70
# Plot Halton boxes and indices to check.
# pt should plot in box labeled 70
b <- c(2,3)
J <- log(n.boxes,b) # J must be integers
hl.ind <- halton( prod(n.boxes), 2,0 )
plot(c(0,1),c(0,1),type="n")
for( i in J[1]:1) abline(v=(0:b[1]^i)/b[1]^i, lwd=J[1]+1-i, col=i)
for( i in J[2]:1) abline(h=(0:b[2]^i)/b[2]^i, lwd=J[2]+1-i, col=i)
for( i in 1:prod(n.boxes)){
box.center <- (floor(n.boxes*hl.ind[i,]+.Machine$double.eps*10) + 1-.5)/n.boxes
text(box.center[1],box.center[2], i-1, adj=.5)
}
points(pt$x, pt$y, col=6, pch=16, cex=2)
# Longer vector
tmp <- data.frame(x=(0:100)/101,y=.2)
n.boxes <- c(16,9)
tmp.crt <- halton.indices.CRT(tmp, n.boxes)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.