algorithme de mesure d'harmoniques d'un signal de fréquence connu - Algo - Programmation
Marsh Posté le 17-08-2009 à 18:35:37
Ca fait longtemps mais ils parlent des filtres réjecteurs de bande dans le domaine temporel dans The Art of Scientific Computing
Marsh Posté le 18-08-2009 à 01:08:09
Très interessant cet article.
Par contre je comprends pas pourquoi ils disent qu'il faut garder N valeurs de sample en mémoire. Les ak, bk sont calculés à chaque nouveau sample en faisant la différence avec le sample immédiatement avant, et les N-1 valeurs précédentes du buffer ne sont pas utilisées
Marsh Posté le 18-08-2009 à 09:13:13
Salut,
Y a 100 manières de faire ça... La DFT (tu peux utiliser d'autres trucs plus performants genre transformées en ondelettes ou avec un dictionnaire approprié) te servira a extraire les harmoniques facilement.
Maintenant pour enlever le bruit, tu peux passer par des filtres IIR ou FIR suivant tes besoins... Et là encore 100 manières de faire (chercher les polynômes caractéristiques / chercher les pôles puis modéliser un filtre analogique (type butterworth & co) et le discrétiser).
Concernant le mode de fenêtrage, là aussi plein de choix (faut un peut tester quoi ..) on utilise souvent les fenêtres de Hanning ou autres fenêtres du même genre (ça dépend des compromis que tu est prêt à faire niveau distorsion temporelle / fréquentielle)..
Bref on a eu un cours de 1 ans sur ce genre de truc ça s'improvise difficilement sur un coin de table
Si tu veux 2 excellentes références (attention, non seulement c'est des bouquins en anglais, mais ils sont extrêmement cher.. Si tu les trouves à la biblio c'est peut-être mieux) :
- Digital Signal Processig ( John G. Proakis , Dimitris G. Manolakis)
- A wavelet tour of signal processing (Stéphane Mallat)
Marsh Posté le 10-03-2009 à 12:19:12
J'ai un signal audio numérisé .
Hypothèse :
- Je sais A PRIORI que ce signal contient une fréquence F0 connue, d'amplitude a0 ; et des harmoniques de fréquence Fk = kF0 d'amplitudes ak.
- Le reste du signal est considéré comme du "bruit".
Objectif :
1- calculer les coefficients ak, en utilisant une fenêtre d'échantillonnage minimale (10 à 30 ms serait le maximum)
2- restituer le signal "bruit" sans les ak.Fk
Exemple d'utilisation :
- numérisation d'un LA4 (F0=440Hz) joué par un violon.
- Extraction en continu , avec une latence de l'ordre de 10 à 30 ms, des amplitudes des harmonique à 440, 2*440, 3*440 Hz, etc...
- Restitution du bruit indépendant du LA4 (frottements archet, etc...)
Je cherche un algorithme (ou un code C) le plus économique possible en calcul, en évitant une FFT standard (consommatrice, nécessite une fenêtre d'échantillonnage trop large si on veut de la précision, incompatible avec une forte réactivité).
Cela devrait être possible, car la fréquence F0 est connue à priori.
J'ai lu deux articles théoriques très proches de ce besoin , appelé "transformée de Fourier rapide par quart de période", mais sans détail sur un algorithme optimisé et performant. Les articles sont disponibles sur
http://documents.irevues.inist.fr/ [...] +TEXTE.pdf
http://www.google.fr/url?sa=t&sour [...] ptVoO2lTpw .
Est ce que quelqu'un aurait une idée ?
Merci
Message édité par expresseur le 25-03-2009 à 13:49:33