Si supponga di avere 2 binari di uguale dimensione.Corrispondenza rapida r-contiguo (in base alle somiglianze di ubicazione)
A=101011110000
B=000010101111
Come è possibile verificare la corrispondenza "R" contigua basata su una posizione simile?
Ad esempio, se impostiamo r = 4, il risultato sarà falso poiché non vi sono 4 similitudini contigue di posizioni. Entrambe le stringhe hanno 0000 o 1111 o 1010 ma non si trovano in una posizione simile.
Tuttavia se impostato:
Il risultato sarà vero dall'ultima 4 caratteri (R) in entrambe le stringhe sono uguali a "1111".
Qual è il modo più veloce per farlo. Ho trovato una soluzione rapida in: http://www.mathworks.com/matlabcentral/answers/257051-fast-r-contiguous-matching
bin = 2.^(0:r - 1);
A2 = filter(bin, 1, A == '1');
B2 = filter(bin, 1, B == '1');
bool = any(ismember(A2(r:end), B2(r:end))); % need to trim first r-1 entries
Ma in questa soluzione il controllo somiglianze non si basa sulla posizione.
Quanto è importante la prestazione? Ti piacerebbe veloce? o è super importante essere veloci? –
Verificare se ['r-matching contiguo, MATLAB'] (http://stackoverflow.com/questions/33871672/r-contiguous-matchlab) aiuta. – Divakar
Se si controlla il collegamento in matematica si vedranno due soluzioni, una funziona in 5.936 sec l'altra in 0.002 sec. La mia stringa originale è di 160 bit e ho bisogno di confrontarla con 50.000 stringhe (160 bit). Quindi ho bisogno di qualcosa abbastanza veloce. – pafpaf