How to calculate distance between array elements?
16 views (last 30 days)
Show older comments
Hi, Let say I have this array:
A = [1 3 5 1 4 1 2 6 1]
the distances between elements are:
1-3-5-1:
1 to 3 = 2
3 to 5 = 1
5 to 1 = 3
1-4-1:
1 to 4 = 2
4 to 1 = 1
1-2-6-1:
1 to 2 = 3
2 to 6 = 1
6 to 1 = 2
what I need is to accumulate the distance of elements between every two ones, and if the distance between every two ones is greater than 5 then a penalty of 3 should be added to the total distance of the whole array. For example the distance between 1-3-5-1 = 6, so in this case, a penalty of 3 should be added to the total distance and so on.
5 Comments
Guillaume
on 9 Apr 2018
I'm not any clearer. How is the distance from 3 to 5 not equal to 2? And from 5 to 1 not equal to 4?
Accepted Answer
Matt J
on 9 Apr 2018
Edited: Matt J
on 9 Apr 2018
I too find the post hard to interpret, but maybe this is what you want:
A = [1 3 5 1 4 1 2 6 1];
dist=cumsum([0 2 1 3 2 1 3 1 2]); %distances from start
onelocs=find(A==1);
D=dist(onelocs(2:end)) - dist(onelocs(1:end-1)); %distance between ones
totalDistance=dist(end) + 3*sum(D>5)
More Answers (0)
See Also
Categories
Find more on Operators and Elementary Operations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!