Octave 中 MATLAB 的 getpts() 有什么函数吗?

Is there any function for getpts() of MATLAB in Octave?

我加载了一个数据文件并以八度音程绘制它。但是在情节中,我想标记情节上点的周期性出现。我使用 ginput() 函数进行标记。但我看到的问题是,如果我标记了一个不应该标记的不同点然后立即意识到我犯了错误,现在我想删除我最后标记的点然后标记正确的点。我做不到。我发现有 MATLAB 函数 getpts() 做同样的事情,但 getpts() 的八度版本不存在。谁能帮帮我吗? 例子: 我要标记的序列是 1,2,3,4,5,6,7,8,9,10。 但是不小心我标记了 1,2,3,5 并且意识到我做错了然后按删除 5 的键盘上的删除按钮然后我标记 4 然后 5。

虽然 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

这是一种非常灵活的方法,允许您根据需要修改和添加功能(例如,根据按下的特定键添加不同的标记、随手绘制等)。