我有一个大矩阵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
其中n1
是size(A,1)
,而n2
是矩阵的长度。这段代码为我提供了范围内所有元素的索引。当点(xpos,ypos)
位于矩阵的最边缘时,会遇到我遇到的问题,例如xpos-range
或ypos-range
给我负数(因为它给出的元素或像素的索引不存在)。有没有办法修改这段代码,使我只得到正索引(实际上存在的元素的索引)?
答案 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()
)
设置xpos
,ypos
和range
和
A_sub = A(max(1,xpos-range):min(end,xpos+range),max(1,ypos-range):min(end,ypos+range))
应该可以解决问题