如何在与K值元素相邻的矩阵中找到值R的所有元素? - Matlab

时间:2017-04-27 11:33:42

标签: matlab matrix

我有一个值为1,0和2的矩阵,我希望将所有与2相邻的零改为2。任何有效的方法来解决这个问题?

需要解决的最后一个问题是,我需要对从矩阵中最初设置的2组中可以达到的所有0进行“着色”。 (运行上面的“函数”n ^ 2次),人们可以将问题看作是一个破坏问题,其中1是矩形网格的阻塞位置。

1 个答案:

答案 0 :(得分:2)

首先定义邻域。如果你想要8个邻居使用这个内核:

kernel = [1 1 1;1 0 1; 1 1 1];

如果你想要4个直接邻居使用这个内核:

kernel = [0 1 0;1 0 1; 0 1 0];

您可以使用conv2来测试某个点的邻域是否包含2。

test_neighbors = conv2(A==2, kernel,'same') > 0;

该点的值也应为0

test_A = A == 0;

然后应满足两个条件:

test = test_neighbors & test_A;

将这些点设置为2

A(test) = 2;

一体化:

A(conv2(A==2, kernel,'same') & ~A)=2;