我有一个2D矩阵,我想在这个矩阵中找到(i,j)的邻域,分别在x和y方向上有M和N个尺寸。我知道这很容易,但我的问题是,当(i,j)接近角落时,M和N很大!在这种情况下,我不想超过矩阵。在MATLAB中是否存在针对此问题的任何函数或简单解决方案?
答案 0 :(得分: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);