1

我有一个二维矩阵,我想在这个矩阵中找到 (i,j) 的邻域,分别在 x 和 y 方向上具有 M 和 N 大小。我知道这很容易做到,但我的问题是当 (i,j) 靠近角落并且 M 和 N 很大时!在这种情况下,我不想超过矩阵。MATLAB中是否有针对此问题的任何功能或简单的解决方案?

4

1 回答 1

5

如果我理解正确,您想从矩阵中提取子矩阵,子矩阵居中从行i-Mi+Mj-Nj+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);
于 2012-09-14T07:24:21.430 回答