如何解决以与 Ginput 相同的方式从 Ginputc 获取子图编号以更快的 Ginput 回答
我试图用在 fileexchange 上找到的函数 ginput
替换函数 ginputc
:
Custom GINPUT from Jiro。我发现 ginput
第一次调用时启动很慢。 ginputc
更快。
我在 ginput
中使用的一项功能无法通过 ginputc
进行复制。当鼠标点击它时,我得到了子图编号。
此处针对 ginput
进行了说明:
get-subplot-number-from-ginput
figure,hAx_mine(1)=subplot(1,3,1); hAx_mine(2)=subplot(1,2);hAx_mine(3)=subplot(1,3);
[x,y,button] = ginput(1);
[Lia,Locb]=ismember(gca,hAx_mine);
disp(['Locb gives the subplot number that you have clicked: ' num2str(Locb)])
如果您在 ginputc
中尝试相同的操作,无论您单击哪个子图,它都会给出最后一个子图:
figure,button] = ginputc(1);
[Lia,hAx_mine);
disp(['Locb gives the subplot number that you have clicked: ' num2str(Locb)])
...
[x,button,ax] = ginputc(1);
[Lia,Locb]=ismember(ax,hAx_mine);
...
但这也行不通。我想 ginputc
确实以某种方式改变了 gca
,但经过几个小时的尝试,我还没有找到原因以及如何解决它。
解决方法
然而……我并没有放弃,而是没有对ginputc
进行排序,而是专注于改进ginput
。最初的目标是因为 ginput
非常慢,所以为什么不尝试改进它?
在该函数中,当处理新的 Matlab 工具栏时,setupFcn
的速度很慢。 setupFcn
的作用是禁用工具栏,以便在您使用 ginput
时它不会出现。
然而这个工具栏并不是很烦人,为什么要隐藏它呢?因此,我将 ginput
复制并重命名为 ginput_mine
,以便我可以对其进行如下更改:
- 我评论了从第 221 行(禁用 AxesToolbar)到第 232 行(12 行)的代码
- 我还在第 268 行(恢复轴工具栏)到第 271 行(4 行)的
restoreFcn
中评论了第二名
它的作用是停止 ginput
以将 toolbarVisible
设置为关闭(并在 2. 恢复工具栏)。这导致更快的功能。我还注意到它的效果更好,因为它改进了我的点击注册,而不是错过了很多点击。
我不确定通过这种调整,ginput
的所有功能是否仍然有效,但我认为是这样。我的工具是一个标注图像的注释界面,我真的很高兴为我的用户让它变得更加流畅:-)
2021 年 3 月 28 日更新: 根据 Cris 的评论,我想我可以通过添加额外的步骤来改进我的解决方案。仅当您不再需要图中的工具栏时,此额外步骤才有用。 您所做的是(使用上述解决方案)在 ginput 的开头或在启动 ginput 之前添加 2 行,并在图中显示:
set(Fig,'MenuBar','none')
set(Fig,'ToolBar','none')
我可能会做得更快。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。