R/dist2_w.R

dist2_w=function (X, C, weight)
{
  for (i in 1:dim(X)[1]){
    X[i,]=sqrt(weight)*X[i,]
  }
    for (i in 1:dim(C)[1]) {
    C[i, ] = sqrt(weight) * C[i, ]
  }
  ndata = nrow(X)
  ncentres = nrow(C)
  sumsqX = rowSums(X^2)
  sumsqC = rowSums(C^2)
  XC = 2 * (X %*% t(C))
  res = matrix(rep(sumsqX, times = ncentres), ndata, ncentres) +
    t(matrix(rep(sumsqC, times = ndata), ncentres, ndata)) -
    XC
  res[res < 0] = 0
  return(res)
}
pfruan/abSNF documentation built on Sept. 16, 2022, 5:40 a.m.