, . Math SE .
-
,
field <- matrix(0,10,10)
field[3:4,3:4]<-1
field[6:7,7]<-1
field[7:8,8]<-1
field[8,6]<-1
simil <- function(m1, m2)
{
if (any(dim(m1) != dim(m2)))
stop(paste("ERROR: matrices are not the same size: ",
nrow(m1), "x", ncol(m1), "vs",
nrow(m2), "x", ncol(m2)))
m1 <- as.vector(m1)
m2 <- as.vector(m2)
similarity <- (m1%*%m2)/sqrt((m1%*%m1) * (m2%*%m2))
return(similarity)
}
, , ,
m1 <- field[2:5, 2:5]
m2 <- field[6:9, 6:9]
m3 <- field[4:7, 7:10]
> simil(m1, m2)
[,1]
[1,] 0.6708204
> simil(m1, m3)
[,1]
[1,] 0
> simil(m2, m3)
[,1]
[1,] 0.2581989
, :
> simil(m1,m1)
[,1]
[1,] 1
> simil(m1,!m1)
[,1]
[1,] 0
, for, , .
field.len <- 4
subfields <- list()
i <- 1
for (col in (1:(ncol(field)-field.len+1)))
{
for (row in (1:(nrow(field)-field.len+1)))
{
submatrix <- field[row:(row+field.len-1),col:(col+field.len-1)]
if (sum(submatrix) > 0)
{
subfields[[i]] <- submatrix
i <- i+1
}
}
}
, ,
simil.matrix <- sapply(subfields, function(sf1)
{
res <- sapply(subfields, function(sf2)
{
res <- simil(sf1, sf2)
res
})
res
})
:
> simil.matrix[1,24]
[1] 0.8660254
> subfields[[1]]
[,1] [,2] [,3] [,4]
[1,] 0 0 0 0
[2,] 0 0 0 0
[3,] 0 0 1 1
[4,] 0 0 1 1
> subfields[[24]]
[,1] [,2] [,3] [,4]
[1,] 0 0 0 0
[2,] 0 0 0 0
[3,] 0 0 1 0
[4,] 0 0 1 1
> simil.matrix[10,5]
[1] 0.25
> subfields[[10]]
[,1] [,2] [,3] [,4]
[1,] 0 0 0 0
[2,] 1 1 0 0
[3,] 1 1 0 0
[4,] 0 0 0 0
> subfields[[5]]
[,1] [,2] [,3] [,4]
[1,] 0 0 0 0
[2,] 0 0 0 0
[3,] 0 1 1 0
[4,] 0 1 1 0
> simil.matrix[4,5]
[1] 0
> subfields[[4]]
[,1] [,2] [,3] [,4]
[1,] 0 0 1 1
[2,] 0 0 0 0
[3,] 0 0 0 0
[4,] 0 0 0 0
> subfields[[5]]
[,1] [,2] [,3] [,4]
[1,] 0 0 0 0
[2,] 0 0 0 0
[3,] 0 1 1 0
[4,] 0 1 1 0
, , , , .