organize vector, difference between adjacent elements of a vector

조회 수: 1 (최근 30일)
Fidele Adanvo
Fidele Adanvo 2020년 11월 29일
댓글: Adam Danz 2020년 11월 29일
Hello, everything okay? How can I automate this sequence?
if A=[ a ,b, c ,d ,e, ..........]
outA=[ A(1)-2 , ((A(1)-2)+(A(2)-A(1))) , (((A(1)-2)+(A(2)-A(1))) +(A(3)-A(2))) , ((((A(1)-2)+(A(2)-A(1))) +(A(3)-A(2))) +(A(4)-A(3))), ..............]
for exemple
if A=[ 3 ,10, 55 ,100 ,888, ..........]
outA= [ 3-2, ((3-2)+(10-3)) , ((3-2)+(10-3) +(55-10)), ((3-2)+(10-3) +(55-10)+(100-55)), ((3-2)+(10-3) +(55-10)+(100-55)+(888-100) )]
outA=[ 1 , (1+7), (8+44 ) , (53+44), (98+788)]
outA=[ 1 8 53 98 886]

채택된 답변

Adam Danz
Adam Danz 2020년 11월 29일
편집: Adam Danz 2020년 11월 29일
A=[ 3 ,10, 55 ,100 ,888];
z = cumsum(diff([2,A]))
z = 1×5
1 8 53 98 886
  댓글 수: 4
Fidele Adanvo
Fidele Adanvo 2020년 11월 29일
How would you please if it were like this?
diff([2,A]) does this: [min(1,(A(1)-2)), A(2)-A(1), A(3)-A(2), A(4)-A(3), ..., A(n+1)-A(n)]
Adam Danz
Adam Danz 2020년 11월 29일
You want to subtract the first element of A by 2 which is why 2 is added to the beginning of [2,A].
If you want to apply the restriction min(1,...) to the first element of A,
z = cumsum(diff([2,A]));
z(1) = min(1,z(1))

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

추가 답변 (1개)

Ameer Hamza
Ameer Hamza 2020년 11월 29일
편집: Ameer Hamza 2020년 11월 29일
The rule you described in just A-2
A=[3 ,10, 55 ,100 ,888];
B = A-2;
Result
>> B
B =
1 8 53 98 886
In the sum (A(1)-2) + (A(2)-A(1)) + (A(3)-A(2)) + ... + (A(n)-A(n-1)), after cancelling out the common term, you will only get A(n)-2.

카테고리

Help CenterFile Exchange에서 Calculus에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by