Description Usage Arguments Details Value Author(s) See Also Examples
View source: R/halton.indicies.vector.r
Computes Halton indices of an entire vector of points by matching them with a vector of the Halton sequence. This function is relatively fast, but can only handle reasonably sized vectors.
1 2 3 4 5 6 7 8  | halton.indices.vector(
  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  | 
n.boxes | 
 DX1 vector containing number of Halton boxes in each dimension.  | 
D | 
 Number of dimensions  | 
b | 
 DX1 vector of bases to use for each dimension  | 
delta | 
 DX1 vector of study area extents in each dimension.  Study area 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 uses the Halton sequence and modular arithmetic to find Halton indices.
This means several vectors of size nrow(hl.coords) must be created.  Depending on 
memory, this approach fails for a sufficiently large number of points. When this routine 
fails, see the slower halton.indices.CRT, which computes indices by solving 
the Chinese Remainder Theorem.
A nX1 vector of Halton indices corresponding to points in hl.coords.
Trent McDonald
halton.indices.CRT, halton.indices
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21  | # Compute Halton box index for one value
pt <- data.frame(x=0.43, y=0.64)
n.boxes <- c(16,9) 
halton.indices.vector(pt, n.boxes) # should equal 70
# The following should also equal 70
pt <- data.frame(x=143, y=164)
halton.indices.vector(pt, n.boxes, delta=c(100,100), ll.corner=c(100,100)) 
# Plot Halton boxes and indices to check
b <- c(2,3)
J <- c(4,2)  # or, J <- log(n.boxes) / log(b) # = (log base 2 of 16, log base 3 of 9)
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)
 | 
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.