查找特定元素半径内现有元素的索引

时间:2018-09-04 18:39:44

标签: matlab matrix indexing

我有一个大矩阵A,需要能够找到给定点range的特定半径((xpos,ypos))内所有元素的坐标。以下是我通常为此使用的:

    subx = max(1,xpos-range):min(n1,xpos+range);
    suby = max(1,ypos-range):min(n2,ypos+range);
    A_sub = A(subx,suby); %This is the submatrix around matrix A

其中n1size(A,1),而n2是矩阵的长度。这段代码为我提供了范围内所有元素的索引。当点(xpos,ypos)位于矩阵的最边缘时,会遇到我遇到的问题,例如xpos-rangeypos-range给我负数(因为它给出的元素或像素的索引不存在)。有没有办法修改这段代码,使我只得到正索引(实际上存在的元素的索引)?

2 个答案:

答案 0 :(得分:1)

首先,如果您使用的是x,y表示法,请使用n1=size(A,2); n2=size(A,1)

秒,使用meshgrid获取两个维度的所有索引:

[X,Y] = meshgrid(subx,suby)

A_sub = A(X(:),Y(:));

答案 1 :(得分:0)

我认为这是一种紧凑的方式(不打扰size()

设置xposyposrange

A_sub = A(max(1,xpos-range):min(end,xpos+range),max(1,ypos-range):min(end,ypos+range))

应该可以解决问题