Intercorrélation de deux signaux
Bonsoir à tous,
Je dois coder un programme sous matlab qui me permettrait de comparer les fréquences de deux sons audio purs (donc de forme Acos(2*pi*f*t)), que j'ai préalablement générés. Cette partie est correcte d'après mon professeur.
On connait la fréquence d’échantillonnage, qui est de 16KHz. L'algorithme doit renvoyer un résultat binaire : 1 si les deux fréquences sont les mêmes, à une marge d’erreur près, 0 sinon.
Je dois pour cela utiliser l'intercorrélation dont la formule est ci-dessous. Voilà ce que j'ai écrit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| N = length(x1);
Cxx = zeros (1,2*N);
inter = zeros(1,N);
for k = 1 : N
for n = k : N-1
inter(n) = x1(n)*x2(n+k);
end
Cxx(k) = 1/N * sum(inter);
end
plot(Cxx) ; |
Cependant, on m'affiche l'erreur : Index exceeds the number of array elements (501).
Error in Exercice (line 43)
inter(n) = x1(n)*x2(n+k);
Si je comprend bien, je pense que je n’ai pas bien indicé la boucle for, mais je n’arrive pas à trouver comment corriger ce problème.
Merci d'avance pour votre aide.