我加载一个数据文件并以八度音阶绘制它。但是在情节中,我想在情节上标记点的周期性出现。我使用 ginput() 函数进行标记。但是我看到的问题是,如果我标记了一个不应该标记的不同点,然后立即意识到我犯了错误,现在我想删除我最后一个标记的点,然后标记正确的点。我做不到。我发现有 MATLAB 函数 getpts() 可以执行相同的操作,但不存在八度版本的 getpts()。谁能帮帮我?示例:我要标记的序列是 1,2,3,4,5,6,7,8,9,10。但不小心我标记了 1,2,3,5 并意识到我做错了,然后按键盘上的删除按钮删除 5,然后我标记 4,然后标记 5。
问问题
307 次
1 回答
3
虽然 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
这是一种非常灵活的方法,允许您根据需要修改和添加功能(例如,根据按下的特定键添加不同的标记、随心所欲地绘制等)。
于 2020-03-13T10:24:14.380 回答