programme pour transformé de fourier discrète
Dernière réponse : dans Programmation
bonjour tout le monde !
Voilà je dois obtenir un programme qui me permettrait d'obtenir le spectre d'une courbe que j'acquière à l'aide d'un accéléromètre. Grâce au logiciel fourni avec l'accéléromètre, je peux obtenir un tableau de valeur (j'obtiens l'amplitude de l'accélération toutes le mms soit 30000 points pour 30s) et je voudrais à l'aide de ce tableau obtenir le spectre du signal.
Pouvez vous m'aider à le réaliser svp
soit avec visal c++
soit avec mathematica
PS : il existe bien une fonction sous mathematica mais j'obtiens vraiment des trucs bizarre
Voilà je dois obtenir un programme qui me permettrait d'obtenir le spectre d'une courbe que j'acquière à l'aide d'un accéléromètre. Grâce au logiciel fourni avec l'accéléromètre, je peux obtenir un tableau de valeur (j'obtiens l'amplitude de l'accélération toutes le mms soit 30000 points pour 30s) et je voudrais à l'aide de ce tableau obtenir le spectre du signal.
Pouvez vous m'aider à le réaliser svp
soit avec visal c++
soit avec mathematica
PS : il existe bien une fonction sous mathematica mais j'obtiens vraiment des trucs bizarre
Autres pages sur : programme transforme fourier discrete
Lassé par la pub ? Créez un compte
Non, je disais n'importe quoi. Cette symétrie est normale puisque la transformée de Fourier du sinus est représentée par 2 pic de Dirac, donc c'est normal.
Ton abscisse va de 0 à 200, c'est l'échantillonnage.
Comme sin(an)=(e^(i.a.n) - e^(-i.a.n)) / 2i, et que ta transformée de Fourier sont des coefficients fréquentiels de e^(i.la suite), c'est normal que tu as 2 valeurs, il faut voir ça dans le plan complexe et pas le plan réel.
Ton abscisse va de 0 à 200, c'est l'échantillonnage.
Comme sin(an)=(e^(i.a.n) - e^(-i.a.n)) / 2i, et que ta transformée de Fourier sont des coefficients fréquentiels de e^(i.la suite), c'est normal que tu as 2 valeurs, il faut voir ça dans le plan complexe et pas le plan réel.
qu'est ce que tu veux dire par
car ce qui est étrange également c'est que "mon spectre" s'étend en abscisse de 0 au nombre de valeurs de valeurs dans mon tableau ...(que ce soit pour le tableau à partir du sinus ou des résultats expérimentaux)
Citation :
Tu peux te contenter de ne prendre que la moitié [0, Pi] au lieu de [0, 2Pi] car ce qui est étrange également c'est que "mon spectre" s'étend en abscisse de 0 au nombre de valeurs de valeurs dans mon tableau ...(que ce soit pour le tableau à partir du sinus ou des résultats expérimentaux)
oui c'est normal pour le calcul des coefficients se fait de 0 à n, où n est le nombre d'échantillon (200). Ton spectre n'est donc que dans tes 200 valeurs, ça te retourne tous les coeff de la série de Fourier.
pour chaque valeur, c'est le coefficient multiplié par la fonction exponentielle complexe, la somme de toutes ces fonctions donne le signal initial. Ici, tu as une soustraction de 2 exponentielles qui donne un sinus.
Tu peux reporter tes valeurs de [0, 200] sur [-Pi, Pi]
pour chaque valeur, c'est le coefficient multiplié par la fonction exponentielle complexe, la somme de toutes ces fonctions donne le signal initial. Ici, tu as une soustraction de 2 exponentielles qui donne un sinus.
Tu peux reporter tes valeurs de [0, 200] sur [-Pi, Pi]
Salut tout ça
On est le 4 Avril, il est 6h43 et j'ai jusqu'à 15h pour faire marcher mon programme de fft en C/C++.
Toute aide est la bienvenue d'autant que j'ai commencé ce projet dans l'esprit gérer des cartes d'acquisition.
Une sorte d'échange de bons procédés, que même si personne ne m'aide, je mettrai un lien au plus tard à 15h02 vers mon code source.
En attendant, voici la version qui donne :
[Etienne@boiboite FFT]$ g++ essai.cpp
essai.cpp: In function ‘long int inverse(int, int)’:
essai.cpp:58: attention : converting to ‘int’ from ‘double’
essai.cpp:59: attention : converting to ‘int’ from ‘double’
essai.cpp: In function ‘int main()’:
essai.cpp:74: attention : converting to ‘int’ from ‘double’
[Etienne@boiboite FFT]$ ./a.out
Erreur de segmentation
code source :
http://rafb.net/p/6nKL9g87.html
Au fait le converting to ‘int’ from ‘double’ c'est pas grave.
Merci d'avance.
On est le 4 Avril, il est 6h43 et j'ai jusqu'à 15h pour faire marcher mon programme de fft en C/C++.
Toute aide est la bienvenue d'autant que j'ai commencé ce projet dans l'esprit gérer des cartes d'acquisition.
Une sorte d'échange de bons procédés, que même si personne ne m'aide, je mettrai un lien au plus tard à 15h02 vers mon code source.
En attendant, voici la version qui donne :
[Etienne@boiboite FFT]$ g++ essai.cpp
essai.cpp: In function ‘long int inverse(int, int)’:
essai.cpp:58: attention : converting to ‘int’ from ‘double’
essai.cpp:59: attention : converting to ‘int’ from ‘double’
essai.cpp: In function ‘int main()’:
essai.cpp:74: attention : converting to ‘int’ from ‘double’
[Etienne@boiboite FFT]$ ./a.out
Erreur de segmentation
code source :
http://rafb.net/p/6nKL9g87.html
Au fait le converting to ‘int’ from ‘double’ c'est pas grave.
Merci d'avance.
Lassé par la pub ? Créez un compte
- Contenus similaires :
- Forumprogramme gratuit pour transformer divx en dvd
- Forumprogrammation VHDL : transformation espace couleur image
- Forum[Résolu] Repérer le programme qui transforme ma station en zombie
- ForumRaccourcis transformés en fichiers .lnk et je narrrive pas à lancer mes programm
- ForumUn programme pour transformer des mp3 en CD Track
- Forumquel est le meilleur programme pour transformer les dvd en vcd.