我有一个二维矩阵,我想在这个矩阵中找到 (i,j) 的邻域,分别在 x 和 y 方向上具有 M 和 N 大小。我知道这很容易做到,但我的问题是当 (i,j) 靠近角落并且 M 和 N 很大时!在这种情况下,我不想超过矩阵。MATLAB中是否有针对此问题的任何功能或简单的解决方案?
问问题
1265 次
1 回答
5
如果我理解正确,您想从矩阵中提取子矩阵,子矩阵居中从行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);
于 2012-09-14T07:24:21.430 回答