Hola,
la modificación que has hecho no hace nada, porque fíjate que el vector coincidencias se va a sobreescribir entero en la siguiente iteración del bucle porque la línea:
coincidencias= a(max(1,i-5):min(l,i+5)) == b(max(1,i-5):min(l,i+5));
lo que hace es crear un vector coincidencias nuevo (o machacarlo si existe) con un 1 en las posiciones que coincidan y un 0 en las que no. La longitud de este vector será como máximo 11, por tanto la línea que pusiste te dará error cuando i>11
Te sugiero que te familiarices con la notación de los índices y esas cosas. Con que hagas unos pocos ejemplos sencillos verás que es fácil.
Sigo sin entender lo que intentas hacer ¿qué quieres decir con que coincidan? porque de momento lo que hemos conseguido es tener en coincidencias un vector con el número de elementos que son iguales entre a y b alrededor del elemento i. Será un número entre 0 (si no coincide ninguno) y 11 (si coinciden todos), puede que tu criterio sea que se parecen si coinciden más de 5 o algo así.
Lo de que penaliza quiere decir que por ejemplo al pasar por el primer elemento no puede comparar desde el -5 hasta el 6 porque los negativos no existen, por eso he puesto lo de max(1,i-5), porque si no daría error.
Lo mejor es que copies lo que te puse en un archivo .m (tienes que tenerlo en work o en un directorio que tengas en el path) crear desde la línea de comandos un vector a y un b y llamar al script. Luego escribes:
parecidos
Y te saldrá el resultado. Yo lo probé antes de copiarlo aquí, así que tiene que funcionar.