Hello everyone,
I have a little problem calculating a velocity from a distance matrix. I do have the time array already.
My distance matrix looks as following:
dist=[x_coord1, y_coord1;
x_coord2, y_coord2;
....];
The coordinates are absolute, and I need the relative distance between the current coordinates and the previous one.
So, my vector should look like this:
newdist=[pdist2([x_coord2,y_coord2],[x_coord1,y_coord1]);
pdist2([x_coord3,y_coord3],[x_coord2,y_coord2])
......];
But instead pdist2 gives a vector with the distance of every possible combination of cells.
My questions(in my opinion at least):
1. Are there any functions which give me what I want immediately; or if this is not the case
2. Is there a way to decipher the pdist2 vector and get the correct values?
Thanks for reading this long post and helping :)
Kind regards, Dries van Roovert

 Akzeptierte Antwort

Dries van Roovert
Dries van Roovert am 16 Nov. 2016

0 Stimmen

For anyone interested in the answer:
PairwiseDist=squareform(pdist(dist,'euclidean'));
RelativeDist=diag(PairwiseDist,-1);
You'll get the distance from coord 2 to 1, coord 3 to 2, ... and so on in a vector.
Cheers

Weitere Antworten (1)

Jan
Jan am 14 Nov. 2016
Bearbeitet: Jan am 14 Nov. 2016

0 Stimmen

v = diff(dist, 1, 1);
Perhaps:
v = sqrt(sum(v .* v, 2));

2 Kommentare

Dries van Roovert
Dries van Roovert am 14 Nov. 2016
I need the euclidean distance between the [x1,y1] and [x2,y2]. not just the distance between x1 & x2 and y1 & y2.
That's not it either, on every row of the solution array should be the distance between the current coordinates and the previous.
%pdist2 is a function calculating distance between data sets
row 1 = pdist2([x2,y2],[x1,y1],'euclidean')
row 2 = pdist2([x3,y3],[x2,y2],'euclidean')

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Statistics and Machine Learning Toolbox finden Sie in Hilfe-Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by