首页 > 解决方案 > 计算矩阵中的 nXn - R?

问题描述

我将图像转换为 0 和 1 的 100x100 矩阵。

ntile 是 nXn 选择。我正在尝试计算矩阵中有多少 2 个图块,最左边的 2 个条目是 1,最右边的两个条目是 0。

例如

[1 0]
[1 0]

关于如何开始这个的任何想法?我对 R 很陌生。非常感谢。

标签: r

解决方案


您可以对尺寸等于 的较大矩阵的所有块进行子集化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

推荐阅读