Petit tutoriel
- 18 réponses
- 8 participants
- 2 464 vues
- 8 followers
Nimon
74
Posteur·euse AFfranchi·e
Membre depuis 21 ans
Sujet de la discussion Posté le 26/07/2005 à 18:12:04Petit tutoriel
.. sur la réalisation d'une fft dans PD : ici
- 1
- 2
BellesOndes
380
Posteur·euse AFfamé·e
Membre depuis 21 ans
2 Posté le 27/07/2005 à 00:37:36
Yeah! ca sent l'afficionados de PD tout ca... GG gars
http://www.bellesondes.fr
Lvr
1459
AFicionado·a
Membre depuis 21 ans
3 Posté le 27/07/2005 à 10:17:09
Human Koala
1166
AFicionado·a
Membre depuis 21 ans
4 Posté le 27/07/2005 à 10:35:17
Pas mal ton tuto,
thanx
HK
thanx
HK
"Life is like a shit sandwhich....the more bread you have, the less shit you have to eat...."
willy2406
408
Posteur·euse AFfamé·e
Membre depuis 21 ans
5 Posté le 27/07/2005 à 12:55:14
Joli coup !
moi qui ai mis 1 an à découvrir le coup du $0-abstraction !
Tu nous l'explique en 2 lignes.
Bravo et encore merci
moi qui ai mis 1 an à découvrir le coup du $0-abstraction !
Tu nous l'explique en 2 lignes.
Bravo et encore merci
Choc
6968
Membre d’honneur
Membre depuis 22 ans
6 Posté le 27/07/2005 à 14:00:54
Citation : A quoi sert cette "fenêtre" et pourquoi lui mettre un cosinus ?
c'est le coup de la fenetre de HANNING
Lorsque tu évalues la fft d'un signal numerique x(t) sur n echantillon
tu n'évalue pas vraiement la fft du signal x(t), car celui si est tronqué dans le temps avant d'étre analysé (on analyse que certains échantillons)..
La fft que tu mesures correspond au signal à y(t)=x(t).rect(t), tu multiplies la signal x(t) par une fenetre rectangulaire de N échantillons
Si tu fais du signal, tu sais que multiplier de signaux dans un espace (temps ou fréquence), revient a convoluer les signaux dans l'autre espace (fréquence ou temps)
donc la fft que tu mesures en tronquant le signal correspond a
Y(F)=X(f)*H(f) ou * designe le produit de convolution et X(f) représente la transformée de fourrier du signal x(t), Y(F) la transformée du signal y(t) (c'est ce que tu visualises) et H(f) la tarnsformée de fourrier de la fenetre (ici une fenetre rectangulaire)
Le probleme c'est que la fénétre rectangualire a une transformée de fourrier possédant plusieurs rais fréquentielle...le produit de convultion va introduire beaucoup de modif entre la vrai fft, c-a-d X(f) et la fft que tu visualises c-a-d Y(F)
Pour éviter ce probleme l'idée est de trouver une fénetre appliqué au signal proche du dirac (une seule raie fréquentielle). L'histoire de limiter l'impact du produit de convolution
Avec quelques base de signal tu sais que la transformée de fourrier est un dirac (c'est la base du theroeme de fourrier, on projete un signal dans un espace composé de sinusoide)
donc on applique une fenetre sinusoidale au signal a analyser et la representation est moins grade...on se déboruille pour que la fenetre commence a 0 et termine à 0 et quelle soit égale à 1 à la motié de la fenetre (tu retournes le cos en le multipliant par -1, la il va commencé à -1 puis avoir une valeur max à 1 et terminer à -1, donc tu le remultiplies par 0.5, il va commencer à -0.5, avoir une valeur max de 0.5 puis redescendre a -0.5, enfin tu ajoutes 1 pour qu'il commence à 0, évolue jusau'a 1 et redescend ensuite a 0...
soit h(t)=-0.5cos(truc)+0.5...c'est le coup de la fenetre de hanning,
Voila , je vais peut etre me faire tapper dessus par des signaleux
Site personnel: https://www.enib.fr/~choqueuse/
BellesOndes
380
Posteur·euse AFfamé·e
Membre depuis 21 ans
7 Posté le 28/07/2005 à 01:28:35
<Le signaleux que je suis se retrouve dans ce que tu dis
Les différents types de fenêtres ne commencent pas forcément par zéro. L'essentiel est de conserver une nature sinusoidale intacte, c'est à dire de pondérer l'information de facon à favoriser le centre de la fenetre, qui correspond dans le cadre de la transformation temps fréquence de la fft à "l'instant présent" de chaque tranche calculée. Cependant, une fenêtre gaussienne peut également être utilisée pour des résultats différents.
En pratique, la fenêtre a un role de diplomate. On voudrait avoir une grande résolution fréquenctielle (quelle fréquence on entend) et temporelle (à quel moment on l'entends) en sortie. Pour cela il faut beaucoup de points. Or, calculer une fft sur beaucoup de points, c'est finalement perdre la notion temporelle de l'information: on calcule cette fft sur N points consécutifs, sans pouvoir dire à quel endroit exactement on a ce spectre (clair??). C'est le problème du temps fréquence en général: On ne peut pas être précis en fréquence et en temporel en même temps. Le compromis est trouvé avec des fenêtres sinusoidales: on utilise des fenêtres (de calcul de la fft) de taille très grandes pour une bonne résolution fréquentielle, mais pondéréee par une fenêtre qui maximise l'énergie dans la fenêtre au centre de celle ci, localisant temporellement le signal.
Au cours de travaux en laboratoire d'acoustique (LAUM) sur les performances d'outil temps fréquence, j'ai été amené via mesure à montrer que les meilleures fenêtres en terme de précision de détection de fréquence acoustique ne sont pas les fenêtres de hanning, mais les fenêtres de Blackmann ainsi que les fenêtres dérivées des fonctions de Bessel. Ces dernières ne sont pas hyper pratiques à implémenter (sauf avec la GSL) et donc ne sont pas retenues au final. Les formules des principales fenêtres sinusoidales sont:
Avec N le nombre d'échantillons de la fenêtre et k la position dans le vecteur fenêtre bien sur.
Et si l'on compare les trois types de fenêtres, avec la fenêtre rectangulaire, dans le cas de détection de fréquence de signaux acoustiques générés par synthèse
C'est la fenêtre de Blackman qui fait le plus fort, avec des résultats il est vrai très proches de la fenêtre de hanning. Mais elle reste plus précise (pour des images en qualité normale cf mon profil).
Je ne peux donc, dans le cas d'application de détection de fréquences acoustiques, préconiser l'utilisation de la fenêtre de Blackman. De plus, pour finir, je préconiserai même l'utilisation de la transformée de Vigner Ville court terme plutot que la FFT. Mais bon c'est discutable également...
Les différents types de fenêtres ne commencent pas forcément par zéro. L'essentiel est de conserver une nature sinusoidale intacte, c'est à dire de pondérer l'information de facon à favoriser le centre de la fenetre, qui correspond dans le cadre de la transformation temps fréquence de la fft à "l'instant présent" de chaque tranche calculée. Cependant, une fenêtre gaussienne peut également être utilisée pour des résultats différents.
En pratique, la fenêtre a un role de diplomate. On voudrait avoir une grande résolution fréquenctielle (quelle fréquence on entend) et temporelle (à quel moment on l'entends) en sortie. Pour cela il faut beaucoup de points. Or, calculer une fft sur beaucoup de points, c'est finalement perdre la notion temporelle de l'information: on calcule cette fft sur N points consécutifs, sans pouvoir dire à quel endroit exactement on a ce spectre (clair??). C'est le problème du temps fréquence en général: On ne peut pas être précis en fréquence et en temporel en même temps. Le compromis est trouvé avec des fenêtres sinusoidales: on utilise des fenêtres (de calcul de la fft) de taille très grandes pour une bonne résolution fréquentielle, mais pondéréee par une fenêtre qui maximise l'énergie dans la fenêtre au centre de celle ci, localisant temporellement le signal.
Au cours de travaux en laboratoire d'acoustique (LAUM) sur les performances d'outil temps fréquence, j'ai été amené via mesure à montrer que les meilleures fenêtres en terme de précision de détection de fréquence acoustique ne sont pas les fenêtres de hanning, mais les fenêtres de Blackmann ainsi que les fenêtres dérivées des fonctions de Bessel. Ces dernières ne sont pas hyper pratiques à implémenter (sauf avec la GSL) et donc ne sont pas retenues au final. Les formules des principales fenêtres sinusoidales sont:
Avec N le nombre d'échantillons de la fenêtre et k la position dans le vecteur fenêtre bien sur.
Et si l'on compare les trois types de fenêtres, avec la fenêtre rectangulaire, dans le cas de détection de fréquence de signaux acoustiques générés par synthèse
C'est la fenêtre de Blackman qui fait le plus fort, avec des résultats il est vrai très proches de la fenêtre de hanning. Mais elle reste plus précise (pour des images en qualité normale cf mon profil).
Je ne peux donc, dans le cas d'application de détection de fréquences acoustiques, préconiser l'utilisation de la fenêtre de Blackman. De plus, pour finir, je préconiserai même l'utilisation de la transformée de Vigner Ville court terme plutot que la FFT. Mais bon c'est discutable également...
http://www.bellesondes.fr
Choc
6968
Membre d’honneur
Membre depuis 22 ans
8 Posté le 28/07/2005 à 09:02:12
Merci, beaucoup pur ce topo
Wigner Ville c'est pas plutot pour les représentation temps fréquence...
Et pour les cross-term tu fais comment, ca degrade beaucoup la représentation...mais c'est vrai que pour les CHirp ca fonctionne tres bien comparé a un spectrogramme
Citation : Vigner Ville court terme plutot que la FFT.
Wigner Ville c'est pas plutot pour les représentation temps fréquence...
Et pour les cross-term tu fais comment, ca degrade beaucoup la représentation...mais c'est vrai que pour les CHirp ca fonctionne tres bien comparé a un spectrogramme
Site personnel: https://www.enib.fr/~choqueuse/
BellesOndes
380
Posteur·euse AFfamé·e
Membre depuis 21 ans
9 Posté le 28/07/2005 à 10:40:20
En fait pour le cross terme au lieu de prendre ton buffer B de taille N, tu prends:
Soit B le buffer que tu veux FFTiser (après fenetrage bien sur)
B=
[B(0) B(1) B(2) .... B(N)]
Alors le noyau de la transformée WV
B_Wigner=
[B(0)*B(N) B(1)*B(N-1) ... B(N)*B(0)]
Puis tu passe ce noyau dans une moulinette FFT ( x par l'exp puis intégration)
C'est effectivement un noyau d'ordre 2 (contient le signal élevé à un produit avec lui même), ce qui lui permet donc de détecter plus facilement les variations de fréquence linéaires (ou chirp) la ou la fft ne fonctionne qu'en continu.
Soit B le buffer que tu veux FFTiser (après fenetrage bien sur)
B=
[B(0) B(1) B(2) .... B(N)]
Alors le noyau de la transformée WV
B_Wigner=
[B(0)*B(N) B(1)*B(N-1) ... B(N)*B(0)]
Puis tu passe ce noyau dans une moulinette FFT ( x par l'exp puis intégration)
C'est effectivement un noyau d'ordre 2 (contient le signal élevé à un produit avec lui même), ce qui lui permet donc de détecter plus facilement les variations de fréquence linéaires (ou chirp) la ou la fft ne fonctionne qu'en continu.
http://www.bellesondes.fr
Lvr
1459
AFicionado·a
Membre depuis 21 ans
10 Posté le 28/07/2005 à 11:27:15
Merci pour tous ces détails, je pense avoir compris, mais je suis pô sûr
Et pour faire un vibrato, il faut faire une FFT dont on décalerait les "franges" par un avec un sinus ?
Citation : Si tu fais du signal
Justement j'en ai pas fait assez. Je me souviens juste qu'on nous a expliqué comment théoriquement obtenir une FT. Va falloir que je m'y mette sérieusement. C'est quoi la bible ?Et pour faire un vibrato, il faut faire une FFT dont on décalerait les "franges" par un avec un sinus ?
J'avais perdu mes tablatures, Zploger me les a retrouvées.
- < Liste des sujets
- Charte
- 1
- 2