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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.