2011-10-18 6 views
1

A écrit un algorithme de détection de pas de fréquence dans C et maintenant j'essaie d'estimer la fréquence fondamentale. J'ai le bin maximum de magnitude de la transformée de Fourier, mais cela peut aussi être un harmonique non nécessaire F0. J'ai lu quelque part qu'il est possible d'estimer F0 en utilisant cepstral analysis. Donc, voici les étapes que je suis:Estimer la fréquence fondamentale à l'aide de l'analyse cepstrale

  1. Prenez le tampon de domaine temporel x, faites une copie fenêtrée w.
  2. FTTw = FFT (w)
  3. a = Log de magnitude carrée de FTTw
  4. LFTT = FFT (a)
  5. b = magnitude carrée de LFTT
  6. Estimation fondamentale en utilisant b

J'ai des problèmes avec la dernière étape (6). Les grandeurs en b sont assez élevées et je ne suis pas sûr de bien comprendre ce qu'elles représentent (quefrences?) Et surtout comment je peux estimer le fondamental basé sur elles.

Tout conseil est le bienvenu! Merci!

+0

Comme c'est plus lié à la DSP qu'à la programmation, vous pouvez essayer http://dsp.stackexchange.com au lieu de http://stackoverflow.com –

+0

Fait cela, y a-t-il eu plusieurs heures, aucune réponse/commentaire. Je suppose que la communauté est encore petite, donc j'ai tenté ma chance ici :) –

+0

Vous avez probablement besoin d'être patient - donnez-lui 24 heures ou plus - différents fuseaux horaires etc. Si vous obtenez une réponse ici, il sera probablement de quelqu'un qui est actif sur http://dsp.stackexchange.com de toute façon ... –

Répondre

1

L'emplacement du pic dans le cepstrum (sur l'axe de direction) vous indique la période fondamentale de votre signal d'origine. La magnitude du pic n'est pas particulièrement importante.

+0

Merci Paul, j'ai encore une petite question: puis-je faire une interpolation quadratique pour augmenter la précision entre les sommets du cepstrum ou devrais-je revenir à l'original Données FFT avec la fréquence connue et faites-le là. (désolé d'ajouter une autre question à l'original: D, mais j'ai vu que vous avez aidé d'autres sur SO concernant les problèmes DSP et je pensais que vous le savez) –

+0

Probablement une meilleure façon de faire est de zéro pad votre entrée FFT originale - cela vous donne un spectre interpolé avec une résolution * plus élevée *. Ou utilisez simplement une fenêtre temporelle plus grande si vous avez vraiment besoin d'une plus grande * précision *. –

Questions connexes