Нахождение индексов существующих элементов в радиусе определенного элемента - PullRequest
0 голосов
/ 04 сентября 2018

У меня большая матрица 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 дают мне отрицательные числа (потому что это дает индексы элементов или пикселей, которые не существуют). Есть ли способ изменить этот код так, чтобы я получал только положительные индексы (индексы элементов, которые действительно существуют)?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Я думаю, что есть компактный (не беспокоиться size()) способ написания этого

набор xpos, ypos и range

и

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

должен сделать трюк

0 голосов
/ 05 сентября 2018

сначала, если вы используете обозначения x, y, чем n1=size(A,2); n2=size(A,1).

секунда, используйте meshgrid, чтобы получить все индексы в обоих измерениях:

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

A_sub = A(X(:),Y(:));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...