Bien qu'il doit avoir plusieurs approches (algorithmiques par exemple), je pense que ta méthode n'est pas assez générique, tu vas te retrouver avec plein de cas particuliers à gérer comme des 0__0_0 ( x n fois )
Le principe que j'entrevois comme ça, à l'instinct :
tu prends ta string => tu transformes les '_' en '0' pour en faire un signal numérique g(t) et tu comptes le nombre de '1', s, et sa taille, n (pour normaliser l'autocorrelation, mais autant rester avec des entiers maintenant)
ensuite
pour chaque d compris entre 0 et n tu fais l'intégrale sur t de g(t).g(t+d)
tu divises par s² (pour normaliser) tu obtiens C
tu obtiens donc une courbe C en fonction de d
ensuite faut voir la gueule qu'à C, de tête j'ai un peu de mal à vrai dire
mais l'idée, c'est qu'à chaque pic correspond une fréquence. après, mes cours de traitements de signal sont un peu loin, désolé...
Le principe de l'autocorrelation, c'est un peu comme faire glisser une tapisserie au moment de la coller pour faire matcher les motifs.
Message édité par smaragdus le 08-12-2010 à 13:30:30