Есть ли какая-нибудь функция для getpts () из MATLAB в Octave? - PullRequest
2 голосов
/ 13 марта 2020

Я загружаю файл данных и строю его в октаве. Но на графике хочу отметить периодичность появления точек на графике c. Я использовал функцию ginput () для маркировки. Но проблема, которую я вижу, заключается в том, что если я отмечу другую точку, которая не должна была быть отмечена, а затем сразу же пойму, что я допустил ошибку, теперь я хочу удалить свою последнюю отмеченную точку и затем отметить правильную точку. Я не могу это сделать. Я обнаружил, что есть функция getpts () MATLAB, которая делает то же самое, но октавная версия getpts () отсутствует. Кто-нибудь может мне помочь, пожалуйста? Пример: последовательность, которую я хочу отметить: 1,2,3,4,5,6,7,8,9,10. Но случайно я отмечаю 1,2,3,5 и понимаю, что сделал ошибку, а затем нажимаю кнопку удаления на клавиатуре, которая удаляет 5, а затем я отмечаю 4, а затем 5.

1 Ответ

3 голосов
/ 13 марта 2020

Хотя getpts не реализован сам по себе, создать небольшую функцию, которая получает входные данные один за другим через ginput и проверяет их, чтобы получить желаемое поведение, довольно легко. Например,

X = []; Y = [];
while true
  [x, y, b] = ginput(1);
  if     b == 8    ,   X(end)=[];    Y(end)=[];    % backspace key pressed
  elseif isempty(b),   break;                      % enter key pressed
  else             ,   X(end+1)=x;   Y(end+1)=y;   % any other key
  end
  disp([X;Y]);   fprintf('\n');   fflush(1);   % Optional terminal output
end

Это очень гибкий подход, который позволяет вам изменять и добавлять функциональные возможности по своему усмотрению (например, добавлять различные маркеры, основанные на указанной нажатой клавише c, отображать как вы go и т. Д.). c).

...