Фильтруйте массив 2D точек в Matlab, чтобы соответствовать критериям - PullRequest
0 голосов
/ 08 октября 2019

У меня есть список x, y точек, подобных этому

points = [[1,2];[2,5];[7,1]...[x,y]]

Как я могу отфильтровать массив точек, чтобы получить только те точки, которые соответствуют критериям

, например, вернуть все точкис 0

У меня есть, но выдает ошибку.

points(points(1,:) > 0 && points(1,:) < 5 , points(:,1) > 0 && points(:,1) < 2)

Любая помощь будет принята с благодарностью!

1 Ответ

2 голосов
/ 08 октября 2019

Есть несколько проблем с вашим кодом:

  • Вам необходимо заменить && на &. Разница в том, что && только для скаляров и выполняет короткое замыкание (т. Е. 0 && x работает, даже если x не определено).
  • Вы должны использовать points(:,1) и points(:,2) для x и y столбцов соответственно в логических условиях.
  • Индексация также неверна. Результатом ваших логических условий является логический индекс, который должен применяться только к первому измерению (для выбора нужных строк), с : в качестве индекса во втором измерении (для сохранения всех столбцов):

    points(points(:,1) > 0 & points(:,1) < 5 & points(:,2) > 0 & points(:,2) < 2, :)
    
  • В качестве примечания, внутренние скобки в определении points не нужны:

    points = [1,2; 2,5; 7,1];
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...