MATLAB Answers

Song
0

How to move a line as fast as possible ...

Asked by Song
on 9 Mar 2017
Latest activity Commented on by Song
on 9 Mar 2017
Hi, I am doing an app which can show signals. In this app, I would like to add a cursor line along with the movement of the mouse to show signal values. I tried my best to simplify the algorithm, but still the line follows my cursor not fast enough. You can see the effect in the attached gif. Cursor line runs always behind cursor.
With the prevous Matlab version, I can draw a XOR'ed line which fits my application perfectly. Since I am using 2016 now, there is no such property any more. Is there some other ways to implement this?
Thanks!

  4 Comments

Show 1 older comment
Thanks Adam, I do have removed all the attached function and retain only something like set(h, 'xdata', [x_new, x_new]). But still I get this slow performance..
If that is all you are doing it is doubtful you can write code any faster than that. If you were replotting the line every time then, of course, this would be my first suggestion, but since you are already doing the minimum of editing to the graphics object there isn't really any less you can do if that is literally the only code on moving the mouse.
In my implementation I actually drag the line so it is in a ButtonDownFcn rather than a mouse move, I don't know if that makes a difference. My code of importance though is:
function doLineMoveFunc( obj )
currentPoint = get( obj.axesHandle, 'CurrentPoint' );
xPos = currentPoint( 1, 1 );
xPos = doValidateXLocation( obj, xPos );
xData = get( obj.hLine, 'XData' );
xData(:) = roundLocation( obj, xPos );
set( obj.hLine, 'XData', xData );
end
so similar to what you do. I also have some validation code thrown in so it actually does more than simply setting the xdata. Without further functions attached to the moving it follows the dragging very closely though. I can't be bothered to work out how to record a gif though!
Nice job adam. It would be glad for me to see how the dragging/following speed would look like on your machine with higher Matlab version (>2015). The gif recorder I used is called "gifrecorder" from http://gifrecorder.com/. I think there are open-source alternatives than this :P

Sign in to comment.

0 Answers