begin process at 2012 02 11 02:10:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > TRANSFORMEE DE FOURIER SIMPLE.

TRANSFORMEE DE FOURIER SIMPLE.


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Source .NET ( DotNet ) Classé sous :transformation, fourier, tfd Niveau :Initié Date de création :24/07/2004 Date de mise à jour :24/07/2004 22:12:56 Vu :20 275

Auteur : Nils_Reco_Vocale

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Voilà un source qu'aimeront les débutants, simple à comprendre, commenté comme il faut. Il propose le calcul d'une Transformée de Fourier Discrète (TFD, qui n'est pas une FFT, attention !).
Seul soucis avec ce source, il est vraiment très lent... Pour l'exemple, il demande 2 minutes de traitement pour une trame d'une seconde de son... hem !
Enfin, j'espère en tout cas qu'il apportera des réponses à ceux qui galèrent comme j'ai pu le faire, les résultats qu'il envoie sont 100% exactes, testé en parallèle avec Mathlab.

Source

  • public double[] Calcul_TFD(double[] donnees)
  • {
  • // calcul de Omega qui ne bouge pas selon les termes
  • omega_tfd= (2*Math.PI)/donnees.Length;
  • an = new double[donnees.Length]; // tableau de la partie Réelle
  • bn = new double[donnees.Length]; // tableau de la partie Imaginaire
  • en = new double[donnees.Length]; // tableau résultat de la TFD
  • // Calcul du Fondamental (premier terme, seulement en a0, une bête somme
  • for(int t = 0 ; t < donnees.Length; t++) {
  • an[0] += donnees[t];
  • }
  • en[0] = an[0]/1024; // Résultat du Fondamental
  • bn[0] = 0; // premier terme de la suite B(n)
  • // Calcul de la TFD... plutôt court comme algo ! ici, n est le niveau de la TFD
  • for(int n = 1 ; n < donnees.Length ; n++)
  • {
  • an[n] = bn[n] = 0; // initialisation des termes à 0
  • // on fait les sommes qui suivent sur les 1024 termes du tableau
  • for(int t = 0 ; t < donnees.Length ; t++)
  • {
  • an[n] += donnees[t]*Math.Cos(n*omega_tfd*t); // Partie Réelle
  • bn[n] += donnees[t]*Math.Sin(n*omega_tfd*t); // Partie Imaginaire
  • }
  • // et finalement, le calcul de l'amplitude en = an² + bn²
  • en[n] = Math.Pow(an[n], 2) + Math.Pow(bn[n], 2); }
  • return en; // on renvoie le tableau, et c'est dans la poche !
  • }
public double[] Calcul_TFD(double[] donnees)
{
	// calcul de Omega qui ne bouge pas selon les termes
	omega_tfd= (2*Math.PI)/donnees.Length;	
	an	= new double[donnees.Length];	// tableau de la partie Réelle
	bn	= new double[donnees.Length];	// tableau de la partie Imaginaire
	en	= new double[donnees.Length];	// tableau résultat de la TFD

	// Calcul du Fondamental (premier terme, seulement en a0, une bête somme
	for(int t = 0 ; t < donnees.Length; t++) {			
		an[0] += donnees[t];
	}

	en[0] = an[0]/1024;			// Résultat du Fondamental
	bn[0] = 0;				// premier terme de la suite B(n)

	// Calcul de la TFD... plutôt court comme algo ! ici, n est le niveau de la TFD
	for(int n = 1 ; n < donnees.Length ; n++)			
	{
		an[n] = bn[n] = 0;		// initialisation des termes à 0

		// on fait les sommes qui suivent sur les 1024 termes du tableau
		for(int t = 0 ; t < donnees.Length ; t++)
		{
			an[n] += donnees[t]*Math.Cos(n*omega_tfd*t);   // Partie Réelle
			bn[n] += donnees[t]*Math.Sin(n*omega_tfd*t);	    // Partie Imaginaire
		}

		// et finalement, le calcul de l'amplitude en = an² + bn²
		en[n] = Math.Pow(an[n], 2) + Math.Pow(bn[n], 2);				}

	return en;	// on renvoie le tableau, et c'est dans la poche !
}

 Conclusion

Pour ceux qui le testeront, ils verront à quel point ce source est lent, le fait est que même optimisé, il reste trop lent pour un traitement continu. Cependant, il permet de bien comprendre la mise en place d'un tel calcul.
Je travaille actuellement sur la mise en place d'un algorithme de FFT (par la méthode du Papillon) en vue d'un logiciel de Reconnaissance Vocale, j'enverrai le source quand il sera prêt, d'ici-là si quelqu'un sait comment faire ca, je suis preneur !

Voili voilou, bonne lecture !


 Historique

24 juillet 2004 22:12:56 :
Je viens de terminer l'algorithme de la FFT, avis aux amateurs !

 Sources du même auteur

Source .NET (Dotnet) FFT (TRANSFORMÉE DE FOURIER RAPIDE)

 Sources de la même categorie

Source avec Zip Source avec une capture (CONSOLE) TROUVER LA CLEF D'UN CODE INSEE EN DONNANT SES 13 ... par Maxime95k
Source avec Zip Source .NET (Dotnet) QUANTUM BIBLIOTHÈQUE MATHÉMATIQUES par QuantumNet
Source avec Zip Source avec une capture Source .NET (Dotnet) ALGORITHME DE LA PROPENSION par olivieram2
Source avec Zip Source .NET (Dotnet) PETITE LIBRAIRIE MATHÉMATIQUE par dodo7263
Source avec Zip Source .NET (Dotnet) INCLUSION D'UN POINT DANS UN CERCLE par eishtein

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) ROBOT À DESSINER par Warny
Source avec Zip Source avec une capture Source .NET (Dotnet) GÉNÉRATION ET AFFICHAGE D'HARMONIQUES par Yoteco
Source avec Zip Source avec une capture Source .NET (Dotnet) TRANSFORMATION D'UN XML À L'AIDE DE XSLT VERS HTML par EMSIEN
Source avec Zip Source .NET (Dotnet) CONVERTISEUR XML VERS SQL par telynor
Source .NET (Dotnet) FFT (TRANSFORMÉE DE FOURIER RAPIDE) par Nils_Reco_Vocale

