Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- somPEs <- 36 # user defined constant specific to dataset dimensionality
- inputPEs <- 6; # arbitrary constant specific to dataset dimensionality
- hm <- matrix(c(c(1:8),rep(0,somPEs-length(c(1:8)))), nrow=sqrt(somPEs), ncol=sqrt(somPEs))
- hm2 <- as.vector(matrix(hm, byrow=TRUE))
- initial_w <- matrix(1, nrow=somPEs, ncol=inputPEs)
- w <- t(apply(initial_w, 1, function(i) runif(i)));
- # Do fences, weight distances.
- fence_edges = matrix(0, nrow=somPEs, ncol=4); # cols are top, bottom, left, right borders of each somPE
- fence_diagonals = matrix(0, nrow=somPEs, ncol=4); # cols are top left, top right, bottom left, bottom right
- # Reshape w to a 3D matrix of dimension: c(sqrt(somPEs), sqrt(somPEs), inputPEs)
- dim(w) <- c(sqrt(somPEs), sqrt(somPEs), inputPEs)
- w <- aperm(w, c(2, 1, 3))
- # Plot weight distance between adjacent somPEs in all directions in grayscale
- it = 1;
- for (i in 1:sqrt(somPEs)) {
- for (j in 1:sqrt(somPEs)) {
- if (i>1 && i<sqrt(somPEs)) {
- if (j>1 && j<sqrt(somPEs)) {
- for (k in 1:inputPEs) {
- fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k]));
- fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k]));
- fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k]));
- fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k]));
- fence_diagonals[it,1] = fence_diagonals[it,1] + dist(rbind(w[i,j,k], w[i-1,j-1,k]));
- fence_diagonals[it,2] = fence_diagonals[it,2] + dist(rbind(w[i,j,k], w[i-1,j+1,k]));
- fence_diagonals[it,3] = fence_diagonals[it,3] + dist(rbind(w[i,j,k], w[i+1,j-1,k]));
- fence_diagonals[it,4] = fence_diagonals[it,4] + dist(rbind(w[i,j,k], w[i+1,j+1,k]));
- }
- } else if (j==1) {
- for (k in 1:inputPEs) {
- fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k]));
- fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k]));
- fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k]));
- fence_diagonals[it,2] = fence_diagonals[it,2] + dist(rbind(w[i,j,k], w[i-1,j+1,k]));
- fence_diagonals[it,4] = fence_diagonals[it,4] + dist(rbind(w[i,j,k], w[i+1,j+1,k]));
- }
- } else { # j==10
- for (k in 1:inputPEs) {
- fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k]));
- fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k]));
- fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k]));
- fence_diagonals[it,1] = fence_diagonals[it,1] + dist(rbind(w[i,j,k], w[i-1,j-1,k]));
- fence_diagonals[it,3] = fence_diagonals[it,3] + dist(rbind(w[i,j,k], w[i+1,j-1,k]));
- }
- }
- } else if (i==1) {
- if (j>1 && j<sqrt(somPEs)) {
- for (k in 1:inputPEs) {
- fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k]));
- fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k]));
- fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k]));
- fence_diagonals[it,3] = fence_diagonals[it,3] + dist(rbind(w[i,j,k], w[i+1,j-1,k]));
- fence_diagonals[it,4] = fence_diagonals[it,4] + dist(rbind(w[i,j,k], w[i+1,j+1,k]));
- }
- } else if (j==1) {
- for (k in 1:inputPEs) {
- fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k]));
- fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k]));
- fence_diagonals[it,4] = fence_diagonals[it,4] + dist(rbind(w[i,j,k], w[i+1,j+1,k]));
- }
- } else { # j==10
- for (k in 1:inputPEs) {
- fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k]));
- fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k]));
- fence_diagonals[it,3] = fence_diagonals[it,3] + dist(rbind(w[i,j,k], w[i+1,j-1,k]));
- }
- }
- } else { # i==10
- if (j>1 && j<sqrt(somPEs)) {
- for (k in 1:inputPEs) {
- fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k]));
- fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k]));
- fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k]));
- fence_diagonals[it,1] = fence_diagonals[it,1] + dist(rbind(w[i,j,k], w[i-1,j-1,k]));
- fence_diagonals[it,2] = fence_diagonals[it,2] + dist(rbind(w[i,j,k], w[i-1,j+1,k]));
- }
- } else if (j==1) {
- for (k in 1:inputPEs) {
- fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k]));
- fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k]));
- fence_diagonals[it,2] = fence_diagonals[it,2] + dist(rbind(w[i,j,k], w[i-1,j+1,k]));
- }
- } else { # j==10
- for (k in 1:inputPEs) {
- fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k]));
- fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k]));
- fence_diagonals[it,1] = fence_diagonals[it,1] + dist(rbind(w[i,j,k], w[i-1,j-1,k]));
- }
- }
- }
- it=it+1;
- }
- }
- mxEdges = max(max(fence_edges));
- mxDiagonals = max(max(fence_diagonals));
- fence_edges = fence_edges/mxEdges;
- fence_diagonals = fence_diagonals/mxDiagonals;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement