View difference between Paste ID: JUUmnTSq and HcN8wAkL
SHOW: | | - or go back to the newest paste.
1
somPEs <- 36   # user defined constant specific to dataset dimensionality
2
inputPEs <- 6; # arbitrary constant specific to dataset dimensionality
3
hm <- matrix(c(c(1:8),rep(0,somPEs-length(c(1:8)))), nrow=sqrt(somPEs), ncol=sqrt(somPEs))
4
hm2 <- as.vector(matrix(hm, byrow=TRUE))  
5
initial_w <- matrix(1, nrow=somPEs, ncol=inputPEs) 
6
w <- t(apply(initial_w, 1, function(i) runif(i)));
7
8
# Do fences, weight distances.
9
fence_edges = matrix(0, nrow=somPEs, ncol=4); # cols are top, bottom, left, right borders of each somPE
10
fence_diagonals = matrix(0, nrow=somPEs, ncol=4); # cols are top left, top right, bottom left, bottom right
11
# Reshape w to a 3D matrix of dimension: c(sqrt(somPEs), sqrt(somPEs), inputPEs)
12
dim(w) <- c(sqrt(somPEs), sqrt(somPEs), inputPEs)
13
w <- aperm(w, c(2, 1, 3))
14
  
15
# Plot weight distance between adjacent somPEs in all directions in grayscale
16
it = 1;
17
for (i in 1:sqrt(somPEs)) {
18
  for (j in 1:sqrt(somPEs)) {
19
    if (i>1 && i<sqrt(somPEs)) {
20
      if (j>1 && j<sqrt(somPEs)) {
21
        for (k in 1:inputPEs) {
22
          fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k]));
23
          fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k]));
24
          fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k]));
25
          fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k]));
26
          fence_diagonals[it,1] = fence_diagonals[it,1] + dist(rbind(w[i,j,k], w[i-1,j-1,k]));
27
          fence_diagonals[it,2] = fence_diagonals[it,2] + dist(rbind(w[i,j,k], w[i-1,j+1,k]));
28
          fence_diagonals[it,3] = fence_diagonals[it,3] + dist(rbind(w[i,j,k], w[i+1,j-1,k]));
29
          fence_diagonals[it,4] = fence_diagonals[it,4] + dist(rbind(w[i,j,k], w[i+1,j+1,k]));
30
        }
31
      } else if (j==1) {
32
        for (k in 1:inputPEs) {
33
          fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k]));
34
          fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k]));
35
          fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k]));
36
          fence_diagonals[it,2] = fence_diagonals[it,2] + dist(rbind(w[i,j,k], w[i-1,j+1,k]));
37
          fence_diagonals[it,4] = fence_diagonals[it,4] + dist(rbind(w[i,j,k], w[i+1,j+1,k]));
38
        }             
39
      } else { # j==10
40
        for (k in 1:inputPEs) {
41
          fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k]));
42
          fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k]));
43
          fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k]));
44
          fence_diagonals[it,1] = fence_diagonals[it,1] + dist(rbind(w[i,j,k], w[i-1,j-1,k]));
45
          fence_diagonals[it,3] = fence_diagonals[it,3] + dist(rbind(w[i,j,k], w[i+1,j-1,k]));
46
        }
47
      }
48-
      cat(sprintf("I should be 1: %d, %d, %d", i, j, k))
48+
49
      if (j>1 && j<sqrt(somPEs)) {
50
        for (k in 1:inputPEs) {
51
          fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k]));
52
          fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k]));
53
          fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k]));
54
          fence_diagonals[it,3] = fence_diagonals[it,3] + dist(rbind(w[i,j,k], w[i+1,j-1,k]));
55
          fence_diagonals[it,4] = fence_diagonals[it,4] + dist(rbind(w[i,j,k], w[i+1,j+1,k]));
56
        }        
57
      } else if (j==1) {
58
        for (k in 1:inputPEs) {
59
          fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k]));
60
          fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k]));
61
          fence_diagonals[it,4] = fence_diagonals[it,4] + dist(rbind(w[i,j,k], w[i+1,j+1,k]));
62
        }
63
      } else { # j==10
64
        for (k in 1:inputPEs) {
65
          fence_edges[it,2] = fence_edges[it,2] + dist(rbind(w[i,j,k], w[i+1,j,k]));
66
          fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k]));
67
          fence_diagonals[it,3] = fence_diagonals[it,3] + dist(rbind(w[i,j,k], w[i+1,j-1,k]));
68
        }
69
      }
70
    } else { # i==10
71-
      cat(sprintf("I should be 10: %d", i))        
71+
72
        for (k in 1:inputPEs) {
73
          fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k]));
74
          fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k]));
75
          fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k]));
76
          fence_diagonals[it,1] = fence_diagonals[it,1] + dist(rbind(w[i,j,k], w[i-1,j-1,k]));
77
          fence_diagonals[it,2] = fence_diagonals[it,2] + dist(rbind(w[i,j,k], w[i-1,j+1,k]));
78
        }
79
      } else if (j==1) {
80
        for (k in 1:inputPEs) {
81
          fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k]));
82
          fence_edges[it,4] = fence_edges[it,4] + dist(rbind(w[i,j,k], w[i,j+1,k]));
83
          fence_diagonals[it,2] = fence_diagonals[it,2] + dist(rbind(w[i,j,k], w[i-1,j+1,k]));
84
        }
85
      } else { # j==10
86
        for (k in 1:inputPEs) {
87
          fence_edges[it,1] = fence_edges[it,1] + dist(rbind(w[i,j,k], w[i-1,j,k]));
88
          fence_edges[it,3] = fence_edges[it,3] + dist(rbind(w[i,j,k], w[i,j-1,k]));
89
          fence_diagonals[it,1] = fence_diagonals[it,1] + dist(rbind(w[i,j,k], w[i-1,j-1,k]));
90
        }
91
      }
92
    }
93
    it=it+1;
94
  }    
95
}   
96
mxEdges = max(max(fence_edges));
97
mxDiagonals = max(max(fence_diagonals));
98
fence_edges = fence_edges/mxEdges;
99
fence_diagonals = fence_diagonals/mxDiagonals;