【问题标题】:Convert adjacent elements of matrix in Matlab在Matlab中转换矩阵的相邻元素
【发布时间】:2015-03-09 14:37:01
【问题描述】:

我正在研究 Brushfire 算法,我需要创建一个循环,该循环将扫描矩阵并找到与 1 相邻的零并将“1”转换为“2”。假设我有一个 5 乘 5 的矩阵:

0   0   0   0   0
0   1   1   1   1
0   0   1   1   1
0   0   1   1   1
0   0   1   1   1

我能做到吗:

0   0   0   0   0
0   2   2   2   2
0   0   2   1   1
0   0   2   1   1
0   0   2   1   1

谢谢

【问题讨论】:

    标签: algorithm matlab matrix


    【解决方案1】:

    使用图像处理工具箱,算法将是:

    A = [0 0 0 0 0 
    0 1 1 1 1
    0 0 1 1 1
    0 0 1 1 1
    0 0 1 1 1];
    
    B = A;
    
    %# set pixels at border between 0 and 1 to 2
    B(imdilate(~A,true(3)) & A>0) = 2;
    

    【讨论】:

      【解决方案2】:

      您可以使用标准函数 conv2 使用 2D 卷积来实现。将您的矩阵表示为X

      mask = [0 1 0; 1 1 1; 0 1 0]; %// or [1 1 1; 1 1 1; 1 1 1] to include diagonal adjacency
      X(conv2(double(~X), mask, 'same') & X) = 2;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-20
        • 1970-01-01
        • 1970-01-01
        • 2012-11-11
        • 2012-09-10
        • 2018-10-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多