Commentaires et avis

Commentaire de Jhep le 04/11/2005 22:17:46

Salut. D'où sort le 1024 ?
en[0] = an[0]/1024;
ne serait-ce pas donnees.Length plutôt ?

Commentaire de nagouza le 14/11/2009 13:30:50

dfdf sdfsdf

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

C# - Caractères spéciaux - transformation. [ par lordmeul ] Bonjour, Je voudrais travailler sur des chars dans differents formats.par exemple pour un symbole vertical tabjai dans un string : &lt;VT&gt;et je veu Comment éviter la perte des espaces lors d'une transformation xslt ? [ par virgul ] Bonjour,Voila j'ai un webservice qui me fait une transformation xslt mais le seul problème c'est qu'il me tronque les espaces que j'ai entre mes balis classe transformation xquery [ par mathmax ] Bonjour,Je recherche une classe qui permette de faire une transformation xquery, c'est à dire appliquer une requête xquery à  un document xml passé en Transformation xml par xslt sur CF [ par nonold ] Bonjour,je cherche depuis pas mal de jours deja une solution pour pouvoir faire une transformation d'un xml via xslt pour en faire une page web. Sur l Pb Transformation xsd -> Dataset [ par cedkat ] Bonjour,J'ai un document xsd et je veux le transformer en dataset, et pour cela j'utilise xsd.exe. Mais il m'indique qu'il ne peut pas traduit l'eleme Image dans une transformation XML->RTF ou XML->PDF [ par DeadEye0112 ] Bonjour,J'ai un problème avec les images et la transformation XSLT.Lors de la création d'un fichier (RTF ou PDF) à l'aide d'un XSLT, je réussis à mett transformation d'un polygone en une zone reactive [ par cann ] bonjour,debutant en c#, donc je reprend à partir de certaines bases (prog ne servant a rien mais m'apprenant le c#)je cherche à transformer le polygon les regles de transformation de xml en sql3 [ par amouna23 ] bon soir à tous, je veux travailler sur le mapping d'un schéma xml en un sql3mais je veux connaitre les étapes à suivre pour faire ça, et sur tous les [noob] WPF - quelques eclaircissements sur les transformations [ par NobrainNobrain59 ] Bonjour à tous, Je développe depuis quelques années en C++, et je bosse actuellement en c# sur le développement d'une application multitouch. ma fen transformation des patron UML vers B ou Z.... [ par rawiamokni ] salut, je cherche à des outils qui sienteresse sur la transformation des patrons UML vers la methode formelle (vers Z OU B), merci d'avance.[^^hap


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,326 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales