How to detect a sequence in an array [extended]
Mostrar comentarios más antiguos
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 comentarios
the cyclist
el 17 de En. de 2018
Editada: the cyclist
el 17 de En. de 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
el 17 de En. de 2018
Editada: Walter Roberson
el 17 de En. de 2018
Guillaume
el 17 de En. de 2018
intersect won't work since it removes all duplicates. Filtering with ismember would.
the cyclist
el 17 de En. de 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]));
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Image Category Classification en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!