我想用imfreehand
在MATLAB Plot中手绘路径。出于分析目的,我需要imfreehand
工具的采样率。它是使用时间采样还是空间采样?
答案 0 :(得分:3)
简短的回答是,既不时间或空间采样。它试图进行空间采样,但最终受到系统特定时间采样率的限制。
更多信息
当鼠标改变位置时,任何绑定到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 :(得分:1)
正如Suever解释的那样。 imfreehand
被实现为一个事件触发的处理程序,在鼠标移动/向下/向上调用,类似于其他语言的UI框架。
触发的速度取决于系统/程序的速度pump messages。您可以做的是指定触发事件的排队方式(请参阅Interruptible
和BusyAction
属性)。