MATLAB中imfreehand工具的采样率?

时间:2016-04-09 19:55:44

标签: matlab sampling onmousemove

我想用imfreehand在MATLAB Plot中手绘路径。出于分析目的,我需要imfreehand工具的采样率。它是使用时间采样还是空间采样?

2 个答案:

答案 0 :(得分:3)

简短的回答是,既不时间或空间采样。它试图进行空间采样,但最终受到系统特定时间采样率的限制。

更多信息

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

  

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

在幕后,imfreehandWindowButtonMotionFcn设置了自定义回调,因此受到相同的限制。

对于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 :(得分:1)

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

触发的速度取决于系统/程序的速度pump messages。您可以做的是指定触发事件的排队方式(请参阅InterruptibleBusyAction属性)。