create.gaussians <- function(numb.clust=5, varx=1, vary=1) { g.1 <- seq(-10, 10, by=4) g.2 <- seq(-10, 10, by=4) possible.c <- expand.grid(g.1,g.2) possible.counts <- c(100, 150, 200,250, 300, 350, 400, 450, 500) clust.mean <- possible.c[sample(dim(possible.c)[1], numb.clust),] clust.count <- possible.counts[sample(length(possible.counts), numb.clust, replace=T)] Data <- {} for (c in 1:numb.clust) { X.1 <- rnorm(clust.count[c], clust.mean[c,1], varx) Y.1 <- rnorm(clust.count[c], clust.mean[c,2], vary) Data <- rbind(Data, cbind(X.1, Y.1, c)) } Data } #==================================================== # Create a Gaussian cloud mean (x,y) variance (varx,vary) # which is rotated by the angle rot #==================================================== #==================================================== # Create a Gaussian cloud mean (x,y) variance (varx,vary) # which is rotated by the angle rot #==================================================== Make.Gaussian <- function(n, x, y, varx = 1, vary = 1, rot) { X.1 <- rnorm(n, 0, varx) Y.1 <- rnorm(n, 0, vary) Z.1 <- R.2D(cbind(X.1, Y.1), rot) sweep(Z.1, 2, c(x, y), '+') }