Se connecter
Se connecter

ou
Créer un compte

ou
Agrandir
Ajouter ce produit à
  • Mon ancien matos
  • Mon matos actuel
  • Mon futur matos
Pd-iem Pure Data
Photos
1/22

Petit tutoriel

  • 18 réponses
  • 8 participants
  • 2 464 vues
  • 8 followers
Sujet de la discussion Petit tutoriel
.. sur la réalisation d'une fft dans PD : ici
2
Yeah! :) ca sent l'afficionados de PD tout ca... GG gars :)

http://www.bellesondes.fr

3
Merci SpiraldB pour ce tuto. Intéressant, bien que j'ai pas tout capté !
A quoi sert cette "fenêtre" et pourquoi lui mettre une phase de cosinus ?

J'avais perdu mes tablatures, Zploger me les a retrouvées.

4
Pas mal ton tuto,
thanx

HK
"Life is like a shit sandwhich....the more bread you have, the less shit you have to eat...."
5
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
6

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 :mdr:
7
<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...

http://www.bellesondes.fr

8
Merci, beaucoup pur ce topo :P:

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 :bravo:
9
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.

http://www.bellesondes.fr

10
Merci pour tous ces détails, je pense avoir compris, mais je suis pô sûr :oops:

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.