MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply TodayTo resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Asked by MacKenzie on 18 Nov 2013

hello,

First, let me give basic framework for the problem: I have data sets that reflect the trajectory of a joystick movement(X,y coordinates in a matrix). The subject needs to move the joystick from neutral past a distance to receive a reward.

I want to extract each pull. One complication is once they reach the target, they stay for a brief moment to collect the reward, just the numbers bounce slightly, giving me many local minima.

I was hoping to have code that reads through the matrix, finds the point where it hits a minimum, stays (perhaps means the noise at the target location), and puts the "pull" into a new matrix or array, etc. There is no consistent number of points between pulls.

I know how to weed out the neutral location data, it's the finding local minima and extracting that is giving me trouble.

**Update:** I have the local minima. Now, just to get the points in-between each local minima!

thanks!

Answer by Image Analyst on 18 Nov 2013

distanceFromFirstPoint = sqrt((x - x(1)) .^ 2 + (y - y(1)) .^ 2);

## 3 Comments

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/106542#comment_180617

Can you attach a data file, and post a diagram or figure or some kind of illustration? Why don't you have vectors? Aren't the x and y both vectors? You could turn it into a 1D vector representing the distance from the starting location.

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/106542#comment_180622

yes, good pt; I do have the direction vector, so perhaps using findpeaks on that is a good way to start - let me try and get back to you! thanks for the advice!

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/106542#comment_180627

just an update, I found a nice function for detecting local minima (and maxima) where you can set the threshold:

http://www.billauer.co.il/peakdet.html