How to detect a sequence in an array [extended]
이전 댓글 표시
Hello everybody,
let's say, I have this sequence: 1 - 770 - ... (unknow amount of uninteresting numbers shortened with uaun) ... - 897 - uaun - 769 - uaun - 897 - uaun - (continues in any way)
I would like to be able to detect how many times 770 is followed by 897 followed by 769. Additionally, I would like to calculate how many times 769 is followed by 897. 770-uaun-897-uaun-769-uaun-897 counts for both events.
Can someone think of an elegant way to program this? I can only think of an unbelievable complicated program with a lot of while-loops and break-commands.
Thank you in advance!
Marcus
댓글 수: 4
the cyclist
2018년 1월 17일
편집: the cyclist
2018년 1월 17일
As a first step, to reduce the overall computational burden, you can do
x = intersect(x,[770 897 769]);
to remove the irrelevant elements.
What should the two counts be for this vector?
x = [770 897 769 770 897 769 897]
? I'm specifically wondering if the 897-769 after the second 770 also count toward the first 770, which they also follow.
Marcus Schneider
2018년 1월 17일
편집: Walter Roberson
2018년 1월 17일
Guillaume
2018년 1월 17일
intersect won't work since it removes all duplicates. Filtering with ismember would.
the cyclist
2018년 1월 17일
Crap. That's the first way I posted it -- then thought I had found some more elegant. Fail.
x = x(ismember(x,[770 897 769]));
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Image Category Classification에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!