How to calculate distance between array elements?

조회 수: 12 (최근 30일)
Hajem Daham
Hajem Daham 2018년 4월 9일
댓글: Hajem Daham 2018년 4월 10일
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
Guillaume
Guillaume 2018년 4월 9일
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 2018년 4월 9일
don't focus on numbers its just example if you know how to do the coding please answer, otherwise leave it.

댓글을 달려면 로그인하십시오.

채택된 답변

Matt J
Matt J 2018년 4월 9일
편집: Matt J 2018년 4월 9일
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)

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Operators and Elementary Operations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by