0

我有一个包含二进制元素的二维矩阵 ( M) 。n x n我想扫描这个矩阵的对角线以过滤掉位模式,比如位模式111(位模式的长度是用户定义的)。

让我解释更多以使我的问题更清楚。过滤标准是这样的,如果

  1. M(i, j) == 1并且两个(在这种情况下)它的相邻邻居M(i-1, j-1)和然后M(i+1, j+1)也被保留,否则它被更改为 bit 。1M(i,j)10

  2. 或者,M(i,j) ==1并且它在同一对角线上至少有两个前面1的 s 或两个后面1的 s,那么即使条件 first 不正确,仍然M(i,j)应该保持1

我是 python 新手并且正在努力解决这个问题,所以任何解决这个问题的帮助/建议都将受到欢迎......

4

2 回答 2

0

我会帮助你开始,然后你可以尝试一下,看看你在哪里。

matrix = [[0, 1, 0], [1, 1, 1], [0, 1, 1]]

for i in range(len(matrix)):
    for j in range(len(matrix[i])):
        print(matrix[i][j])

现在您已经解析了矩阵,尝试找出比较,然后替换应该很容易。

于 2013-11-07T13:44:52.847 回答
0

如果您在视觉上查看可能会有所帮助,请尝试打印您的结果

matrix = [[0, 1, 0, 1], [1, 1, 1, 1], [0, 1, 1, 0], [1, 0, 1, 0]]

for i in range(len(matrix)):
    line = ''
    for j in range(len(matrix[i])):
        line += str(matrix[i][j]) + " "
    print(line)

diagonal = ''
for i in range(len(matrix)):
    for j in range(len(matrix[i])):
        if i == j:
            diagonal += str(matrix[i][j]) + ' '

print('Diagonal: ' + diagonal)

输出:

0 1 0 1 
1 1 1 1 
0 1 1 0 
1 0 1 0 
Diagonal: 0 1 1 0 

现在尝试一些实验,看看是否可以得到平行对角线。

于 2013-11-07T14:21:45.310 回答