필터 지우기
필터 지우기

Counting runs in a vector

조회 수: 2 (최근 30일)
Hamad Alsayed
Hamad Alsayed 2017년 12월 4일
편집: Stephen23 2017년 12월 7일
Hi all, I have the following vector for which I would like to count "runs", i.e. successive increments in each direction.
v = [0 0 1 2 3 2 2 1 2 2 1 2 3 4 3];
The desired output would look like
out = [3 2 1 1 3 1]
.. because from the first to the fifth element, v moves 3, and from the fifth to the eighth, switches direction and retracts 2, and so on.
  댓글 수: 4
Jan
Jan 2017년 12월 4일
Sorry, I do not understand the explanation. What is the "vertical distance", what are the "peaks" and what is "trough"?
Are you looking for local maxima and minima?
Hamad Alsayed
Hamad Alsayed 2017년 12월 4일
The vector is oscillating up and down - plotting it will illustrate this clearly. So the question boils down to... "it moved up this much"... then "moved down this much"... etc
Question has now been answered. Thank you for your input, Jan.

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

채택된 답변

Stephen23
Stephen23 2017년 12월 4일
편집: Stephen23 2017년 12월 4일
>> V = [0,0,1,2,3,2,2,1,2,2,1,2,3,4,3];
>> W = V([true,0~=diff(V)]); % remove repeats
>> diff(W([true,0~=diff(sign(diff(W))),true]))
ans =
3 -2 1 -1 3 -1
Take the absolute value if you need to.
  댓글 수: 1
Hamad Alsayed
Hamad Alsayed 2017년 12월 4일
Thank you very much, Stephen. Works perfectly for me.

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

추가 답변 (1개)

Damo Nair
Damo Nair 2017년 12월 6일
편집: Stephen23 2017년 12월 6일
Hi,
I hate to trouble you, but is there any way to retrieve the index of the last value? I mean, in the above example 3 would correspond to an index of 5 & -2 to 8.
Thanks Damo.
  댓글 수: 2
Stephen23
Stephen23 2017년 12월 6일
편집: Stephen23 2017년 12월 7일
Of course, just keep track of the indices:
>> V = [0,0,1,2,3,2,2,1,2,2,1,2,3,4,3];
>> X = [true,0~=diff(V)];
>> W = V(X);
>> Y = [true,0~=diff(sign(diff(W))),true];
>> diff(W(Y)) % original answer
ans =
3 -2 1 -1 3 -1
Now you can identify the indices:
>> Z = false(size(X));
>> Z(X) = Y;
>> find(Z)
ans =
1 5 8 9 11 14 15
Note that 1 is included as it defines the start value.
Damo Nair
Damo Nair 2017년 12월 6일
Outstanding! I couldn't work out the relation between Y & V. Now that you make it so simple I feel a bit silly.
Thanks very much. Goodday Damo.

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

카테고리

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

Community Treasure Hunt

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

Start Hunting!

Translated by