2016-04-09 72 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屬性)。