Mat*_*reu 2 matlab matrix nearest-neighbor
在Matlab中,我有一个矩阵,其中某些元素设置为零。例如:
0 1 0 0 0
2 5 0 3 0
0 0 0 0 0
0 5 0 2 1
Run Code Online (Sandbox Code Playgroud)
对于每个为零的矩阵元素,我想找到不为零的最近元素的索引。如果可能有多个索引,则应全部返回。这可能是一个聪明的解决方案,如何避免很多for-loop问题?
M = [
0 1 0 0 0
2 5 0 3 0
0 0 0 0 0
0 5 0 2 1
];
[D,IDX] = bwdist(M~=0)
Run Code Online (Sandbox Code Playgroud)
结果:
D =
1.0000 0 1.0000 1.0000 1.4142
0 0 1.0000 0 1.0000
1.0000 1.0000 1.4142 1.0000 1.0000
1.0000 0 1.0000 0 0
IDX =
2 5 5 14 14
2 6 6 14 14
2 6 6 14 20
8 8 8 16 20
Run Code Online (Sandbox Code Playgroud)
返回的值IDX
包含在中最接近非零值的线性索引M
。每个元素只返回一个索引。