Bonjour,
Je suis tout nouveau sur ce forum (j'espère donc poser ma question au bon endroit)
Je travail actuellement sur la détection de Pitch d'un son. Il y a beaucoup de façon d'obtenir cette info. Après l'avoir obtenu par simple autocorrélation je souhaiterais pouvoir travailler à partir de la transformée de Hilbert. Mais j'ai de petits soucis de compréhension.
J'ai donc réalisé un code simple pour vous exposer mon problème.
Je souhaite trouver la fréquence instantanée d'un sinus de 50Hz.
Voici le code:
Je n'arrive pas à comprendre pourquoi la fréquence instantanée n'est pas une simple constante du début à la fin. Est-ce un soucis de codage ou de compréhension.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 f0 = 50; % fréquence du sinus fs = 10e3; % fréquence d'échantillonnage maxlag = 8192; t = (1:maxlag)/fs; t_angle=(1:maxlag-1)/fs; %% Génération du sinus a = sin(2*pi*f0*t); %% Transformée de Hilbert sinus_h = hilbert(a,maxlag); FreqH = angle(sinus_h(2:maxlag).*conj(sinus_h(1:maxlag-1)))/2/pi; FreqH = FreqH*fs; Fx = mean(FreqH); Enveloppe = abs(sinus_h); %% Plot subplot(211) plot(t,a,t,Enveloppe),title('Allure du signal + Enveloppe du signal'),xlabel('Temps [s]'); subplot(212); plot(t_angle,FreqH),title('Fréquence instantanée du signal'),xlabel('Temps [s]');
Merci d'avance de vos réponses
Yann
Partager