2016-04-09 37 views

回答

2

简短的回答是,它确实既没有时间或空间采样。它试图进行空间采样,但最终受限于系统特定的时间采样率。

更多信息

绑定到任何WindowButtonMotionFcn of a figure回调时,执行仅当鼠标改变位置

只要用户在图形窗口中移动指针,就执行此回调函数。

在引擎盖下,imfreehand设置了WindowButtonMotionFcn的自定义回调,因此受到相同的约束。

对于imfreehand工具,这是有益的,因此当鼠标不移动时不会在同一位置记录多个点。这也意味着,采样率是可变的。

什么最快采样率真的取决于系统。每当鼠标移动一个像素时,您都无法保证(例如)获取样本,因为它受系统速率限制。因此,如果您在整个图形上快速移动鼠标,则不会注册开始位置和结束位置之间的所有像素位置。

如果您确实需要以特定速率采样鼠标位置,最好使用timer object来代替。

%// Sampling rate in Hz 
samplingRate = 30; 

t = timer('ExecutionMode', 'FixedRate', ... 
      'Period', 1/samplingRate, ... 
      'TimerFcn', @(s,e)disp(get(gcf, 'CurrentPoint'))); 

start(t); 
1

正如Suever解释的那样。 imfreehand被实现为鼠标移动/向下/向上调用的事件触发处理程序,类似于其他语言的UI框架。

它被触发的速率取决于系统/程序可以多快的速度pump messages。您可以执行的操作是指定触发事件如何排队(请参阅InterruptibleBusyAction属性)。