【问题标题】:number of elements surrounding an element in a matrix, matlab矩阵中元素周围的元素数,matlab
【发布时间】:2012-11-26 05:30:24
【问题描述】:

我需要编写一个函数来查找矩阵中单元格(行、列)的“深度”。

给定任何 nxm 矩阵,例如 mat = ones(6,6)..

mat =

     1     1     1     1     1     1
     1     1     1     1     1     1
     1     1     1     1     1     1
     1     1     1     1     1     1
     1     1     1     1     1     1
     1     1     1     1     1     1

结果是:

thick =

     1     1     1     1     1     1
     1     2     2     2     2     1
     1     2     3     3     2     1
     1     2     3     3     2     1
     1     2     2     2     2     1
     1     1     1     1     1     1

其中“1”是可能的最小厚度,定义边缘单元。每个额外的周围单元格增加 +1 厚度。如果 NAN 在边界上,则需要将它们视为“边缘”……但我想我可以在以后构建它。

想法?任何帮助表示赞赏。谢谢!

编辑:

删除了我原来的编辑,需要重新考虑我原来的问题。基本上我想找到矩阵中最深的单元格。矩阵不必是规则的,可以有孔。通常,这将使用多边形并找到适合该多边形内的最大圆的直径来完成,但我不确定在 MATLAB 中实现它的效率如何。嗯……

【问题讨论】:

  • 哈,Cody 的靶心矩阵 :)

标签: matlab matrix indexing surround thickness


【解决方案1】:

这是一维提示: 给定 m 作为矩阵:

m=ones(1,6)
i=1:length(m);
depth(i<=length(m)/2)=i(i<=length(m)/2);
depth(i>length(m)/2)=length(m)-i(i>length(m)/2)+1

m =

 1     1     1     1     1     1

深度 =

 1     2     3     3     2     1

【讨论】:

    【解决方案2】:

    您可以围绕以下逻辑构建一个函数(此处显示伪代码):

    depth(m):
       M = size(m,1);
       N = size(m,2);
       thick = zeros(M,N);
       for i=1:M
            for j = 1:N
                thick(i,j) = min(i,M-i+1,j,N-j+1);
       return thick;
    

    其中depth(m) 返回从 1 开始索引的 MxN 矩阵 m(i,j) 元素的深度。

    【讨论】:

      猜你喜欢
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-13
      • 1970-01-01
      相关资源
      最近更新 更多