How to calculate distance between array elements?

15 vues (au cours des 30 derniers jours)
Hajem Daham
Hajem Daham le 9 Avr 2018
Commenté : Hajem Daham le 10 Avr 2018
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 commentaires
Guillaume
Guillaume le 9 Avr 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?
Hajem Daham
Hajem Daham le 9 Avr 2018
don't focus on numbers its just example if you know how to do the coding please answer, otherwise leave it.

Connectez-vous pour commenter.

Réponse acceptée

Matt J
Matt J le 9 Avr 2018
Modifié(e) : Matt J le 9 Avr 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)
  1 commentaire
Hajem Daham
Hajem Daham le 10 Avr 2018
Thank you Matt, this is what I want.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Operators and Elementary Operations dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by