![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/291954/image.png)
Detect abrupt change in trajectory (coordinates)
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Butterflyfish
il 10 Mag 2020
Commentato: Butterflyfish
il 12 Mag 2020
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
2 Commenti
Risposta accettata
darova
il 11 Mag 2020
What about this? Just diff and atan2d
load sampletrajectory.mat
tr = table2array(trajectories1); % convert to array
x = tr(:,2); % x coord
y = tr(:,3); % y coord
t = atan2d(diff(y),diff(x)); % angle of each line
dt = wrapTo180(diff(t)); % angle between lines
ix = find(abs(dt)>150); % find angle
cla
plot(x(ix+1),y(ix+1),'or') % plot the angle
line(x,y) % plot the data
hold on
for i = 1:length(ix)
text(x(ix(i)+1),y(ix(i)+1),num2str(dt(ix(i))))
end
hold off
3 Commenti
darova
il 11 Mag 2020
- what atan2d and wrapTo180 do in this context?
Those functions do exactly as i wrote in comments:
t = atan2d(diff(y),diff(x)); % angle of each line
dt = wrapTo180(diff(t)); % angle between lines
aran2d calculates angle (
)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/292288/image.png)
diff calculates difference between angles
wrapTo180 wraps angle to 0.. 180 degree range (if angle is 350 degree the function returns 10)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/292289/image.png)
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!