How to detect a sequence in an array [extended]
Ältere Kommentare anzeigen
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 Kommentare
the cyclist
am 17 Jan. 2018
Bearbeitet: the cyclist
am 17 Jan. 2018
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
am 17 Jan. 2018
Bearbeitet: Walter Roberson
am 17 Jan. 2018
Guillaume
am 17 Jan. 2018
intersect won't work since it removes all duplicates. Filtering with ismember would.
the cyclist
am 17 Jan. 2018
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]));
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Image Category Classification finden Sie in Hilfe-Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!