Nothing
## #'conf_adjust: a function to procrustes adjust two matrices
## #'
## #'@param conf1 reference configuration, a numeric matrix
## #'@param conf2 another configuration, a numeric matrix
## #'@param verbose should adjustment be output; default to FALSE
## #'@param eps numerical accuracy
## #'@param itmax maximum number of iterations
## #'@return a list with ref.conf being the reference configuration, other.conf the adjusted coniguration and comparison.conf the comparison configuration
## #'@export
## conf_adjust<- function(conf1,conf2,verbose = FALSE,eps = 1e-12, itmax = 100)
## {
## x0 <- conf1
## n <- nrow(x0)
## ndim <- 2
## metric <- TRUE
## xx <- conf2
## kk <- diag(ndim)
## cc <- matrix(0, n, ndim)
## bb <- matrix(0, n, ndim)
## yy <- xx
## oloss <- Inf
## itel <- 1
## repeat {
## y0 <- matrix(0, n, ndim)
## y0 <- y0 + xx %*% kk
## y0 <- ((n - 1) * y0)/(n * (n - 2))
## zz <- matrix(0, n, ndim)
## zz <- zz + xx %*% kk
## xz <- crossprod(xx, zz)
## kk <- procruster(xz)
## nloss <- 0
## for (i in 1:n) {
## yy <- xx %*% kk
## yy[i,] <- n * y0[i, ]/(n - 1)
## yy <- yy - outer(rep(1, n), y0[i, ]/(n - 1))
## nloss <- nloss + sum((y0 - yy)^2)
## }
## if (verbose) {
## cat("Iteration: ", formatC(itel, digits = 3, width = 3),
## "Old Loss: ", formatC(oloss, digits = 10, width = 15,
## format = "f"), "New Loss: ", formatC(nloss,
## digits = 10, width = 15, format = "f"), "\n")
## }
## if (((oloss - nloss) < eps) || (itel == itmax)) {
## (break)()
## }
## itel <- itel + 1
## oloss <- nloss
## }
## x0 <- x0 %*% procruster(crossprod(x0,y0))
## result <- list(ref.conf = x0, other.conf = yy, comparison.conf = y0)
## result
## }
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.