我将图像转换为0和1的100x100矩阵。
ntile是nXn选择。我正在尝试计算矩阵中有2个图块,其中最左边的2个条目为1,最右边的2个条目为0。
例如
[1 0]
[1 0]
关于如何启动此功能的任何想法?我对R很陌生。非常感谢。
答案 0 :(得分:2)
您可以将尺寸大于ntile
的较大矩阵的所有块子集化,然后检查块中的所有元素是否与ntile
的相应元素匹配。
#Data
set.seed(1)
m = matrix(sample(1:0, 16, TRUE), 4)
m[3, 4] = 0
ntile = rbind(1:0, 1:0)
n = dim(ntile)
ans = t(sapply(n[1]:nrow(m), function(i){
sapply(n[2]:ncol(m), function(j){
temp = m[(i- nrow(ntile) + 1):i, (j - ncol(ntile) + 1):j]
all(temp == ntile)
})
}))
ans
# [,1] [,2] [,3]
#[1,] FALSE FALSE FALSE
#[2,] FALSE FALSE FALSE
#[3,] FALSE FALSE TRUE
sum(ans)
#[1] 1
答案 1 :(得分:1)
如果我正确理解了您的问题,这是一个简单的解决方案:
set.seed(123)
size <- 4
m <- matrix(sample(0:1, 12, replace = TRUE), size-1, size)
m <- rbind(m, c(0,0,1,0))
sum(m[1:(size-1),1:(size-1)] == 1 & m[2:size,1:(size-1)] == 1 &
m[1:(size-1),2:size] == 0 & m[2:size,2:size] == 0)
输入
[,1] [,2] [,3] [,4]
[1,] 0 1 1 0
[2,] 1 1 1 1
[3,] 0 0 1 0
[4,] 0 0 1 0
输出
# 1
您可以确保2个图块的数量为1。