Mam dużą alfabetycznie tablicę komórek ciągów (~ 495 tysięcy), z dużą liczbą duplikatów (które są obok siebie, ponieważ są alfabetyczne).dopasowywanie ciągów w liście uporządkowanej według algorytmu geograficznego (metoda MATLABA)
Dla danego łańcucha look-up, muszę znaleźć wszystkie ciągi w wykazie, który będzie pasował do jednego mijam w.
Używam strcmp(lookUpString,list)
to zrobić, ale jest to bardzo powolny - Myślę, że przechodzi przez każdą wartość na liście do porównania, ponieważ nie wie, że jest posortowana alfabetycznie.
Mogę napisać pętlę while do iteracji na liście, aby porównać każdy ciąg znaków za pomocą strcmp
, aż znajdę blok ciągów znaków, które chcę (a następnie zatrzymać), ale zastanawiałem się, czy istnieje sposób "matlab" to (tj. wykonywanie logicznych operacji porównania na posortowanej tablicy).
Dzięki za pomoc!
Jaką wersję MATLAB używasz? W moim, gdy utworzyłem tablicę komórek z 400-literowymi ciągami losowymi o wielkości 100 liter i szukam jednego z nich za pomocą strcmp, zajmuje to 0,024816 sekundy. W rzeczywistości jest to plik MEX. Używam 2011A. – user930916