# MATLAB: Detect abrupt change in trajectory (coordinates)

angle changechange detectioncoordinatesMATLABpathtrajectory

I have a trajectory (cartesian) on a timeline (frames) and I need to find abrupt changes in trajectory, i.e. almost 180ยบ. I found this: https://uk.mathworks.com/matlabcentral/answers/177523-detecting-path-trajectory-turns-in-tracking-data
but that script example doesn't seem to work very well for me (select frames in a straight line…) and I don't understand it well enough to fix it.
I have attached a example dataset with 3 columns: x, y (coordinates), frame nb (time). On this example, the first abrupt chang of trajectory should be found at around frame # 37.
I would be very grateful for any help!
Many thanks

#### Best Answer

• What about this? Just diff and atan2d
``load sampletrajectory.mattr = table2array(trajectories1);        % convert to arrayx = tr(:,2);                            % x coordy = tr(:,3);                            % y coordt = atan2d(diff(y),diff(x));            % angle of each linedt = wrapTo180(diff(t));                % angle between linesix = find(abs(dt)>150);                 % find angleclaplot(x(ix+1),y(ix+1),'or')              % plot the angleline(x,y)                               % plot the datahold onfor i = 1:length(ix)    text(x(ix(i)+1),y(ix(i)+1),num2str(dt(ix(i))))endhold off``