Tfd en java...

Fermé
mnr - 29 mars 2005 à 16:19
 mnr - 29 mars 2005 à 16:56
bonjour...

je travaille en java sur le traitement du signal. J'ai un problème dans l'implantation de la Transformée de Fourier. C'est que le code ne donne pas des résultats désirés... voici la méthodes:

public CSignal TFourier(){

Signal r = new Signal(other, taille, duree, pas),
im = new Signal(other, taille, duree, pas);
double f1, f2, t;

CSignal cs1 = new CSignal(r, im);
for(int i=0; i<taille; i++){

f1 = 0; f2 = 0;
for(int j=0; j<taille; j++){

t = (2*Math.PI*i*j/taille);
f1 += valeurs[j]*Math.cos(t);
f2 -= valeurs[j]*Math.sin(t);
}
cs1.r.valeurs[i] = (float)f1;
cs1.r.temps[i] = i*cs1.r.pas;

cs1.i.valeurs[i] = (float)f2;
cs1.i.temps[i] = i*cs1.i.pas;
}
return cs1;
}

EXPLICATION: CSignal est une class pour les signaux complexes. Un signal complexe est une composition de deux signaux "re" et "im"...

voilà... je serai content si quelqu'un puisse m'aider ou m'orienter... à+
A voir également:

1 réponse

choubaka Messages postés 39376 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 29 avril 2024 2 101
29 mars 2005 à 16:47
salut

et c'est quoi le problème exactement ?
0
bonjour...

merci choubaka...

le problème est dans les résultats. Par exemple je n'obtiens pas pour une porte le sinusCardinal, ni pour un sinusCardinal une porte et même avec d'autres exemples...

je ne sais pas si java permet de manipuler directement des complexes. j'ai peur que ce soit une perte de précision en faisant le sinus et le cosinus au lieu de l'exponentiel:
si (sin x) est approché et aussi (cos x), alors est ce que (sin x) * (sin x) + (cos x) * (cos x) = 1?

voilà, je ne sais pas si vous voyez le problème... en tous cas merci bien de votre aide, c'est gentil....
0