【发布时间】:2018-02-28 04:59:05
【问题描述】:
我有一个包含一些非零(比如说=11)元素的矩阵
a=zeros(6,3);
a(3,1)=11;
a(4,1)=11;
a(6,1)=11;
a(1,2)=11;
a
a =
0 11 0
0 0 0
11 0 0
11 0 0
0 0 0
11 0 0
我希望这些元素“扩散”到相邻的零元素,这意味着所有与非零相邻的零元素都应该变为非零。上述情况的预期输出应该是:
11 11 11
11 11 0
11 11 0
11 11 0
11 0 0
11 11 0
我的想法是将原始矩阵的梯度非零的所有点设置为非零:
[dx,dy] = gradient(a);
a(find(dx~=0))=11
a(find(dy~=0))=11
一个=
11 11 11 0 0 0 11 11 0 11 11 0 0 0 0 11 11 0一个=
11 11 11 11 11 0 11 11 0 11 11 0 0 0 0 11 11 0
但它不起作用,因为被非零元素包围的元素的梯度为零。对于我的示例中的元素 (5,1):-5.5 + 5.5 = 0
有人可以提出一些替代方法吗?
【问题讨论】: