Matlab 在特定位置查找邻居

Matlab 在特定位置查找邻居,matlab,image-processing,signal-processing,Matlab,Image Processing,Signal Processing,我有一个二维矩阵,我想在这个矩阵中找到(I,j)的邻域,在x和y方向上分别有M和N个大小。我知道这很容易做到,但我的问题是,当(I,j)接近拐角,M和N很大时!在这种情况下,我不想超过矩阵。MATLAB中有任何函数或简单的解决方案吗?如果我理解正确,您希望从矩阵中提取一个子矩阵,子矩阵的中心从行I-M到I+M和列j-N到j+N 如果是这种情况,并且您希望避免选择无效索引,则可以使用最小/最大函数切掉选择,例如: matrix = randi(10,20,15); siz = size(matri

我有一个二维矩阵,我想在这个矩阵中找到(I,j)的邻域,在x和y方向上分别有M和N个大小。我知道这很容易做到,但我的问题是,当(I,j)接近拐角,M和N很大时!在这种情况下,我不想超过矩阵。MATLAB中有任何函数或简单的解决方案吗?

如果我理解正确,您希望从矩阵中提取一个子矩阵,子矩阵的中心从行
I-M
I+M
和列
j-N
j+N

如果是这种情况,并且您希望避免选择无效索引,则可以使用最小/最大函数切掉选择,例如:

matrix = randi(10,20,15);
siz = size(matrix);

i=2;
j=5;
M=10;
N=3;

selectrows = max(1,i-M):min(siz(1),i+M);
selectcols = max(1,j-N):min(siz(2),j+N);
result = matrix(selectrows, selectcols);

如果我理解正确,您希望从矩阵中提取子矩阵,子矩阵居中从行
I-M
I+M
和列
j-N
j+N

如果是这种情况,并且您希望避免选择无效索引,则可以使用最小/最大函数切掉选择,例如:

matrix = randi(10,20,15);
siz = size(matrix);

i=2;
j=5;
M=10;
N=3;

selectrows = max(1,i-M):min(siz(1),i+M);
selectcols = max(1,j-N):min(siz(2),j+N);
result = matrix(selectrows, selectcols);

你说的“寻找邻居”是什么意思?您希望提取子矩阵(例如,条目(i,j)周围的3x3矩阵),还是希望在邻域上执行一些计算,例如,一些过滤器?你的问题要尽量具体一些。你说的“寻找邻居”是什么意思?您希望提取子矩阵(例如,条目(i,j)周围的3x3矩阵),还是希望在邻域上执行一些计算,例如,一些过滤器?你的问题要尽量具体一些。