Can Matlab determine cursor position continuously?

I have an image plot that was created with "imagesc", and I can use ginput to select (x,y) points on the image, then I can read the value of that particular pixel which I output to a figure that accompanies the image.
What I would like to do is have the (x,y) point and pixel value output continuously as I "mouse over" the image, without clicking. Can this be done?

 Réponse acceptée

Jan
Jan le 13 Juil 2011
The WindowButtonMotionFcn can help:
FigH = figure('WindowButtonMotionFcn', @MotionFcn)
function MotionFcn(FigH, EventData)
get(FigH, 'CurrentPoint')
get(get(FigH, 'CurrentAxes'), 'CurrentPoint')
Now the current point is written to the command window, if the mouse if moved over the figure.

5 commentaires

Art
Art le 13 Juil 2011
So if I have a figure already created, how would I use this instead of a new figure? Would I have to create this figure from the beginning with this function?
Jan
Jan le 13 Juil 2011
@Art: You can modify the properties of an existing figure also: set(FigureHandle, 'WindowButtonMotionFcn', @MotionFcn).
Be sure to read about the limitations of CurrentPoint in the Figure Properties page, http://www.mathworks.com/help/techdoc/ref/figure_props.html
Art
Art le 14 Juil 2011
Thanks, Jan, that worked perfectly for what I wanted to do.

Connectez-vous pour commenter.

Plus de réponses (2)

Sean de Wolski
Sean de Wolski le 13 Juil 2011

0 votes

See Matt Tearle's doodle function in this thread:
Walter Roberson
Walter Roberson le 13 Juil 2011

0 votes

No, it is not possible to have the cursor position updated continuously. PS/2 and USB mice and serial mice only send coordinate updates periodically, not continuously. (Old joysticks, on the other hand, used to have analog position signals; with those and an analog to digital convertor, you could update the position as fast as the convertor could run.)

2 commentaires

Jan
Jan le 13 Juil 2011
@Walter: I think the frequency of updates of the pixel position is limited by the runtime of the Matlab function for evaluating. For a fast movement the mouse position will not be displayed for all pixels.
Anyhow, I assume that "without clicking" is more important for the OP than a real continuity.
Mice do not report for every pixel! USB mice, by default, poll at a maximum of 125 Hz; see http://www.nextlevelgamer.com/tweaks/optimizing-your-usb-mouse-polling-rate
I have seen reports that PS/2 mice max out at 125 Hz but are often appreciably slower.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Data Exploration dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by