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
这是一种非常灵活的方法,允许您根据需要修改和添加功能(例如,根据按下的特定键添加不同的标记、随手绘制等)。
我加载了一个数据文件并以八度音程绘制它。但是在情节中,我想标记情节上点的周期性出现。我使用 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
这是一种非常灵活的方法,允许您根据需要修改和添加功能(例如,根据按下的特定键添加不同的标记、随手绘制等)。