Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Matlab中检查矩阵元素的周围邻居_Matlab_Matrix - Fatal编程技术网

在Matlab中检查矩阵元素的周围邻居

在Matlab中检查矩阵元素的周围邻居,matlab,matrix,Matlab,Matrix,我有一个480×640的矩阵a。对于每个像素,我要检查它的邻居。像素的邻域由值N确定。例如,这是矩阵a的一部分,当N=3时,所有的零都是像素X的邻居: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

我有一个480×640的矩阵
a
。对于每个像素,我要检查它的邻居。像素的邻域由值
N
确定。例如,这是矩阵
a
的一部分,当
N=3
时,所有的零都是像素
X
的邻居:

0   0   0   0   0   0   0
0   0   0   0   0   0   0
0   0   0   0   0   0   0
0   0   0   X   0   0   0
0   0   0   0   0   0   0
0   0   0   0   0   0   0
0   0   0   0   0   0   0
如图所示,因为
N=3
,所有这些零都是像素
X
的邻居。问题在于
X
是否位于索引
N=3
之前。在这里,邻域将是具有一个值的像素:

    X   1   1   1   0   0   0
    1   1   1   1   0   0   0
    1   1   1   1   0   0   0
    1   1   1   1   0   0   0
    0   0   0   0   0   0   0
    0   0   0   0   0   0   0
    0   0   0   0   0   0   0

有谁能建议如何处理这个问题吗?

最简单的方法是,在数组中填充值,这些值对于所检查的任何内容都不会返回true(例如,如果要查找非零,请填充零,或者如果要查找有限值,请填充
NaN
padarray
函数可以为您执行此操作,但需要图像处理工具箱*。否则,您可以自己填充阵列。例如,一种未优化的方法可能是

A = rand(m,n);
Apadded = [zeros(N,2*N+n); [zeros(m,N), A, zeros(m,N)]; zeros(N,2*N+n)];
for i = N+1:N+m+1
    for j = N+1:N+n+1
        % Process neighborhood of A(i,j)  
    end
end
*还需要注意的是,这些在图像处理中常见的“滑动邻域”操作是